diff options
2090 files changed, 30102 insertions, 29018 deletions
diff --git a/plugins/LinuxVST/src/ADClip7/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/ADClip7/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/ADClip7/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/ADClip7/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/ADClip7/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..41b2402 --- /dev/null +++ b/plugins/LinuxVST/src/ADClip7/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/ADClip7/ADClip7.cpp b/plugins/LinuxVST/src/ADClip7/ADClip7.cpp index fb6d6c6..7ebc817 100755 --- a/plugins/LinuxVST/src/ADClip7/ADClip7.cpp +++ b/plugins/LinuxVST/src/ADClip7/ADClip7.cpp @@ -30,11 +30,8 @@ ADClip7::ADClip7(audioMasterCallback audioMaster) : iirLowsBL = 0.0; iirLowsBR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/ADClip7/ADClip7.h b/plugins/LinuxVST/src/ADClip7/ADClip7.h index f20d3fb..f0cde6c 100755 --- a/plugins/LinuxVST/src/ADClip7/ADClip7.h +++ b/plugins/LinuxVST/src/ADClip7/ADClip7.h @@ -55,11 +55,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff long double lastSampleL; long double lastSampleR; diff --git a/plugins/LinuxVST/src/ADClip7/ADClip7Proc.cpp b/plugins/LinuxVST/src/ADClip7/ADClip7Proc.cpp index 2705d61..abc9909 100755 --- a/plugins/LinuxVST/src/ADClip7/ADClip7Proc.cpp +++ b/plugins/LinuxVST/src/ADClip7/ADClip7Proc.cpp @@ -17,10 +17,8 @@ void ADClip7::processReplacing(float **inputs, float **outputs, VstInt32 sampleF double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + long double fpNew = 1.0 - fpOld; double inputGain = pow(10.0,(A*18.0)/20.0); double softness = B * fpNew; double hardness = 1.0 - softness; @@ -449,25 +447,14 @@ void ADClip7::processReplacing(float **inputs, float **outputs, VstInt32 sampleF if (inputSampleR < -refclipR) inputSampleR = -refclipR; //final iron bar - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -489,10 +476,8 @@ void ADClip7::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + long double fpNew = 1.0 - fpOld; double inputGain = pow(10.0,(A*18.0)/20.0); double softness = B * fpNew; double hardness = 1.0 - softness; @@ -922,25 +907,16 @@ void ADClip7::processDoubleReplacing(double **inputs, double **outputs, VstInt32 if (inputSampleR < -refclipR) inputSampleR = -refclipR; //final iron bar - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/ADT/ADTProc.cpp b/plugins/LinuxVST/src/ADT/ADTProc.cpp index f963f2f..74d23dd 100755 --- a/plugins/LinuxVST/src/ADT/ADTProc.cpp +++ b/plugins/LinuxVST/src/ADT/ADTProc.cpp @@ -156,18 +156,14 @@ void ADT::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame if (output < 1.0) {inputSampleL *= output; inputSampleR *= output;} - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -177,12 +173,6 @@ void ADT::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void ADT::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -334,18 +324,16 @@ void ADT::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam if (output < 1.0) {inputSampleL *= output; inputSampleR *= output;} - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -355,10 +343,4 @@ void ADT::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/LinuxVST/src/AQuickVoiceClip/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/AQuickVoiceClip/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/AQuickVoiceClip/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/AQuickVoiceClip/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/AQuickVoiceClip/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..42a754f --- /dev/null +++ b/plugins/LinuxVST/src/AQuickVoiceClip/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClip.cpp b/plugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClip.cpp index 9b5ea81..9b84221 100755 --- a/plugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClip.cpp +++ b/plugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClip.cpp @@ -57,11 +57,8 @@ AQuickVoiceClip::AQuickVoiceClip(audioMasterCallback audioMaster) : ataK4 = 0.886; //remainder of interpolated dry, adds up to 1.0 ataK5 = 0.431; //subtract this much prev. diff sample, brightens. 0.431 becomes flat - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClip.h b/plugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClip.h index dc8f5fa..40cfab2 100755 --- a/plugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClip.h +++ b/plugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClip.h @@ -115,11 +115,8 @@ private: double RiirSampleD; bool flip; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClipProc.cpp b/plugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClipProc.cpp index 69dc283..cc282b6 100755 --- a/plugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClipProc.cpp +++ b/plugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClipProc.cpp @@ -41,9 +41,6 @@ void AQuickVoiceClip::processReplacing(float **inputs, float **outputs, VstInt32 double RoutputSample; double RdrySample; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -410,25 +407,14 @@ void AQuickVoiceClip::processReplacing(float **inputs, float **outputs, VstInt32 if (LlpDepth < 0.0) LlpDepth = 0.0; if (RlpDepth < 0.0) RlpDepth = 0.0; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither inputSampleL *= (1.0-LmaxRecent); inputSampleR *= (1.0-RmaxRecent); @@ -487,9 +473,6 @@ void AQuickVoiceClip::processDoubleReplacing(double **inputs, double **outputs, double RoutputSample; double RdrySample; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -856,25 +839,16 @@ void AQuickVoiceClip::processDoubleReplacing(double **inputs, double **outputs, if (LlpDepth < 0.0) LlpDepth = 0.0; if (RlpDepth < 0.0) RlpDepth = 0.0; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither inputSampleL *= (1.0-LmaxRecent); inputSampleR *= (1.0-RmaxRecent); diff --git a/plugins/LinuxVST/src/Acceleration/Acceleration.cpp b/plugins/LinuxVST/src/Acceleration/Acceleration.cpp index f20c8f2..b2721d9 100644..100755 --- a/plugins/LinuxVST/src/Acceleration/Acceleration.cpp +++ b/plugins/LinuxVST/src/Acceleration/Acceleration.cpp @@ -23,11 +23,8 @@ Acceleration::Acceleration(audioMasterCallback audioMaster) : o1R = o2R = o3R = 0.0; m1R = m2R = desR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Acceleration/Acceleration.h b/plugins/LinuxVST/src/Acceleration/Acceleration.h index a152e25..02a3760 100644..100755 --- a/plugins/LinuxVST/src/Acceleration/Acceleration.h +++ b/plugins/LinuxVST/src/Acceleration/Acceleration.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double ataLastOutL; double s1L; diff --git a/plugins/LinuxVST/src/Acceleration/AccelerationProc.cpp b/plugins/LinuxVST/src/Acceleration/AccelerationProc.cpp index 4785e37..0151dbe 100644..100755 --- a/plugins/LinuxVST/src/Acceleration/AccelerationProc.cpp +++ b/plugins/LinuxVST/src/Acceleration/AccelerationProc.cpp @@ -17,9 +17,6 @@ void Acceleration::processReplacing(float **inputs, float **outputs, VstInt32 sa double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double intensity = pow(A,3)*(32/overallscale); double wet = B; @@ -135,25 +132,14 @@ void Acceleration::processReplacing(float **inputs, float **outputs, VstInt32 sa inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -175,9 +161,6 @@ void Acceleration::processDoubleReplacing(double **inputs, double **outputs, Vst double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double intensity = pow(A,3)*(32/overallscale); double wet = B; @@ -293,25 +276,16 @@ void Acceleration::processDoubleReplacing(double **inputs, double **outputs, Vst inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Air/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Air/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Air/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Air/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Air/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..5e12ea1 --- /dev/null +++ b/plugins/LinuxVST/src/Air/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Air/Air.cpp b/plugins/LinuxVST/src/Air/Air.cpp index ebe8adc..ea52c26 100755 --- a/plugins/LinuxVST/src/Air/Air.cpp +++ b/plugins/LinuxVST/src/Air/Air.cpp @@ -61,11 +61,8 @@ Air::Air(audioMasterCallback audioMaster) : D = 0.0; E = 1.0; F = 1.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Air/Air.h b/plugins/LinuxVST/src/Air/Air.h index 00c0b76..a713cf2 100755 --- a/plugins/LinuxVST/src/Air/Air.h +++ b/plugins/LinuxVST/src/Air/Air.h @@ -100,11 +100,8 @@ private: bool flop; int count; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/Air/AirProc.cpp b/plugins/LinuxVST/src/Air/AirProc.cpp index f73e7d8..f5eb39f 100755 --- a/plugins/LinuxVST/src/Air/AirProc.cpp +++ b/plugins/LinuxVST/src/Air/AirProc.cpp @@ -22,9 +22,6 @@ void Air::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame double wet = F; double dry = 1.0-wet; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -260,25 +257,14 @@ void Air::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -305,9 +291,6 @@ void Air::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam double wet = F; double dry = 1.0-wet; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -543,25 +526,16 @@ void Air::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/AtmosphereBuss/AtmosphereBussProc.cpp b/plugins/LinuxVST/src/AtmosphereBuss/AtmosphereBussProc.cpp index 6530a7e..16d7a31 100755 --- a/plugins/LinuxVST/src/AtmosphereBuss/AtmosphereBussProc.cpp +++ b/plugins/LinuxVST/src/AtmosphereBuss/AtmosphereBussProc.cpp @@ -13,7 +13,6 @@ void AtmosphereBuss::processReplacing(float **inputs, float **outputs, VstInt32 float* in2 = inputs[1]; float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); @@ -250,18 +249,14 @@ void AtmosphereBuss::processReplacing(float **inputs, float **outputs, VstInt32 lastSampleAR = drySampleR; //store the raw R input sample again for use next time - //noise shaping to 32-bit floating point - fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -271,12 +266,6 @@ void AtmosphereBuss::processReplacing(float **inputs, float **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void AtmosphereBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -285,7 +274,6 @@ void AtmosphereBuss::processDoubleReplacing(double **inputs, double **outputs, V double* in2 = inputs[1]; double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); @@ -522,18 +510,16 @@ void AtmosphereBuss::processDoubleReplacing(double **inputs, double **outputs, V lastSampleAR = drySampleR; //store the raw R input sample again for use next time - //noise shaping to 64-bit floating point - fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -543,10 +529,4 @@ void AtmosphereBuss::processDoubleReplacing(double **inputs, double **outputs, V *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. }
\ No newline at end of file diff --git a/plugins/LinuxVST/src/AtmosphereChannel/AtmosphereChannelProc.cpp b/plugins/LinuxVST/src/AtmosphereChannel/AtmosphereChannelProc.cpp index 97038e8..bbdf44c 100755 --- a/plugins/LinuxVST/src/AtmosphereChannel/AtmosphereChannelProc.cpp +++ b/plugins/LinuxVST/src/AtmosphereChannel/AtmosphereChannelProc.cpp @@ -13,7 +13,6 @@ void AtmosphereChannel::processReplacing(float **inputs, float **outputs, VstInt float* in2 = inputs[1]; float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); @@ -245,18 +244,14 @@ void AtmosphereChannel::processReplacing(float **inputs, float **outputs, VstInt lastSampleAR = drySampleR; //store the raw R input sample again for use next time - //noise shaping to 32-bit floating point - fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -266,12 +261,6 @@ void AtmosphereChannel::processReplacing(float **inputs, float **outputs, VstInt *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void AtmosphereChannel::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -280,7 +269,6 @@ void AtmosphereChannel::processDoubleReplacing(double **inputs, double **outputs double* in2 = inputs[1]; double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); @@ -512,18 +500,16 @@ void AtmosphereChannel::processDoubleReplacing(double **inputs, double **outputs lastSampleAR = drySampleR; //store the raw R input sample again for use next time - //noise shaping to 64-bit floating point - fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -533,10 +519,4 @@ void AtmosphereChannel::processDoubleReplacing(double **inputs, double **outputs *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. }
\ No newline at end of file diff --git a/plugins/LinuxVST/src/Aura/Aura.cpp b/plugins/LinuxVST/src/Aura/Aura.cpp index d011564..8663d3b 100755 --- a/plugins/LinuxVST/src/Aura/Aura.cpp +++ b/plugins/LinuxVST/src/Aura/Aura.cpp @@ -24,11 +24,8 @@ Aura::Aura(audioMasterCallback audioMaster) : lastSampleR = 0.0; previousVelocityR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Aura/Aura.h b/plugins/LinuxVST/src/Aura/Aura.h index 557169d..22d4653 100755 --- a/plugins/LinuxVST/src/Aura/Aura.h +++ b/plugins/LinuxVST/src/Aura/Aura.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff long double lastSampleL; double previousVelocityL; diff --git a/plugins/LinuxVST/src/Aura/AuraProc.cpp b/plugins/LinuxVST/src/Aura/AuraProc.cpp index daf54d6..089a873 100755 --- a/plugins/LinuxVST/src/Aura/AuraProc.cpp +++ b/plugins/LinuxVST/src/Aura/AuraProc.cpp @@ -14,9 +14,6 @@ void Aura::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double correctionL; double correctionR; @@ -211,25 +208,14 @@ void Aura::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -248,9 +234,6 @@ void Aura::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double correctionL; double correctionR; @@ -445,25 +428,16 @@ void Aura::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Average/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Average/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Average/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Average/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Average/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..24b500e --- /dev/null +++ b/plugins/LinuxVST/src/Average/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Average/Average.cpp b/plugins/LinuxVST/src/Average/Average.cpp index 945c76c..2f39ca1 100755 --- a/plugins/LinuxVST/src/Average/Average.cpp +++ b/plugins/LinuxVST/src/Average/Average.cpp @@ -17,11 +17,8 @@ Average::Average(audioMasterCallback audioMaster) : for(int count = 0; count < 11; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;} - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Average/Average.h b/plugins/LinuxVST/src/Average/Average.h index 7e4b25e..9932e99 100755 --- a/plugins/LinuxVST/src/Average/Average.h +++ b/plugins/LinuxVST/src/Average/Average.h @@ -57,11 +57,8 @@ private: double f[11]; double bR[11]; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/Average/AverageProc.cpp b/plugins/LinuxVST/src/Average/AverageProc.cpp index 2b1c355..17f4783 100755 --- a/plugins/LinuxVST/src/Average/AverageProc.cpp +++ b/plugins/LinuxVST/src/Average/AverageProc.cpp @@ -14,9 +14,6 @@ void Average::processReplacing(float **inputs, float **outputs, VstInt32 sampleF float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double correctionSample; double accumulatorSampleL; @@ -154,25 +151,14 @@ void Average::processReplacing(float **inputs, float **outputs, VstInt32 sampleF //in the floating point system. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -189,12 +175,7 @@ void Average::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double* in1 = inputs[0]; double* in2 = inputs[1]; double* out1 = outputs[0]; - double* out2 = outputs[1]; - - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + double* out2 = outputs[1]; double correctionSample; double accumulatorSampleL; double accumulatorSampleR; @@ -330,25 +311,16 @@ void Average::processDoubleReplacing(double **inputs, double **outputs, VstInt32 //if it 'won't change anything' but our sample might be at a very different scaling //in the floating point system. - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/BassKit/BassKitProc.cpp b/plugins/LinuxVST/src/BassKit/BassKitProc.cpp index df3310e..9199c82 100755 --- a/plugins/LinuxVST/src/BassKit/BassKitProc.cpp +++ b/plugins/LinuxVST/src/BassKit/BassKitProc.cpp @@ -204,18 +204,14 @@ void BassKit::processReplacing(float **inputs, float **outputs, VstInt32 sampleF bflip++; if (bflip < 1 || bflip > 3) bflip = 1; - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -225,12 +221,6 @@ void BassKit::processReplacing(float **inputs, float **outputs, VstInt32 sampleF *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void BassKit::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -430,18 +420,16 @@ void BassKit::processDoubleReplacing(double **inputs, double **outputs, VstInt32 bflip++; if (bflip < 1 || bflip > 3) bflip = 1; - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -451,10 +439,4 @@ void BassKit::processDoubleReplacing(double **inputs, double **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/LinuxVST/src/BitGlitter/BitGlitter.cpp b/plugins/LinuxVST/src/BitGlitter/BitGlitter.cpp index 7e9cfdb..a1e1a9b 100755 --- a/plugins/LinuxVST/src/BitGlitter/BitGlitter.cpp +++ b/plugins/LinuxVST/src/BitGlitter/BitGlitter.cpp @@ -17,6 +17,9 @@ BitGlitter::BitGlitter(audioMasterCallback audioMaster) : C = 0.5; D = 1.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + ataLastSampleL = 0.0; ataHalfwaySampleL = 0.0; lastSampleL = 0.0; diff --git a/plugins/LinuxVST/src/BitGlitter/BitGlitter.h b/plugins/LinuxVST/src/BitGlitter/BitGlitter.h index d87e277..4f108cd 100755 --- a/plugins/LinuxVST/src/BitGlitter/BitGlitter.h +++ b/plugins/LinuxVST/src/BitGlitter/BitGlitter.h @@ -55,6 +55,9 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; + long double fpNShapeL; + long double fpNShapeR; + double ataLastSampleL; double ataHalfwaySampleL; double ataDrySampleL; diff --git a/plugins/LinuxVST/src/BitGlitter/BitGlitterProc.cpp b/plugins/LinuxVST/src/BitGlitter/BitGlitterProc.cpp index 321d0b6..ff2968c 100755 --- a/plugins/LinuxVST/src/BitGlitter/BitGlitterProc.cpp +++ b/plugins/LinuxVST/src/BitGlitter/BitGlitterProc.cpp @@ -202,6 +202,14 @@ void BitGlitter::processReplacing(float **inputs, float **outputs, VstInt32 samp outputSampleL = (drySampleL * (1.0-wet)) + (outputSampleL * wet); outputSampleR = (drySampleR * (1.0-wet)) + (outputSampleR * wet); } + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)outputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + outputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)outputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + outputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = outputSampleL; *out2 = outputSampleR; @@ -408,6 +416,17 @@ void BitGlitter::processDoubleReplacing(double **inputs, double **outputs, VstIn outputSampleR = (drySampleR * (1.0-wet)) + (outputSampleR * wet); } + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)outputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + outputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)outputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + outputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither + *out1 = outputSampleL; *out2 = outputSampleR; diff --git a/plugins/LinuxVST/src/Bite/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Bite/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Bite/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Bite/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Bite/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..a8fee43 --- /dev/null +++ b/plugins/LinuxVST/src/Bite/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Bite/Bite.cpp b/plugins/LinuxVST/src/Bite/Bite.cpp index b563f54..c9d0fcb 100755 --- a/plugins/LinuxVST/src/Bite/Bite.cpp +++ b/plugins/LinuxVST/src/Bite/Bite.cpp @@ -34,11 +34,8 @@ Bite::Bite(audioMasterCallback audioMaster) : sampleHR = 0.0; sampleIR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Bite/Bite.h b/plugins/LinuxVST/src/Bite/Bite.h index d6f9e44..288ac7f 100755 --- a/plugins/LinuxVST/src/Bite/Bite.h +++ b/plugins/LinuxVST/src/Bite/Bite.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double sampleAL; double sampleBL; diff --git a/plugins/LinuxVST/src/Bite/BiteProc.cpp b/plugins/LinuxVST/src/Bite/BiteProc.cpp index 690a998..64e0ac4 100755 --- a/plugins/LinuxVST/src/Bite/BiteProc.cpp +++ b/plugins/LinuxVST/src/Bite/BiteProc.cpp @@ -17,9 +17,6 @@ void Bite::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram double overallscale = 1.3; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double gain = ((A*2.0)-1.0)*overallscale; double outputgain = B; @@ -119,25 +116,14 @@ void Bite::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram inputSampleR *= outputgain; } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -159,9 +145,6 @@ void Bite::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa double overallscale = 1.3; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double gain = ((A*2.0)-1.0)*overallscale; double outputgain = B; @@ -261,25 +244,16 @@ void Bite::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa inputSampleR *= outputgain; } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/BussColors4/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/BussColors4/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/BussColors4/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/BussColors4/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/BussColors4/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..8ad21ec --- /dev/null +++ b/plugins/LinuxVST/src/BussColors4/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/BussColors4/BussColors4.cpp b/plugins/LinuxVST/src/BussColors4/BussColors4.cpp index 720dbf9..c7de380 100755 --- a/plugins/LinuxVST/src/BussColors4/BussColors4.cpp +++ b/plugins/LinuxVST/src/BussColors4/BussColors4.cpp @@ -44,11 +44,8 @@ BussColors4::BussColors4(audioMasterCallback audioMaster) : slowdynR = 0; gcount = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. @@ -114,21 +111,6 @@ void BussColors4::setParameter(VstInt32 index, float value) { case kParamD: D = value; break; //this is the popup, stored as a float default: throw; // unknown parameter, shouldn't happen! } - //we can also set other defaults here, and do calculations that only have to happen - //once when parameters actually change. Here is the 'popup' setting its (global) values. - //variables can also be set in the processreplacing loop, and there they'll be set every buffersize - //here they're set when a parameter's actually changed, which should be less frequent, but - //you must use global variables in the BussColors4.h file to do it. - switch((VstInt32)( D * 3.999 )) - { - case 0: fpFlip = true; break; //choice A - case 1: fpFlip = false; break; //choice B - case 2: break; //choice C - case 3: break; //choice D - default: break; //should not happen - } - //this relates to using D as a 'popup' and changing things based on that switch. - //we are using fpFlip just because it's already there globally, as an example. } float BussColors4::getParameter(VstInt32 index) { diff --git a/plugins/LinuxVST/src/BussColors4/BussColors4.h b/plugins/LinuxVST/src/BussColors4/BussColors4.h index d07460e..6452555 100755 --- a/plugins/LinuxVST/src/BussColors4/BussColors4.h +++ b/plugins/LinuxVST/src/BussColors4/BussColors4.h @@ -68,11 +68,8 @@ private: double slowdynR; int gcount; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/BussColors4/BussColors4Proc.cpp b/plugins/LinuxVST/src/BussColors4/BussColors4Proc.cpp index 2629ee8..b1b9451 100755 --- a/plugins/LinuxVST/src/BussColors4/BussColors4Proc.cpp +++ b/plugins/LinuxVST/src/BussColors4/BussColors4Proc.cpp @@ -31,9 +31,6 @@ void BussColors4::processReplacing(float **inputs, float **outputs, VstInt32 sam double gain = 0.436; double outgain = 1.0; double bridgerectifier; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -795,25 +792,14 @@ void BussColors4::processReplacing(float **inputs, float **outputs, VstInt32 sam inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -849,9 +835,6 @@ void BussColors4::processDoubleReplacing(double **inputs, double **outputs, VstI double gain = 0.436; double outgain = 1.0; double bridgerectifier; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -1613,25 +1596,16 @@ void BussColors4::processDoubleReplacing(double **inputs, double **outputs, VstI inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/ButterComp/ButterComp.cpp b/plugins/LinuxVST/src/ButterComp/ButterComp.cpp index e6a33f7..b3123e2 100755 --- a/plugins/LinuxVST/src/ButterComp/ButterComp.cpp +++ b/plugins/LinuxVST/src/ButterComp/ButterComp.cpp @@ -26,11 +26,8 @@ ButterComp::ButterComp(audioMasterCallback audioMaster) : controlBnegR = 1.0; targetposR = 1.0; targetnegR = 1.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/ButterComp/ButterComp.h b/plugins/LinuxVST/src/ButterComp/ButterComp.h index af6df66..5c9862b 100755 --- a/plugins/LinuxVST/src/ButterComp/ButterComp.h +++ b/plugins/LinuxVST/src/ButterComp/ButterComp.h @@ -65,11 +65,8 @@ private: double controlBnegR; double targetposR; double targetnegR; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/ButterComp/ButterCompProc.cpp b/plugins/LinuxVST/src/ButterComp/ButterCompProc.cpp index ea52946..d87030c 100755 --- a/plugins/LinuxVST/src/ButterComp/ButterCompProc.cpp +++ b/plugins/LinuxVST/src/ButterComp/ButterCompProc.cpp @@ -17,9 +17,6 @@ void ButterComp::processReplacing(float **inputs, float **outputs, VstInt32 samp double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputposL; double inputnegL; @@ -181,25 +178,14 @@ void ButterComp::processReplacing(float **inputs, float **outputs, VstInt32 samp inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -221,9 +207,6 @@ void ButterComp::processDoubleReplacing(double **inputs, double **outputs, VstIn double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputposL; double inputnegL; @@ -385,25 +368,16 @@ void ButterComp::processDoubleReplacing(double **inputs, double **outputs, VstIn inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/ButterComp2/ButterComp2Proc.cpp b/plugins/LinuxVST/src/ButterComp2/ButterComp2Proc.cpp index 55ce488..67a6367 100755 --- a/plugins/LinuxVST/src/ButterComp2/ButterComp2Proc.cpp +++ b/plugins/LinuxVST/src/ButterComp2/ButterComp2Proc.cpp @@ -223,18 +223,14 @@ void ButterComp2::processReplacing(float **inputs, float **outputs, VstInt32 sam flip = !flip; - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -244,12 +240,6 @@ void ButterComp2::processReplacing(float **inputs, float **outputs, VstInt32 sam *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void ButterComp2::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -468,18 +458,16 @@ void ButterComp2::processDoubleReplacing(double **inputs, double **outputs, VstI flip = !flip; - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -489,10 +477,4 @@ void ButterComp2::processDoubleReplacing(double **inputs, double **outputs, VstI *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/LinuxVST/src/C5RawBuss/C5RawBuss.cpp b/plugins/LinuxVST/src/C5RawBuss/C5RawBuss.cpp index 14b4dc5..8fba0ef 100755 --- a/plugins/LinuxVST/src/C5RawBuss/C5RawBuss.cpp +++ b/plugins/LinuxVST/src/C5RawBuss/C5RawBuss.cpp @@ -17,11 +17,8 @@ C5RawBuss::C5RawBuss(audioMasterCallback audioMaster) : lastSampleBussL = 0.0; lastFXBussR = 0.0; lastSampleBussR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/C5RawBuss/C5RawBuss.h b/plugins/LinuxVST/src/C5RawBuss/C5RawBuss.h index 5a409bc..f4d01fe 100755 --- a/plugins/LinuxVST/src/C5RawBuss/C5RawBuss.h +++ b/plugins/LinuxVST/src/C5RawBuss/C5RawBuss.h @@ -52,11 +52,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double lastFXBussL; double lastSampleBussL; diff --git a/plugins/LinuxVST/src/C5RawBuss/C5RawBussProc.cpp b/plugins/LinuxVST/src/C5RawBuss/C5RawBussProc.cpp index 1bf5eec..fab4612 100755 --- a/plugins/LinuxVST/src/C5RawBuss/C5RawBussProc.cpp +++ b/plugins/LinuxVST/src/C5RawBuss/C5RawBussProc.cpp @@ -14,9 +14,6 @@ void C5RawBuss::processReplacing(float **inputs, float **outputs, VstInt32 sampl float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double centering = A * 0.5; centering = 1.0 - pow(centering,5); @@ -111,25 +108,14 @@ void C5RawBuss::processReplacing(float **inputs, float **outputs, VstInt32 sampl //build new signal off what was present in output last time //slew aspect - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -148,9 +134,6 @@ void C5RawBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double centering = A * 0.5; centering = 1.0 - pow(centering,5); @@ -245,25 +228,16 @@ void C5RawBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt //build new signal off what was present in output last time //slew aspect - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/C5RawChannel/C5RawChannel.cpp b/plugins/LinuxVST/src/C5RawChannel/C5RawChannel.cpp index b02a07d..ffc2ecf 100755 --- a/plugins/LinuxVST/src/C5RawChannel/C5RawChannel.cpp +++ b/plugins/LinuxVST/src/C5RawChannel/C5RawChannel.cpp @@ -17,11 +17,8 @@ C5RawChannel::C5RawChannel(audioMasterCallback audioMaster) : lastSampleChannelL = 0.0; lastFXChannelR = 0.0; lastSampleChannelR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/C5RawChannel/C5RawChannel.h b/plugins/LinuxVST/src/C5RawChannel/C5RawChannel.h index 2281961..3ce3e84 100755 --- a/plugins/LinuxVST/src/C5RawChannel/C5RawChannel.h +++ b/plugins/LinuxVST/src/C5RawChannel/C5RawChannel.h @@ -52,11 +52,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double lastFXChannelL; double lastSampleChannelL; diff --git a/plugins/LinuxVST/src/C5RawChannel/C5RawChannelProc.cpp b/plugins/LinuxVST/src/C5RawChannel/C5RawChannelProc.cpp index 41f949e..b2679ff 100755 --- a/plugins/LinuxVST/src/C5RawChannel/C5RawChannelProc.cpp +++ b/plugins/LinuxVST/src/C5RawChannel/C5RawChannelProc.cpp @@ -14,9 +14,6 @@ void C5RawChannel::processReplacing(float **inputs, float **outputs, VstInt32 sa float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double centering = A * 0.5; centering = 1.0 - pow(centering,5); @@ -110,25 +107,14 @@ void C5RawChannel::processReplacing(float **inputs, float **outputs, VstInt32 sa inputSampleR = sin(inputSampleR); //amplitude aspect - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -147,9 +133,6 @@ void C5RawChannel::processDoubleReplacing(double **inputs, double **outputs, Vst double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double centering = A * 0.5; centering = 1.0 - pow(centering,5); @@ -243,25 +226,16 @@ void C5RawChannel::processDoubleReplacing(double **inputs, double **outputs, Vst inputSampleR = sin(inputSampleR); //amplitude aspect - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/CStrip/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/CStrip/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/CStrip/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/CStrip/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/CStrip/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..36fe57d --- /dev/null +++ b/plugins/LinuxVST/src/CStrip/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/CStrip/CStrip.cpp b/plugins/LinuxVST/src/CStrip/CStrip.cpp index 1c24d1b..2049ab8 100755 --- a/plugins/LinuxVST/src/CStrip/CStrip.cpp +++ b/plugins/LinuxVST/src/CStrip/CStrip.cpp @@ -153,11 +153,8 @@ CStrip::CStrip(audioMasterCallback audioMaster) : nvgRA = nvgRB = 0.0; //end ButterComp - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/CStrip/CStrip.h b/plugins/LinuxVST/src/CStrip/CStrip.h index 10f6729..cc9f722 100755 --- a/plugins/LinuxVST/src/CStrip/CStrip.h +++ b/plugins/LinuxVST/src/CStrip/CStrip.h @@ -63,11 +63,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double lastSampleL; diff --git a/plugins/LinuxVST/src/CStrip/CStripProc.cpp b/plugins/LinuxVST/src/CStrip/CStripProc.cpp index 272b9b6..60ce59c 100755 --- a/plugins/LinuxVST/src/CStrip/CStripProc.cpp +++ b/plugins/LinuxVST/src/CStrip/CStripProc.cpp @@ -20,10 +20,8 @@ void CStrip::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr overallscale = getSampleRate(); compscale = compscale * overallscale; //compscale is the one that's 1 or something like 2.2 for 96K rates - float fpTemp; long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -728,25 +726,14 @@ void CStrip::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr inputSampleR *= outputgain; } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -771,10 +758,8 @@ void CStrip::processDoubleReplacing(double **inputs, double **outputs, VstInt32 overallscale = getSampleRate(); compscale = compscale * overallscale; //compscale is the one that's 1 or something like 2.2 for 96K rates - double fpTemp; long double fpOld = 0.618033988749894848204586; //golden ratio! long double fpNew = 1.0 - fpOld; - long double inputSampleL; long double inputSampleR; @@ -1479,25 +1464,16 @@ void CStrip::processDoubleReplacing(double **inputs, double **outputs, VstInt32 inputSampleR *= outputgain; } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Capacitor/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Capacitor/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Capacitor/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Capacitor/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Capacitor/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..28e146c --- /dev/null +++ b/plugins/LinuxVST/src/Capacitor/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Capacitor/Capacitor.cpp b/plugins/LinuxVST/src/Capacitor/Capacitor.cpp index 2a62df6..0ade9c9 100755 --- a/plugins/LinuxVST/src/Capacitor/Capacitor.cpp +++ b/plugins/LinuxVST/src/Capacitor/Capacitor.cpp @@ -51,11 +51,8 @@ Capacitor::Capacitor(audioMasterCallback audioMaster) : lastHighpass = 1000.0; lastWet = 1000.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Capacitor/Capacitor.h b/plugins/LinuxVST/src/Capacitor/Capacitor.h index d80c676..0799d39 100755 --- a/plugins/LinuxVST/src/Capacitor/Capacitor.h +++ b/plugins/LinuxVST/src/Capacitor/Capacitor.h @@ -94,11 +94,8 @@ private: double lastHighpass; double lastWet; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/Capacitor/CapacitorProc.cpp b/plugins/LinuxVST/src/Capacitor/CapacitorProc.cpp index 6accb0d..6b3582b 100755 --- a/plugins/LinuxVST/src/Capacitor/CapacitorProc.cpp +++ b/plugins/LinuxVST/src/Capacitor/CapacitorProc.cpp @@ -30,9 +30,6 @@ void Capacitor::processReplacing(float **inputs, float **outputs, VstInt32 sampl double invHighpass; double dry; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -182,25 +179,14 @@ void Capacitor::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleL = (drySampleL * dry) + (inputSampleL * wet); inputSampleR = (drySampleR * dry) + (inputSampleR * wet); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -235,9 +221,6 @@ void Capacitor::processDoubleReplacing(double **inputs, double **outputs, VstInt double invHighpass; double dry; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -387,25 +370,16 @@ void Capacitor::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleL = (drySampleL * dry) + (inputSampleL * wet); inputSampleR = (drySampleR * dry) + (inputSampleR * wet); - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Channel4/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Channel4/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Channel4/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Channel4/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Channel4/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..1a76777 --- /dev/null +++ b/plugins/LinuxVST/src/Channel4/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Channel6/Channel6Proc.cpp b/plugins/LinuxVST/src/Channel6/Channel6Proc.cpp index d206851..9f16b2a 100755 --- a/plugins/LinuxVST/src/Channel6/Channel6Proc.cpp +++ b/plugins/LinuxVST/src/Channel6/Channel6Proc.cpp @@ -121,18 +121,14 @@ void Channel6::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleR *= output; } - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -142,12 +138,6 @@ void Channel6::processReplacing(float **inputs, float **outputs, VstInt32 sample *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Channel6::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -264,18 +254,16 @@ void Channel6::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleR *= output; } - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -285,10 +273,4 @@ void Channel6::processDoubleReplacing(double **inputs, double **outputs, VstInt3 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/LinuxVST/src/Chorus/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Chorus/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Chorus/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Chorus/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Chorus/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..6891b3b --- /dev/null +++ b/plugins/LinuxVST/src/Chorus/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Chorus/Chorus.cpp b/plugins/LinuxVST/src/Chorus/Chorus.cpp index a0699ec..1f3965a 100755 --- a/plugins/LinuxVST/src/Chorus/Chorus.cpp +++ b/plugins/LinuxVST/src/Chorus/Chorus.cpp @@ -27,12 +27,9 @@ Chorus::Chorus(audioMasterCallback audioMaster) : airEvenR = 0.0; airOddR = 0.0; airFactorR = 0.0; - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Chorus/Chorus.h b/plugins/LinuxVST/src/Chorus/Chorus.h index fb2fb44..5508ac3 100755 --- a/plugins/LinuxVST/src/Chorus/Chorus.h +++ b/plugins/LinuxVST/src/Chorus/Chorus.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff const static int totalsamples = 16386; float dL[totalsamples]; @@ -73,6 +70,7 @@ private: double airEvenR; double airOddR; double airFactorR; + bool fpFlip; float A; float B; diff --git a/plugins/LinuxVST/src/Chorus/ChorusProc.cpp b/plugins/LinuxVST/src/Chorus/ChorusProc.cpp index aed2bc0..368ade7 100755 --- a/plugins/LinuxVST/src/Chorus/ChorusProc.cpp +++ b/plugins/LinuxVST/src/Chorus/ChorusProc.cpp @@ -30,9 +30,6 @@ void Chorus::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr double offset; //this is a double buffer so we will be splitting it in two - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -134,26 +131,16 @@ void Chorus::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr inputSampleL = (inputSampleL * wet) + (drySampleL * dry); inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -188,9 +175,6 @@ void Chorus::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double offset; //this is a double buffer so we will be splitting it in two - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -293,25 +277,17 @@ void Chorus::processDoubleReplacing(double **inputs, double **outputs, VstInt32 inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither fpFlip = !fpFlip; - //end noise shaping on 64 bit output *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/ChorusEnsemble/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/ChorusEnsemble/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/ChorusEnsemble/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/ChorusEnsemble/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/ChorusEnsemble/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..169e939 --- /dev/null +++ b/plugins/LinuxVST/src/ChorusEnsemble/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/ChorusEnsemble/ChorusEnsemble.cpp b/plugins/LinuxVST/src/ChorusEnsemble/ChorusEnsemble.cpp index b1012f9..318b678 100755 --- a/plugins/LinuxVST/src/ChorusEnsemble/ChorusEnsemble.cpp +++ b/plugins/LinuxVST/src/ChorusEnsemble/ChorusEnsemble.cpp @@ -27,12 +27,9 @@ ChorusEnsemble::ChorusEnsemble(audioMasterCallback audioMaster) : airEvenR = 0.0; airOddR = 0.0; airFactorR = 0.0; - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/ChorusEnsemble/ChorusEnsemble.h b/plugins/LinuxVST/src/ChorusEnsemble/ChorusEnsemble.h index bd442ab..e7df332 100755 --- a/plugins/LinuxVST/src/ChorusEnsemble/ChorusEnsemble.h +++ b/plugins/LinuxVST/src/ChorusEnsemble/ChorusEnsemble.h @@ -67,12 +67,9 @@ private: double airEvenR; double airOddR; double airFactorR; - - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/ChorusEnsemble/ChorusEnsembleProc.cpp b/plugins/LinuxVST/src/ChorusEnsemble/ChorusEnsembleProc.cpp index 2a783dd..1663244 100755 --- a/plugins/LinuxVST/src/ChorusEnsemble/ChorusEnsembleProc.cpp +++ b/plugins/LinuxVST/src/ChorusEnsemble/ChorusEnsembleProc.cpp @@ -17,9 +17,6 @@ void ChorusEnsemble::processReplacing(float **inputs, float **outputs, VstInt32 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double speed = pow(A,3) * 0.001; speed *= overallscale; @@ -174,27 +171,17 @@ void ChorusEnsemble::processReplacing(float **inputs, float **outputs, VstInt32 inputSampleL = (inputSampleL * wet) + (drySampleL * dry); inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } + fpFlip = !fpFlip; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -216,9 +203,6 @@ void ChorusEnsemble::processDoubleReplacing(double **inputs, double **outputs, V double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double speed = pow(A,3) * 0.001; speed *= overallscale; @@ -373,27 +357,19 @@ void ChorusEnsemble::processDoubleReplacing(double **inputs, double **outputs, V inputSampleL = (inputSampleL * wet) + (drySampleL * dry); inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } + fpFlip = !fpFlip; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/ClipOnly/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/ClipOnly/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/ClipOnly/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/ClipOnly/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/ClipOnly/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..0762d52 --- /dev/null +++ b/plugins/LinuxVST/src/ClipOnly/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Console4Buss/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Console4Buss/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Console4Buss/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Console4Buss/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Console4Buss/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..82160f2 --- /dev/null +++ b/plugins/LinuxVST/src/Console4Buss/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Console4Buss/Console4Buss.cpp b/plugins/LinuxVST/src/Console4Buss/Console4Buss.cpp index 79c7f6f..0c8e00c 100755 --- a/plugins/LinuxVST/src/Console4Buss/Console4Buss.cpp +++ b/plugins/LinuxVST/src/Console4Buss/Console4Buss.cpp @@ -22,11 +22,8 @@ Console4Buss::Console4Buss(audioMasterCallback audioMaster) : gainchase = -90.0; settingchase = -90.0; chasespeed = 350.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; // TODO: uncomment canDo entries according to your plugin's capabilities // _canDo.insert("sendVstEvents"); // plug-in will send Vst events to Host. diff --git a/plugins/LinuxVST/src/Console4Buss/Console4Buss.h b/plugins/LinuxVST/src/Console4Buss/Console4Buss.h index b19e6f2..9a9cbfb 100755 --- a/plugins/LinuxVST/src/Console4Buss/Console4Buss.h +++ b/plugins/LinuxVST/src/Console4Buss/Console4Buss.h @@ -71,11 +71,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - double fpNShapeLA; - double fpNShapeLB; - double fpNShapeRA; - double fpNShapeRB; - bool fpFlip; + double fpNShapeL; + double fpNShapeR; //default stuff double lastSampleL; double lastSampleR; diff --git a/plugins/LinuxVST/src/Console4Buss/Console4BussProc.cpp b/plugins/LinuxVST/src/Console4Buss/Console4BussProc.cpp index 712e496..dde872a 100755 --- a/plugins/LinuxVST/src/Console4Buss/Console4BussProc.cpp +++ b/plugins/LinuxVST/src/Console4Buss/Console4BussProc.cpp @@ -18,10 +18,6 @@ void Console4Buss::processReplacing(float **inputs, float **outputs, VstInt32 sa double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - double fpOld = 0.618033988749894848204586; //golden ratio! - double fpNew = 1.0 - fpOld; - long double inputSampleL; long double inputSampleR; long double half; @@ -123,25 +119,14 @@ void Console4Buss::processReplacing(float **inputs, float **outputs, VstInt32 sa //this is the inverse processing for Console: boosts but not so much if there's slew. //is this too subtle an effect? - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -163,9 +148,6 @@ void Console4Buss::processDoubleReplacing(double **inputs, double **outputs, Vst double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -267,25 +249,16 @@ void Console4Buss::processDoubleReplacing(double **inputs, double **outputs, Vst //this is the inverse processing for Console: boosts but not so much if there's slew. //is this too subtle an effect? - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; diff --git a/plugins/LinuxVST/src/Console4Channel/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Console4Channel/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Console4Channel/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Console4Channel/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Console4Channel/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..e9e8200 --- /dev/null +++ b/plugins/LinuxVST/src/Console4Channel/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Console4Channel/Console4Channel.cpp b/plugins/LinuxVST/src/Console4Channel/Console4Channel.cpp index 52f6190..2e524a1 100755 --- a/plugins/LinuxVST/src/Console4Channel/Console4Channel.cpp +++ b/plugins/LinuxVST/src/Console4Channel/Console4Channel.cpp @@ -20,11 +20,8 @@ Console4Channel::Console4Channel(audioMasterCallback audioMaster) : gainchase = -90.0; settingchase = -90.0; chasespeed = 350.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; // TODO: uncomment canDo entries according to your plugin's capabilities // _canDo.insert("sendVstEvents"); // plug-in will send Vst events to Host. diff --git a/plugins/LinuxVST/src/Console4Channel/Console4Channel.h b/plugins/LinuxVST/src/Console4Channel/Console4Channel.h index 861ebe3..564853a 100755 --- a/plugins/LinuxVST/src/Console4Channel/Console4Channel.h +++ b/plugins/LinuxVST/src/Console4Channel/Console4Channel.h @@ -76,11 +76,8 @@ private: double settingchase; double chasespeed; - double fpNShapeLA; - double fpNShapeLB; - double fpNShapeRA; - double fpNShapeRB; - bool fpFlip; + double fpNShapeL; + double fpNShapeR; //default stuff float gain; }; diff --git a/plugins/LinuxVST/src/Console4Channel/Console4ChannelProc.cpp b/plugins/LinuxVST/src/Console4Channel/Console4ChannelProc.cpp index 9bf7244..3538710 100755 --- a/plugins/LinuxVST/src/Console4Channel/Console4ChannelProc.cpp +++ b/plugins/LinuxVST/src/Console4Channel/Console4ChannelProc.cpp @@ -18,10 +18,6 @@ void Console4Channel::processReplacing(float **inputs, float **outputs, VstInt32 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - double fpOld = 0.618033988749894848204586; //golden ratio! - double fpNew = 1.0 - fpOld; - long double inputSampleL; long double inputSampleR; long double half; @@ -105,25 +101,14 @@ void Console4Channel::processReplacing(float **inputs, float **outputs, VstInt32 //this is part of the Purest line: stuff that is on every track //needs to be DAMN LOW ON MATH srsly guys - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -145,9 +130,6 @@ void Console4Channel::processDoubleReplacing(double **inputs, double **outputs, double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -232,25 +214,16 @@ void Console4Channel::processDoubleReplacing(double **inputs, double **outputs, //this is part of the Purest line: stuff that is on every track //needs to be DAMN LOW ON MATH srsly guys - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Console5Buss/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Console5Buss/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Console5Buss/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Console5Buss/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Console5Buss/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..f8fc15a --- /dev/null +++ b/plugins/LinuxVST/src/Console5Buss/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Console5Buss/Console5Buss.cpp b/plugins/LinuxVST/src/Console5Buss/Console5Buss.cpp index 7f1c915..7e937a8 100755 --- a/plugins/LinuxVST/src/Console5Buss/Console5Buss.cpp +++ b/plugins/LinuxVST/src/Console5Buss/Console5Buss.cpp @@ -22,11 +22,8 @@ Console5Buss::Console5Buss(audioMasterCallback audioMaster) : gainchase = -90.0; settingchase = -90.0; chasespeed = 350.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Console5Buss/Console5Buss.h b/plugins/LinuxVST/src/Console5Buss/Console5Buss.h index 6ece284..0166f33 100755 --- a/plugins/LinuxVST/src/Console5Buss/Console5Buss.h +++ b/plugins/LinuxVST/src/Console5Buss/Console5Buss.h @@ -61,11 +61,8 @@ private: double gainchase; double settingchase; double chasespeed; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/Console5Buss/Console5BussProc.cpp b/plugins/LinuxVST/src/Console5Buss/Console5BussProc.cpp index 28b4980..21069e8 100755 --- a/plugins/LinuxVST/src/Console5Buss/Console5BussProc.cpp +++ b/plugins/LinuxVST/src/Console5Buss/Console5BussProc.cpp @@ -17,9 +17,6 @@ void Console5Buss::processReplacing(float **inputs, float **outputs, VstInt32 sa double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double differenceL; @@ -151,25 +148,14 @@ void Console5Buss::processReplacing(float **inputs, float **outputs, VstInt32 sa lastFXBussR *= (1.0 - (nearZeroR * bassTrim)); //this cuts back the DC offset directly, relative to how near zero we are - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -191,9 +177,6 @@ void Console5Buss::processDoubleReplacing(double **inputs, double **outputs, Vst double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double differenceL; @@ -325,25 +308,16 @@ void Console5Buss::processDoubleReplacing(double **inputs, double **outputs, Vst lastFXBussR *= (1.0 - (nearZeroR * bassTrim)); //this cuts back the DC offset directly, relative to how near zero we are - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Console5Channel/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Console5Channel/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Console5Channel/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Console5Channel/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Console5Channel/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..ac0d461 --- /dev/null +++ b/plugins/LinuxVST/src/Console5Channel/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Console5Channel/Console5Channel.cpp b/plugins/LinuxVST/src/Console5Channel/Console5Channel.cpp index 9305bf4..1a8f6fb 100755 --- a/plugins/LinuxVST/src/Console5Channel/Console5Channel.cpp +++ b/plugins/LinuxVST/src/Console5Channel/Console5Channel.cpp @@ -22,11 +22,8 @@ Console5Channel::Console5Channel(audioMasterCallback audioMaster) : gainchase = -90.0; settingchase = -90.0; chasespeed = 350.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Console5Channel/Console5Channel.h b/plugins/LinuxVST/src/Console5Channel/Console5Channel.h index 59e7950..bbc58b3 100755 --- a/plugins/LinuxVST/src/Console5Channel/Console5Channel.h +++ b/plugins/LinuxVST/src/Console5Channel/Console5Channel.h @@ -61,11 +61,8 @@ private: double gainchase; double settingchase; double chasespeed; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/Console5Channel/Console5ChannelProc.cpp b/plugins/LinuxVST/src/Console5Channel/Console5ChannelProc.cpp index 428e5e4..a010170 100755 --- a/plugins/LinuxVST/src/Console5Channel/Console5ChannelProc.cpp +++ b/plugins/LinuxVST/src/Console5Channel/Console5ChannelProc.cpp @@ -17,9 +17,6 @@ void Console5Channel::processReplacing(float **inputs, float **outputs, VstInt32 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double differenceL; @@ -152,25 +149,14 @@ void Console5Channel::processReplacing(float **inputs, float **outputs, VstInt32 inputSampleR = sin(inputSampleR); //amplitude aspect - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -192,9 +178,6 @@ void Console5Channel::processDoubleReplacing(double **inputs, double **outputs, double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double differenceL; @@ -327,25 +310,16 @@ void Console5Channel::processDoubleReplacing(double **inputs, double **outputs, inputSampleR = sin(inputSampleR); //amplitude aspect - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Console5DarkCh/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Console5DarkCh/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Console5DarkCh/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Console5DarkCh/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Console5DarkCh/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..1473e4d --- /dev/null +++ b/plugins/LinuxVST/src/Console5DarkCh/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Console5DarkCh/Console5DarkCh.cpp b/plugins/LinuxVST/src/Console5DarkCh/Console5DarkCh.cpp index 0d613a9..350a6b3 100755 --- a/plugins/LinuxVST/src/Console5DarkCh/Console5DarkCh.cpp +++ b/plugins/LinuxVST/src/Console5DarkCh/Console5DarkCh.cpp @@ -22,11 +22,8 @@ Console5DarkCh::Console5DarkCh(audioMasterCallback audioMaster) : gainchase = -90.0; settingchase = -90.0; chasespeed = 350.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Console5DarkCh/Console5DarkCh.h b/plugins/LinuxVST/src/Console5DarkCh/Console5DarkCh.h index 558e4f7..3265f5c 100755 --- a/plugins/LinuxVST/src/Console5DarkCh/Console5DarkCh.h +++ b/plugins/LinuxVST/src/Console5DarkCh/Console5DarkCh.h @@ -61,11 +61,8 @@ private: double gainchase; double settingchase; double chasespeed; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/Console5DarkCh/Console5DarkChProc.cpp b/plugins/LinuxVST/src/Console5DarkCh/Console5DarkChProc.cpp index e17ff88c..ba3a842 100755 --- a/plugins/LinuxVST/src/Console5DarkCh/Console5DarkChProc.cpp +++ b/plugins/LinuxVST/src/Console5DarkCh/Console5DarkChProc.cpp @@ -17,9 +17,6 @@ void Console5DarkCh::processReplacing(float **inputs, float **outputs, VstInt32 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double differenceL; @@ -152,25 +149,14 @@ void Console5DarkCh::processReplacing(float **inputs, float **outputs, VstInt32 inputSampleR = sin(inputSampleR); //amplitude aspect - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -192,9 +178,6 @@ void Console5DarkCh::processDoubleReplacing(double **inputs, double **outputs, V double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double differenceL; @@ -327,25 +310,16 @@ void Console5DarkCh::processDoubleReplacing(double **inputs, double **outputs, V inputSampleR = sin(inputSampleR); //amplitude aspect - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWear.cpp b/plugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWear.cpp index 68a7fd9..6653b91 100755 --- a/plugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWear.cpp +++ b/plugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWear.cpp @@ -36,11 +36,8 @@ CrunchyGrooveWear::CrunchyGrooveWear(audioMasterCallback audioMaster) : cMidPrevR = 0.0; dMidPrevR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWear.h b/plugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWear.h index ed304c5..3489e5b 100755 --- a/plugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWear.h +++ b/plugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWear.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double aMidL[21]; diff --git a/plugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWearProc.cpp b/plugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWearProc.cpp index 4eec93e..3c9762e 100755 --- a/plugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWearProc.cpp +++ b/plugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWearProc.cpp @@ -14,9 +14,6 @@ void CrunchyGrooveWear::processReplacing(float **inputs, float **outputs, VstInt float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double overallscale = (pow(A,2)*19.0)+1.0; double gain = overallscale; @@ -434,25 +431,14 @@ void CrunchyGrooveWear::processReplacing(float **inputs, float **outputs, VstInt drySampleR = inputSampleR; } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -471,9 +457,6 @@ void CrunchyGrooveWear::processDoubleReplacing(double **inputs, double **outputs double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double overallscale = (pow(A,2)*19.0)+1.0; double gain = overallscale; @@ -891,25 +874,16 @@ void CrunchyGrooveWear::processDoubleReplacing(double **inputs, double **outputs drySampleR = inputSampleR; } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Crystal/CrystalProc.cpp b/plugins/LinuxVST/src/Crystal/CrystalProc.cpp index 9c62355..7e696a7 100755 --- a/plugins/LinuxVST/src/Crystal/CrystalProc.cpp +++ b/plugins/LinuxVST/src/Crystal/CrystalProc.cpp @@ -191,18 +191,14 @@ void Crystal::processReplacing(float **inputs, float **outputs, VstInt32 sampleF //when current and old samples are different from each other, otherwise you can't tell it's there. //This is not only during silence but the tops of low frequency waves: it scales down to affect lows more gently. - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -212,12 +208,6 @@ void Crystal::processReplacing(float **inputs, float **outputs, VstInt32 sampleF *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Crystal::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -404,18 +394,16 @@ void Crystal::processDoubleReplacing(double **inputs, double **outputs, VstInt32 //when current and old samples are different from each other, otherwise you can't tell it's there. //This is not only during silence but the tops of low frequency waves: it scales down to affect lows more gently. - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -425,10 +413,4 @@ void Crystal::processDoubleReplacing(double **inputs, double **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/LinuxVST/src/DCVoltage/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/DCVoltage/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/DCVoltage/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/DCVoltage/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/DCVoltage/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..35085c6 --- /dev/null +++ b/plugins/LinuxVST/src/DCVoltage/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/DeEss/DeEssProc.cpp b/plugins/LinuxVST/src/DeEss/DeEssProc.cpp index 9a8e14b..9b030a4 100755 --- a/plugins/LinuxVST/src/DeEss/DeEssProc.cpp +++ b/plugins/LinuxVST/src/DeEss/DeEssProc.cpp @@ -148,18 +148,14 @@ void DeEss::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra flip = !flip; - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -169,12 +165,6 @@ void DeEss::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void DeEss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -318,18 +308,16 @@ void DeEss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s flip = !flip; - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -339,10 +327,4 @@ void DeEss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/LinuxVST/src/DeRez/DeRez.cpp b/plugins/LinuxVST/src/DeRez/DeRez.cpp index 404127a..cb9b514 100755 --- a/plugins/LinuxVST/src/DeRez/DeRez.cpp +++ b/plugins/LinuxVST/src/DeRez/DeRez.cpp @@ -23,11 +23,8 @@ DeRez::DeRez(audioMasterCallback audioMaster) : incrementA = 0.0; incrementB = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/DeRez/DeRez.h b/plugins/LinuxVST/src/DeRez/DeRez.h index 89338e8..8ebdcd9 100755 --- a/plugins/LinuxVST/src/DeRez/DeRez.h +++ b/plugins/LinuxVST/src/DeRez/DeRez.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double lastSampleL; diff --git a/plugins/LinuxVST/src/DeRez/DeRezProc.cpp b/plugins/LinuxVST/src/DeRez/DeRezProc.cpp index 247a364..cbe42d5 100755 --- a/plugins/LinuxVST/src/DeRez/DeRezProc.cpp +++ b/plugins/LinuxVST/src/DeRez/DeRezProc.cpp @@ -17,8 +17,6 @@ void DeRez::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double targetA = pow(A,3)+0.0005; if (targetA > 1.0) targetA = 1.0; @@ -132,26 +130,14 @@ void DeRez::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra lastSampleL = drySampleL; lastSampleR = drySampleR; - //noise shaping to 32-bit floating point - float fpTemp; - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -173,8 +159,6 @@ void DeRez::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double targetA = pow(A,3)+0.0005; if (targetA > 1.0) targetA = 1.0; @@ -288,26 +272,16 @@ void DeRez::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s lastSampleL = drySampleL; lastSampleR = drySampleR; - //noise shaping to 64-bit floating point - double fpTemp; - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Density/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Density/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Density/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Density/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Density/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..ac31fc9 --- /dev/null +++ b/plugins/LinuxVST/src/Density/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Density/Density.cpp b/plugins/LinuxVST/src/Density/Density.cpp index 1ecafde..bac4fb2 100755 --- a/plugins/LinuxVST/src/Density/Density.cpp +++ b/plugins/LinuxVST/src/Density/Density.cpp @@ -20,12 +20,9 @@ Density::Density(audioMasterCallback audioMaster) : iirSampleBL = 0.0; iirSampleAR = 0.0; iirSampleBR = 0.0; - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Density/Density.h b/plugins/LinuxVST/src/Density/Density.h index 377d25d..b634c44 100755 --- a/plugins/LinuxVST/src/Density/Density.h +++ b/plugins/LinuxVST/src/Density/Density.h @@ -55,17 +55,14 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double iirSampleAL; double iirSampleBL; double iirSampleAR; double iirSampleBR; - + bool fpFlip; float A; float B; float C; diff --git a/plugins/LinuxVST/src/Density/DensityProc.cpp b/plugins/LinuxVST/src/Density/DensityProc.cpp index 1e968c7..f229a9d 100755 --- a/plugins/LinuxVST/src/Density/DensityProc.cpp +++ b/plugins/LinuxVST/src/Density/DensityProc.cpp @@ -26,9 +26,6 @@ void Density::processReplacing(float **inputs, float **outputs, VstInt32 sampleF double out = fabs(density); density = density * fabs(density); double count; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -95,6 +92,7 @@ void Density::processReplacing(float **inputs, float **outputs, VstInt32 sampleF inputSampleR -= iirSampleBR; } //highpass section + fpFlip = !fpFlip; count = density; while (count > 1.0) @@ -150,25 +148,14 @@ void Density::processReplacing(float **inputs, float **outputs, VstInt32 sampleF //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -199,9 +186,6 @@ void Density::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double out = fabs(density); density = density * fabs(density); double count; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -268,6 +252,7 @@ void Density::processDoubleReplacing(double **inputs, double **outputs, VstInt32 inputSampleR -= iirSampleBR; } //highpass section + fpFlip = !fpFlip; count = density; while (count > 1.0) @@ -323,25 +308,16 @@ void Density::processDoubleReplacing(double **inputs, double **outputs, VstInt32 //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Desk/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Desk/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Desk/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Desk/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Desk/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..9006873 --- /dev/null +++ b/plugins/LinuxVST/src/Desk/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Desk/Desk.cpp b/plugins/LinuxVST/src/Desk/Desk.cpp index 7a30943..9582f04 100755 --- a/plugins/LinuxVST/src/Desk/Desk.cpp +++ b/plugins/LinuxVST/src/Desk/Desk.cpp @@ -18,11 +18,8 @@ Desk::Desk(audioMasterCallback audioMaster) : lastSampleR = 0.0; lastOutSampleR = 0.0; lastSlewR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Desk/Desk.h b/plugins/LinuxVST/src/Desk/Desk.h index 8c5c398..f7f933d 100755 --- a/plugins/LinuxVST/src/Desk/Desk.h +++ b/plugins/LinuxVST/src/Desk/Desk.h @@ -51,11 +51,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff long double lastSampleL; diff --git a/plugins/LinuxVST/src/Desk/DeskProc.cpp b/plugins/LinuxVST/src/Desk/DeskProc.cpp index a2bc92c..d53894b 100755 --- a/plugins/LinuxVST/src/Desk/DeskProc.cpp +++ b/plugins/LinuxVST/src/Desk/DeskProc.cpp @@ -29,9 +29,6 @@ void Desk::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram double bridgerectifier; double combsample; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -151,25 +148,14 @@ void Desk::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram inputSampleR /= gain; //end R - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -203,9 +189,6 @@ void Desk::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa double bridgerectifier; double combsample; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -325,25 +308,16 @@ void Desk::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa inputSampleR /= gain; //end R - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Desk4/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Desk4/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Desk4/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Desk4/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Desk4/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..a020b8d --- /dev/null +++ b/plugins/LinuxVST/src/Desk4/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Desk4/Desk4.cpp b/plugins/LinuxVST/src/Desk4/Desk4.cpp index a8e20a7..0a05d87 100755 --- a/plugins/LinuxVST/src/Desk4/Desk4.cpp +++ b/plugins/LinuxVST/src/Desk4/Desk4.cpp @@ -30,11 +30,8 @@ Desk4::Desk4(audioMasterCallback audioMaster) : lastSlewR = 0.0; gcount = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Desk4/Desk4.h b/plugins/LinuxVST/src/Desk4/Desk4.h index fa09cd0..802ee47 100755 --- a/plugins/LinuxVST/src/Desk4/Desk4.h +++ b/plugins/LinuxVST/src/Desk4/Desk4.h @@ -70,11 +70,8 @@ private: double lastSlewR; int gcount; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/Desk4/Desk4Proc.cpp b/plugins/LinuxVST/src/Desk4/Desk4Proc.cpp index 515436c..fd165b6 100755 --- a/plugins/LinuxVST/src/Desk4/Desk4Proc.cpp +++ b/plugins/LinuxVST/src/Desk4/Desk4Proc.cpp @@ -17,9 +17,6 @@ void Desk4::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double gain = (pow(A,2)*10)+0.0001; double gaintrim = (pow(A,2)*2)+1.0; @@ -229,25 +226,14 @@ void Desk4::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -269,9 +255,6 @@ void Desk4::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double gain = (pow(A,2)*10)+0.0001; double gaintrim = (pow(A,2)*2)+1.0; @@ -481,25 +464,16 @@ void Desk4::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Distance/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Distance/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Distance/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Distance/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Distance/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..4359323 --- /dev/null +++ b/plugins/LinuxVST/src/Distance/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Distance/Distance.cpp b/plugins/LinuxVST/src/Distance/Distance.cpp index bae55c1..7ccd8fb 100755 --- a/plugins/LinuxVST/src/Distance/Distance.cpp +++ b/plugins/LinuxVST/src/Distance/Distance.cpp @@ -16,11 +16,8 @@ Distance::Distance(audioMasterCallback audioMaster) : B = 1.0; thirdresultL = prevresultL = lastclampL = clampL = changeL = lastL = 0.0; thirdresultR = prevresultR = lastclampR = clampR = changeR = lastR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Distance/Distance.h b/plugins/LinuxVST/src/Distance/Distance.h index 52ecc14..5566f84 100755 --- a/plugins/LinuxVST/src/Distance/Distance.h +++ b/plugins/LinuxVST/src/Distance/Distance.h @@ -67,11 +67,8 @@ private: double prevresultR; double lastR; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/Distance/DistanceProc.cpp b/plugins/LinuxVST/src/Distance/DistanceProc.cpp index bdf3c13..32eb3fa 100755 --- a/plugins/LinuxVST/src/Distance/DistanceProc.cpp +++ b/plugins/LinuxVST/src/Distance/DistanceProc.cpp @@ -28,9 +28,6 @@ void Distance::processReplacing(float **inputs, float **outputs, VstInt32 sample double dry = 1.0-wet; double bridgerectifier; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; long double drySampleL; @@ -126,25 +123,14 @@ void Distance::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleR = (drySampleR * dry)+(inputSampleR*wet); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -177,9 +163,6 @@ void Distance::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double dry = 1.0-wet; double bridgerectifier; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; long double drySampleL; @@ -275,25 +258,16 @@ void Distance::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleR = (drySampleR * dry)+(inputSampleR*wet); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Distance2/Distance2Proc.cpp b/plugins/LinuxVST/src/Distance2/Distance2Proc.cpp index ef5bf5b..473f3c8 100755 --- a/plugins/LinuxVST/src/Distance2/Distance2Proc.cpp +++ b/plugins/LinuxVST/src/Distance2/Distance2Proc.cpp @@ -266,18 +266,14 @@ void Distance2::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -287,12 +283,6 @@ void Distance2::processReplacing(float **inputs, float **outputs, VstInt32 sampl *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Distance2::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -554,18 +544,16 @@ void Distance2::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -575,10 +563,4 @@ void Distance2::processDoubleReplacing(double **inputs, double **outputs, VstInt *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/LinuxVST/src/DitherFloat/DitherFloat.cpp b/plugins/LinuxVST/src/DitherFloat/DitherFloat.cpp new file mode 100755 index 0000000..ffd9e94 --- /dev/null +++ b/plugins/LinuxVST/src/DitherFloat/DitherFloat.cpp @@ -0,0 +1,127 @@ +/* ======================================== + * DitherFloat - DitherFloat.h + * Copyright (c) 2016 airwindows, All rights reserved + * ======================================== */ + +#ifndef __DitherFloat_H +#include "DitherFloat.h" +#endif + +AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new DitherFloat(audioMaster);} + +DitherFloat::DitherFloat(audioMasterCallback audioMaster) : + AudioEffectX(audioMaster, kNumPrograms, kNumParameters) +{ + A = 0.0; + B = 1.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + + _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. + _canDo.insert("plugAsSend"); // plug-in can be used as a send effect. + _canDo.insert("x2in2out"); + setNumInputs(kNumInputs); + setNumOutputs(kNumOutputs); + setUniqueID(kUniqueId); + canProcessReplacing(); // supports output replacing + canDoubleReplacing(); // supports double precision processing + programsAreChunks(true); + vst_strncpy (_programName, "Default", kVstMaxProgNameLen); // default program name +} + +DitherFloat::~DitherFloat() {} +VstInt32 DitherFloat::getVendorVersion () {return 1000;} +void DitherFloat::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);} +void DitherFloat::getProgramName(char *name) {vst_strncpy (name, _programName, kVstMaxProgNameLen);} +//airwindows likes to ignore this stuff. Make your own programs, and make a different plugin rather than +//trying to do versioning and preventing people from using older versions. Maybe they like the old one! + +static float pinParameter(float data) +{ + if (data < 0.0f) return 0.0f; + if (data > 1.0f) return 1.0f; + return data; +} + +VstInt32 DitherFloat::getChunk (void** data, bool isPreset) +{ + float *chunkData = (float *)calloc(kNumParameters, sizeof(float)); + chunkData[0] = A; + chunkData[1] = B; + /* Note: The way this is set up, it will break if you manage to save settings on an Intel + machine and load them on a PPC Mac. However, it's fine if you stick to the machine you + started with. */ + + *data = chunkData; + return kNumParameters * sizeof(float); +} + +VstInt32 DitherFloat::setChunk (void* data, VstInt32 byteSize, bool isPreset) +{ + float *chunkData = (float *)data; + A = pinParameter(chunkData[0]); + B = pinParameter(chunkData[1]); + /* We're ignoring byteSize as we found it to be a filthy liar */ + + /* calculate any other fields you need here - you could copy in + code from setParameter() here. */ + return 0; +} + +void DitherFloat::setParameter(VstInt32 index, float value) { + switch (index) { + case kParamA: A = value; break; + case kParamB: B = value; break; + default: throw; // unknown parameter, shouldn't happen! + } +} + +float DitherFloat::getParameter(VstInt32 index) { + switch (index) { + case kParamA: return A; break; + case kParamB: return B; break; + default: break; // unknown parameter, shouldn't happen! + } return 0.0; //we only need to update the relevant name, this is simple to manage +} + +void DitherFloat::getParameterName(VstInt32 index, char *text) { + switch (index) { + case kParamA: vst_strncpy (text, "Offset", kVstMaxParamStrLen); break; + case kParamB: vst_strncpy (text, "Dither", kVstMaxParamStrLen); break; + default: break; // unknown parameter, shouldn't happen! + } //this is our labels for displaying in the VST host +} + +void DitherFloat::getParameterDisplay(VstInt32 index, char *text) { + switch (index) { + case kParamA: int2string ((VstInt32)(A * 32), text, kVstMaxParamStrLen); break; + case kParamB: float2string (B, text, kVstMaxParamStrLen); break; + default: break; // unknown parameter, shouldn't happen! + } //this displays the values and handles 'popups' where it's discrete choices +} + +void DitherFloat::getParameterLabel(VstInt32 index, char *text) { + switch (index) { + case kParamA: vst_strncpy (text, "", kVstMaxParamStrLen); break; + case kParamB: vst_strncpy (text, "", kVstMaxParamStrLen); break; + default: break; // unknown parameter, shouldn't happen! + } +} + +VstInt32 DitherFloat::canDo(char *text) +{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know + +bool DitherFloat::getEffectName(char* name) { + vst_strncpy(name, "DitherFloat", kVstMaxProductStrLen); return true; +} + +VstPlugCategory DitherFloat::getPlugCategory() {return kPlugCategEffect;} + +bool DitherFloat::getProductString(char* text) { + vst_strncpy (text, "airwindows DitherFloat", kVstMaxProductStrLen); return true; +} + +bool DitherFloat::getVendorString(char* text) { + vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true; +} diff --git a/plugins/LinuxVST/src/DitherFloat/DitherFloat.h b/plugins/LinuxVST/src/DitherFloat/DitherFloat.h new file mode 100755 index 0000000..b8ddf51 --- /dev/null +++ b/plugins/LinuxVST/src/DitherFloat/DitherFloat.h @@ -0,0 +1,64 @@ +/* ======================================== + * DitherFloat - DitherFloat.h + * Created 8/12/11 by SPIAdmin + * Copyright (c) 2011 __MyCompanyName__, All rights reserved + * ======================================== */ + +#ifndef __DitherFloat_H +#define __DitherFloat_H + +#ifndef __audioeffect__ +#include "audioeffectx.h" +#endif + +#include <set> +#include <string> +#include <math.h> + +enum { + kParamA = 0, + kParamB = 1, + kNumParameters = 2 +}; // + +const int kNumPrograms = 0; +const int kNumInputs = 2; +const int kNumOutputs = 2; +const unsigned long kUniqueId = 'dthf'; //Change this to what the AU identity is! + +class DitherFloat : + public AudioEffectX +{ +public: + DitherFloat(audioMasterCallback audioMaster); + ~DitherFloat(); + virtual bool getEffectName(char* name); // The plug-in name + virtual VstPlugCategory getPlugCategory(); // The general category for the plug-in + virtual bool getProductString(char* text); // This is a unique plug-in string provided by Steinberg + virtual bool getVendorString(char* text); // Vendor info + virtual VstInt32 getVendorVersion(); // Version number + virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames); + virtual void processDoubleReplacing (double** inputs, double** outputs, VstInt32 sampleFrames); + virtual void getProgramName(char *name); // read the name from the host + virtual void setProgramName(char *name); // changes the name of the preset displayed in the host + virtual VstInt32 getChunk (void** data, bool isPreset); + virtual VstInt32 setChunk (void* data, VstInt32 byteSize, bool isPreset); + virtual float getParameter(VstInt32 index); // get the parameter value at the specified index + virtual void setParameter(VstInt32 index, float value); // set the parameter at index to value + virtual void getParameterLabel(VstInt32 index, char *text); // label for the parameter (eg dB) + virtual void getParameterName(VstInt32 index, char *text); // name of the parameter + virtual void getParameterDisplay(VstInt32 index, char *text); // text description of the current value + virtual VstInt32 canDo(char *text); +private: + char _programName[kVstMaxProgNameLen + 1]; + std::set< std::string > _canDo; + + long double fpNShapeL; + long double fpNShapeR; + //default stuff + + float A; + float B; +}; + +#endif diff --git a/plugins/LinuxVST/src/DitherFloat/DitherFloatProc.cpp b/plugins/LinuxVST/src/DitherFloat/DitherFloatProc.cpp new file mode 100755 index 0000000..3c76a1a --- /dev/null +++ b/plugins/LinuxVST/src/DitherFloat/DitherFloatProc.cpp @@ -0,0 +1,184 @@ +/* ======================================== + * DitherFloat - DitherFloat.h + * Copyright (c) 2016 airwindows, All rights reserved + * ======================================== */ + +#ifndef __DitherFloat_H +#include "DitherFloat.h" +#endif + +void DitherFloat::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames) +{ + float* in1 = inputs[0]; + float* in2 = inputs[1]; + float* out1 = outputs[0]; + float* out2 = outputs[1]; + + double overallscale = 1.0; + overallscale /= 44100.0; + overallscale *= getSampleRate(); + + int floatOffset = (A * 32); + long double blend = B; + + long double gain = 0; + + switch (floatOffset) + { + case 0: gain = 1.0; break; + case 1: gain = 2.0; break; + case 2: gain = 4.0; break; + case 3: gain = 8.0; break; + case 4: gain = 16.0; break; + case 5: gain = 32.0; break; + case 6: gain = 64.0; break; + case 7: gain = 128.0; break; + case 8: gain = 256.0; break; + case 9: gain = 512.0; break; + case 10: gain = 1024.0; break; + case 11: gain = 2048.0; break; + case 12: gain = 4096.0; break; + case 13: gain = 8192.0; break; + case 14: gain = 16384.0; break; + case 15: gain = 32768.0; break; + case 16: gain = 65536.0; break; + case 17: gain = 131072.0; break; + case 18: gain = 262144.0; break; + case 19: gain = 524288.0; break; + case 20: gain = 1048576.0; break; + case 21: gain = 2097152.0; break; + case 22: gain = 4194304.0; break; + case 23: gain = 8388608.0; break; + case 24: gain = 16777216.0; break; + case 25: gain = 33554432.0; break; + case 26: gain = 67108864.0; break; + case 27: gain = 134217728.0; break; + case 28: gain = 268435456.0; break; + case 29: gain = 536870912.0; break; + case 30: gain = 1073741824.0; break; + case 31: gain = 2147483648.0; break; + case 32: gain = 4294967296.0; break; + } + //we are directly punching in the gain values rather than calculating them + + while (--sampleFrames >= 0) + { + long double inputSampleL = *in1 + (gain-1); + long double inputSampleR = *in2 + (gain-1); + + + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo; + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo; + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither + + + + inputSampleL = (float)inputSampleL; //equivalent of 'floor' for 32 bit floating point + inputSampleR = (float)inputSampleR; //equivalent of 'floor' for 32 bit floating point + //We do that separately, we're truncating to floating point WHILE heavily offset. + + *out1 = inputSampleL - (gain-1); + *out2 = inputSampleR - (gain-1); + + *in1++; + *in2++; + *out1++; + *out2++; + } +} + +void DitherFloat::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) +{ + double* in1 = inputs[0]; + double* in2 = inputs[1]; + double* out1 = outputs[0]; + double* out2 = outputs[1]; + + double overallscale = 1.0; + overallscale /= 44100.0; + overallscale *= getSampleRate(); + + int floatOffset = (A * 32); + long double blend = B; + + long double gain = 0; + + switch (floatOffset) + { + case 0: gain = 1.0; break; + case 1: gain = 2.0; break; + case 2: gain = 4.0; break; + case 3: gain = 8.0; break; + case 4: gain = 16.0; break; + case 5: gain = 32.0; break; + case 6: gain = 64.0; break; + case 7: gain = 128.0; break; + case 8: gain = 256.0; break; + case 9: gain = 512.0; break; + case 10: gain = 1024.0; break; + case 11: gain = 2048.0; break; + case 12: gain = 4096.0; break; + case 13: gain = 8192.0; break; + case 14: gain = 16384.0; break; + case 15: gain = 32768.0; break; + case 16: gain = 65536.0; break; + case 17: gain = 131072.0; break; + case 18: gain = 262144.0; break; + case 19: gain = 524288.0; break; + case 20: gain = 1048576.0; break; + case 21: gain = 2097152.0; break; + case 22: gain = 4194304.0; break; + case 23: gain = 8388608.0; break; + case 24: gain = 16777216.0; break; + case 25: gain = 33554432.0; break; + case 26: gain = 67108864.0; break; + case 27: gain = 134217728.0; break; + case 28: gain = 268435456.0; break; + case 29: gain = 536870912.0; break; + case 30: gain = 1073741824.0; break; + case 31: gain = 2147483648.0; break; + case 32: gain = 4294967296.0; break; + } + //we are directly punching in the gain values rather than calculating them + + while (--sampleFrames >= 0) + { + long double inputSampleL = *in1 + (gain-1); + long double inputSampleR = *in2 + (gain-1); + + + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo; + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo; + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither + + + + inputSampleL = (float)inputSampleL; //equivalent of 'floor' for 32 bit floating point + inputSampleR = (float)inputSampleR; //equivalent of 'floor' for 32 bit floating point + //We do that separately, we're truncating to floating point WHILE heavily offset. + + //note for 64 bit version: this is not for actually dithering 64 bit floats! + //This is specifically for demonstrating the sound of 32 bit floating point dither + //even over a 64 bit buss. Therefore it should be using float, above! + + *out1 = inputSampleL - (gain-1); + *out2 = inputSampleR - (gain-1); + + *in1++; + *in2++; + *out1++; + *out2++; + } +} diff --git a/plugins/LinuxVST/src/Drive/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Drive/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Drive/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Drive/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Drive/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..da1c31d --- /dev/null +++ b/plugins/LinuxVST/src/Drive/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Drive/Drive.cpp b/plugins/LinuxVST/src/Drive/Drive.cpp index 35d0594..ac5f228 100755 --- a/plugins/LinuxVST/src/Drive/Drive.cpp +++ b/plugins/LinuxVST/src/Drive/Drive.cpp @@ -20,12 +20,9 @@ Drive::Drive(audioMasterCallback audioMaster) : iirSampleBL = 0.0; iirSampleAR = 0.0; iirSampleBR = 0.0; - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Drive/Drive.h b/plugins/LinuxVST/src/Drive/Drive.h index c7039c5..525a09e 100755 --- a/plugins/LinuxVST/src/Drive/Drive.h +++ b/plugins/LinuxVST/src/Drive/Drive.h @@ -55,17 +55,14 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double iirSampleAL; double iirSampleBL; double iirSampleAR; double iirSampleBR; - + bool fpFlip; float A; float B; float C; diff --git a/plugins/LinuxVST/src/Drive/DriveProc.cpp b/plugins/LinuxVST/src/Drive/DriveProc.cpp index 3670e85..074ccfd 100755 --- a/plugins/LinuxVST/src/Drive/DriveProc.cpp +++ b/plugins/LinuxVST/src/Drive/DriveProc.cpp @@ -26,9 +26,6 @@ void Drive::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra double glitch = 0.60; double out; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -95,6 +92,7 @@ void Drive::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra inputSampleR -= iirSampleBR; } //highpass section + fpFlip = !fpFlip; if (inputSampleL > 1.0) inputSampleL = 1.0; @@ -129,25 +127,14 @@ void Drive::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -178,9 +165,6 @@ void Drive::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s double glitch = 0.60; double out; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -247,6 +231,7 @@ void Drive::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s inputSampleR -= iirSampleBR; } //highpass section + fpFlip = !fpFlip; if (inputSampleL > 1.0) inputSampleL = 1.0; @@ -281,25 +266,16 @@ void Drive::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/DrumSlam/DrumSlam.cpp b/plugins/LinuxVST/src/DrumSlam/DrumSlam.cpp index 8a6ae7b..5b88619 100755 --- a/plugins/LinuxVST/src/DrumSlam/DrumSlam.cpp +++ b/plugins/LinuxVST/src/DrumSlam/DrumSlam.cpp @@ -35,12 +35,9 @@ DrumSlam::DrumSlam(audioMasterCallback audioMaster) : iirSampleGR = 0.0; iirSampleHR = 0.0; lastSampleR = 0.0; - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/DrumSlam/DrumSlam.h b/plugins/LinuxVST/src/DrumSlam/DrumSlam.h index 5ec2fda..418282d 100755 --- a/plugins/LinuxVST/src/DrumSlam/DrumSlam.h +++ b/plugins/LinuxVST/src/DrumSlam/DrumSlam.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double iirSampleAL; @@ -80,7 +77,7 @@ private: double iirSampleGR; double iirSampleHR; double lastSampleR; - + bool fpFlip; float A; float B; float C; diff --git a/plugins/LinuxVST/src/DrumSlam/DrumSlamProc.cpp b/plugins/LinuxVST/src/DrumSlam/DrumSlamProc.cpp index 171b353..2e86142 100755 --- a/plugins/LinuxVST/src/DrumSlam/DrumSlamProc.cpp +++ b/plugins/LinuxVST/src/DrumSlam/DrumSlamProc.cpp @@ -25,8 +25,6 @@ void DrumSlam::processReplacing(float **inputs, float **outputs, VstInt32 sample double out = B; double wet = C; double dry = 1.0 - wet; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; while (--sampleFrames >= 0) { @@ -125,6 +123,8 @@ void DrumSlam::processReplacing(float **inputs, float **outputs, VstInt32 sample highSampleL = inputSampleL - iirSampleHL; highSampleR = inputSampleR - iirSampleHR; } + fpFlip = !fpFlip; + //generate the tone bands we're using if (lowSampleL > 1.0) {lowSampleL = 1.0;} if (lowSampleL < -1.0) {lowSampleL = -1.0;} @@ -219,26 +219,14 @@ void DrumSlam::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - float fpTemp; - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -268,8 +256,6 @@ void DrumSlam::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double out = B; double wet = C; double dry = 1.0 - wet; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; while (--sampleFrames >= 0) { @@ -368,6 +354,8 @@ void DrumSlam::processDoubleReplacing(double **inputs, double **outputs, VstInt3 highSampleL = inputSampleL - iirSampleHL; highSampleR = inputSampleR - iirSampleHR; } + fpFlip = !fpFlip; + //generate the tone bands we're using if (lowSampleL > 1.0) {lowSampleL = 1.0;} if (lowSampleL < -1.0) {lowSampleL = -1.0;} @@ -462,26 +450,16 @@ void DrumSlam::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - double fpTemp; - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/DubCenter/DubCenterProc.cpp b/plugins/LinuxVST/src/DubCenter/DubCenterProc.cpp index 75c162b..b0c49a3 100755 --- a/plugins/LinuxVST/src/DubCenter/DubCenterProc.cpp +++ b/plugins/LinuxVST/src/DubCenter/DubCenterProc.cpp @@ -306,18 +306,14 @@ void DubCenter::processReplacing(float **inputs, float **outputs, VstInt32 sampl bflip++; if (bflip < 1 || bflip > 3) bflip = 1; - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -327,12 +323,6 @@ void DubCenter::processReplacing(float **inputs, float **outputs, VstInt32 sampl *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void DubCenter::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -633,18 +623,16 @@ void DubCenter::processDoubleReplacing(double **inputs, double **outputs, VstInt bflip++; if (bflip < 1 || bflip > 3) bflip = 1; - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -654,10 +642,4 @@ void DubCenter::processDoubleReplacing(double **inputs, double **outputs, VstInt *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/LinuxVST/src/DubSub/DubSubProc.cpp b/plugins/LinuxVST/src/DubSub/DubSubProc.cpp index 037480c..7a0349d 100755 --- a/plugins/LinuxVST/src/DubSub/DubSubProc.cpp +++ b/plugins/LinuxVST/src/DubSub/DubSubProc.cpp @@ -392,18 +392,14 @@ void DubSub::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr bflip++; if (bflip < 1 || bflip > 3) bflip = 1; - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -413,12 +409,6 @@ void DubSub::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void DubSub::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -805,18 +795,16 @@ void DubSub::processDoubleReplacing(double **inputs, double **outputs, VstInt32 bflip++; if (bflip < 1 || bflip > 3) bflip = 1; - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -826,10 +814,4 @@ void DubSub::processDoubleReplacing(double **inputs, double **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/LinuxVST/src/DustBunny/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/DustBunny/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/DustBunny/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/DustBunny/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/DustBunny/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..03ccec9 --- /dev/null +++ b/plugins/LinuxVST/src/DustBunny/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/EQ/EQ.cpp b/plugins/LinuxVST/src/EQ/EQ.cpp index ebdadaa..f2e4e01 100755 --- a/plugins/LinuxVST/src/EQ/EQ.cpp +++ b/plugins/LinuxVST/src/EQ/EQ.cpp @@ -111,11 +111,8 @@ EQ::EQ(audioMasterCallback audioMaster) : flip = false; flipthree = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/EQ/EQ.h b/plugins/LinuxVST/src/EQ/EQ.h index 4317a2d..26fade4 100755 --- a/plugins/LinuxVST/src/EQ/EQ.h +++ b/plugins/LinuxVST/src/EQ/EQ.h @@ -59,11 +59,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double lastSampleL; diff --git a/plugins/LinuxVST/src/EQ/EQProc.cpp b/plugins/LinuxVST/src/EQ/EQProc.cpp index 6d994a9..917dc7e 100755 --- a/plugins/LinuxVST/src/EQ/EQProc.cpp +++ b/plugins/LinuxVST/src/EQ/EQProc.cpp @@ -20,9 +20,6 @@ void EQ::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames overallscale = getSampleRate(); compscale = compscale * overallscale; //compscale is the one that's 1 or something like 2.2 for 96K rates - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -434,25 +431,14 @@ void EQ::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames inputSampleR *= outputgain; } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -477,9 +463,6 @@ void EQ::processDoubleReplacing(double **inputs, double **outputs, VstInt32 samp overallscale = getSampleRate(); compscale = compscale * overallscale; //compscale is the one that's 1 or something like 2.2 for 96K rates - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -891,25 +874,16 @@ void EQ::processDoubleReplacing(double **inputs, double **outputs, VstInt32 samp inputSampleR *= outputgain; } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/EdIsDim/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/EdIsDim/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/EdIsDim/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/EdIsDim/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/EdIsDim/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..d170019 --- /dev/null +++ b/plugins/LinuxVST/src/EdIsDim/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/EdIsDim/EdIsDim.cpp b/plugins/LinuxVST/src/EdIsDim/EdIsDim.cpp index 6af5dd4..eb6abd3 100755 --- a/plugins/LinuxVST/src/EdIsDim/EdIsDim.cpp +++ b/plugins/LinuxVST/src/EdIsDim/EdIsDim.cpp @@ -13,11 +13,8 @@ EdIsDim::EdIsDim(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, kNumPrograms, kNumParameters) { A = 0.5; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/EdIsDim/EdIsDim.h b/plugins/LinuxVST/src/EdIsDim/EdIsDim.h index 8c51883..4f62705 100755 --- a/plugins/LinuxVST/src/EdIsDim/EdIsDim.h +++ b/plugins/LinuxVST/src/EdIsDim/EdIsDim.h @@ -52,11 +52,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/EdIsDim/EdIsDimProc.cpp b/plugins/LinuxVST/src/EdIsDim/EdIsDimProc.cpp index 8ee927d..0d033eb 100755 --- a/plugins/LinuxVST/src/EdIsDim/EdIsDimProc.cpp +++ b/plugins/LinuxVST/src/EdIsDim/EdIsDimProc.cpp @@ -14,9 +14,6 @@ void EdIsDim::processReplacing(float **inputs, float **outputs, VstInt32 sampleF float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -75,25 +72,14 @@ void EdIsDim::processReplacing(float **inputs, float **outputs, VstInt32 sampleF mid = (inputSampleL+inputSampleR)/2.0; side = (inputSampleL-inputSampleR)/2.0; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = mid; - fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLA; - fpTemp = side; - fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRA; - } - else { - fpTemp = mid; - fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLB; - fpTemp = side; - fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)mid, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + mid += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)side, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + side += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = mid; *out2 = side; @@ -112,9 +98,6 @@ void EdIsDim::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -174,25 +157,16 @@ void EdIsDim::processDoubleReplacing(double **inputs, double **outputs, VstInt32 mid = (inputSampleL+inputSampleR)/2.0; side = (inputSampleL-inputSampleR)/2.0; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = mid; - fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLA; - fpTemp = side; - fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRA; - } - else { - fpTemp = mid; - fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLB; - fpTemp = side; - fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)mid, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + mid += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)side, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + side += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = mid; *out2 = side; diff --git a/plugins/LinuxVST/src/ElectroHat/ElectroHat.cpp b/plugins/LinuxVST/src/ElectroHat/ElectroHat.cpp index 33d1058..6be41e4 100755 --- a/plugins/LinuxVST/src/ElectroHat/ElectroHat.cpp +++ b/plugins/LinuxVST/src/ElectroHat/ElectroHat.cpp @@ -25,11 +25,8 @@ ElectroHat::ElectroHat(audioMasterCallback audioMaster) : lok = 0; flip = true; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/ElectroHat/ElectroHat.h b/plugins/LinuxVST/src/ElectroHat/ElectroHat.h index e8aa325..85315cd 100755 --- a/plugins/LinuxVST/src/ElectroHat/ElectroHat.h +++ b/plugins/LinuxVST/src/ElectroHat/ElectroHat.h @@ -56,11 +56,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double storedSampleL; diff --git a/plugins/LinuxVST/src/ElectroHat/ElectroHatProc.cpp b/plugins/LinuxVST/src/ElectroHat/ElectroHatProc.cpp index 69b1a00..ee5a307 100755 --- a/plugins/LinuxVST/src/ElectroHat/ElectroHatProc.cpp +++ b/plugins/LinuxVST/src/ElectroHat/ElectroHatProc.cpp @@ -20,9 +20,6 @@ void ElectroHat::processReplacing(float **inputs, float **outputs, VstInt32 samp bool highSample = false; if (getSampleRate() > 64000) highSample = true; //we will go to another dither for 88 and 96K - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double drySampleL; double drySampleR; @@ -126,25 +123,14 @@ void ElectroHat::processReplacing(float **inputs, float **outputs, VstInt32 samp inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -169,9 +155,6 @@ void ElectroHat::processDoubleReplacing(double **inputs, double **outputs, VstIn bool highSample = false; if (getSampleRate() > 64000) highSample = true; //we will go to another dither for 88 and 96K - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double drySampleL; double drySampleR; @@ -275,25 +258,16 @@ void ElectroHat::processDoubleReplacing(double **inputs, double **outputs, VstIn inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Energy/EnergyProc.cpp b/plugins/LinuxVST/src/Energy/EnergyProc.cpp index a72b868..a0a86f8 100755 --- a/plugins/LinuxVST/src/Energy/EnergyProc.cpp +++ b/plugins/LinuxVST/src/Energy/EnergyProc.cpp @@ -742,18 +742,14 @@ void Energy::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr //we don't need a drySample because we never touched inputSample //so, this provides the inv/dry/wet control all by itself - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -763,12 +759,6 @@ void Energy::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Energy::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -1506,18 +1496,16 @@ void Energy::processDoubleReplacing(double **inputs, double **outputs, VstInt32 //we don't need a drySample because we never touched inputSample //so, this provides the inv/dry/wet control all by itself - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -1527,10 +1515,4 @@ void Energy::processDoubleReplacing(double **inputs, double **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/LinuxVST/src/Ensemble/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Ensemble/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Ensemble/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Ensemble/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Ensemble/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..6022e68 --- /dev/null +++ b/plugins/LinuxVST/src/Ensemble/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Ensemble/Ensemble.cpp b/plugins/LinuxVST/src/Ensemble/Ensemble.cpp index be624b2..b90bf6e 100755 --- a/plugins/LinuxVST/src/Ensemble/Ensemble.cpp +++ b/plugins/LinuxVST/src/Ensemble/Ensemble.cpp @@ -28,12 +28,9 @@ Ensemble::Ensemble(audioMasterCallback audioMaster) : airEvenR = 0.0; airOddR = 0.0; airFactorR = 0.0; - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Ensemble/Ensemble.h b/plugins/LinuxVST/src/Ensemble/Ensemble.h index 32ba8c0..7697d93 100755 --- a/plugins/LinuxVST/src/Ensemble/Ensemble.h +++ b/plugins/LinuxVST/src/Ensemble/Ensemble.h @@ -55,11 +55,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff const static int totalsamples = 65540; float dL[totalsamples]; @@ -74,7 +71,7 @@ private: double airEvenR; double airOddR; double airFactorR; - + bool fpFlip; float A; float B; float C; diff --git a/plugins/LinuxVST/src/Ensemble/EnsembleProc.cpp b/plugins/LinuxVST/src/Ensemble/EnsembleProc.cpp index 679e868..e9a3a43 100755 --- a/plugins/LinuxVST/src/Ensemble/EnsembleProc.cpp +++ b/plugins/LinuxVST/src/Ensemble/EnsembleProc.cpp @@ -37,9 +37,6 @@ void Ensemble::processReplacing(float **inputs, float **outputs, VstInt32 sample double tempL; double tempR; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -117,7 +114,8 @@ void Ensemble::processReplacing(float **inputs, float **outputs, VstInt32 sample airPrevR = inputSampleR; inputSampleR += (airFactorR*brighten); //air, compensates for loss of highs in flanger's interpolation - + fpFlip = !fpFlip; + if (gcount < 1 || gcount > 32767) {gcount = 32767;} count = gcount; dL[count+32767] = dL[count] = tempL = inputSampleL; @@ -155,25 +153,14 @@ void Ensemble::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -215,9 +202,6 @@ void Ensemble::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double tempL; double tempR; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -295,6 +279,7 @@ void Ensemble::processDoubleReplacing(double **inputs, double **outputs, VstInt3 airPrevR = inputSampleR; inputSampleR += (airFactorR*brighten); //air, compensates for loss of highs in flanger's interpolation + fpFlip = !fpFlip; if (gcount < 1 || gcount > 32767) {gcount = 32767;} count = gcount; @@ -333,25 +318,16 @@ void Ensemble::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/EveryTrim/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/EveryTrim/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/EveryTrim/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/EveryTrim/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/EveryTrim/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..649aa5c --- /dev/null +++ b/plugins/LinuxVST/src/EveryTrim/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/EveryTrim/EveryTrim.cpp b/plugins/LinuxVST/src/EveryTrim/EveryTrim.cpp index 1e81d35..b0a98d4 100755 --- a/plugins/LinuxVST/src/EveryTrim/EveryTrim.cpp +++ b/plugins/LinuxVST/src/EveryTrim/EveryTrim.cpp @@ -17,11 +17,8 @@ EveryTrim::EveryTrim(audioMasterCallback audioMaster) : C = 0.5; D = 0.5; E = 0.5; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/EveryTrim/EveryTrim.h b/plugins/LinuxVST/src/EveryTrim/EveryTrim.h index 28d9c27..4efc3cd 100755 --- a/plugins/LinuxVST/src/EveryTrim/EveryTrim.h +++ b/plugins/LinuxVST/src/EveryTrim/EveryTrim.h @@ -56,11 +56,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/EveryTrim/EveryTrimProc.cpp b/plugins/LinuxVST/src/EveryTrim/EveryTrimProc.cpp index 30d764f..3c30eda 100755 --- a/plugins/LinuxVST/src/EveryTrim/EveryTrimProc.cpp +++ b/plugins/LinuxVST/src/EveryTrim/EveryTrimProc.cpp @@ -14,9 +14,6 @@ void EveryTrim::processReplacing(float **inputs, float **outputs, VstInt32 sampl float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double leftgain = pow(10.0,((A*24.0)-12.0)/20.0); double rightgain = pow(10.0,((B*24.0)-12.0)/20.0); @@ -83,25 +80,14 @@ void EveryTrim::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleR = (mid-side) * rightgain; //contains mastergain and the gain trim fixing the mid/side - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -120,9 +106,6 @@ void EveryTrim::processDoubleReplacing(double **inputs, double **outputs, VstInt double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double leftgain = pow(10.0,((A*24.0)-12.0)/20.0); double rightgain = pow(10.0,((B*24.0)-12.0)/20.0); @@ -189,25 +172,16 @@ void EveryTrim::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleR = (mid-side) * rightgain; //contains mastergain and the gain trim fixing the mid/side - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/FathomFive/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/FathomFive/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/FathomFive/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/FathomFive/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/FathomFive/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..42015e9 --- /dev/null +++ b/plugins/LinuxVST/src/FathomFive/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/FathomFive/FathomFive.cpp b/plugins/LinuxVST/src/FathomFive/FathomFive.cpp index 8cd3f52..fd04b6d 100755 --- a/plugins/LinuxVST/src/FathomFive/FathomFive.cpp +++ b/plugins/LinuxVST/src/FathomFive/FathomFive.cpp @@ -100,16 +100,6 @@ void FathomFive::setParameter(VstInt32 index, float value) { //variables can also be set in the processreplacing loop, and there they'll be set every buffersize //here they're set when a parameter's actually changed, which should be less frequent, but //you must use global variables in the FathomFive.h file to do it. -// switch((VstInt32)( D * 3.999 )) -// { -// case 0: fpFlip = true; break; //choice A -// case 1: fpFlip = false; break; //choice B -// case 2: break; //choice C -// case 3: break; //choice D -// default: break; //should not happen -// } - //this relates to using D as a 'popup' and changing things based on that switch. - //we are using fpFlip just because it's already there globally, as an example. } float FathomFive::getParameter(VstInt32 index) { diff --git a/plugins/LinuxVST/src/Floor/FloorProc.cpp b/plugins/LinuxVST/src/Floor/FloorProc.cpp index 69a2ccb..865446b 100755 --- a/plugins/LinuxVST/src/Floor/FloorProc.cpp +++ b/plugins/LinuxVST/src/Floor/FloorProc.cpp @@ -247,18 +247,14 @@ void Floor::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -268,12 +264,6 @@ void Floor::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Floor::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -516,18 +506,16 @@ void Floor::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -537,10 +525,4 @@ void Floor::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/LinuxVST/src/Fracture/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Fracture/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Fracture/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Fracture/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Fracture/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..f5e4242 --- /dev/null +++ b/plugins/LinuxVST/src/Fracture/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Fracture/Fracture.cpp b/plugins/LinuxVST/src/Fracture/Fracture.cpp index 255475a..03f3b19 100755 --- a/plugins/LinuxVST/src/Fracture/Fracture.cpp +++ b/plugins/LinuxVST/src/Fracture/Fracture.cpp @@ -16,11 +16,8 @@ Fracture::Fracture(audioMasterCallback audioMaster) : B = 0.5; //2 from 1 to 3: (B*2.999)+1 C = 1.0; D = 1.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Fracture/Fracture.h b/plugins/LinuxVST/src/Fracture/Fracture.h index 659f94b..49d2718 100755 --- a/plugins/LinuxVST/src/Fracture/Fracture.h +++ b/plugins/LinuxVST/src/Fracture/Fracture.h @@ -55,11 +55,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/Fracture/FractureProc.cpp b/plugins/LinuxVST/src/Fracture/FractureProc.cpp index 8e217d8..5c1aaa9 100755 --- a/plugins/LinuxVST/src/Fracture/FractureProc.cpp +++ b/plugins/LinuxVST/src/Fracture/FractureProc.cpp @@ -14,9 +14,6 @@ void Fracture::processReplacing(float **inputs, float **outputs, VstInt32 sample float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double density = A*4; double fracture = (((B*2.999)+1)*3.14159265358979); @@ -101,25 +98,14 @@ void Fracture::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleL = (drySampleL * dry)+(inputSampleL * wet); inputSampleR = (drySampleR * dry)+(inputSampleR * wet); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -141,9 +127,6 @@ void Fracture::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double density = A*4; double fracture = (((B*2.999)+1)*3.14159265358979); @@ -228,25 +211,16 @@ void Fracture::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleL = (drySampleL * dry)+(inputSampleL * wet); inputSampleR = (drySampleR * dry)+(inputSampleR * wet); - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/FromTape/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/FromTape/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/FromTape/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/FromTape/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/FromTape/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..f635737 --- /dev/null +++ b/plugins/LinuxVST/src/FromTape/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/FromTape/FromTape.cpp b/plugins/LinuxVST/src/FromTape/FromTape.cpp index 55c5ced..40b7876 100755 --- a/plugins/LinuxVST/src/FromTape/FromTape.cpp +++ b/plugins/LinuxVST/src/FromTape/FromTape.cpp @@ -82,11 +82,8 @@ FromTape::FromTape(audioMasterCallback audioMaster) : flip = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/FromTape/FromTape.h b/plugins/LinuxVST/src/FromTape/FromTape.h index 376b767..40efabc 100755 --- a/plugins/LinuxVST/src/FromTape/FromTape.h +++ b/plugins/LinuxVST/src/FromTape/FromTape.h @@ -120,11 +120,8 @@ private: double iirSampleYR; double iirSampleZR; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/FromTape/FromTapeProc.cpp b/plugins/LinuxVST/src/FromTape/FromTapeProc.cpp index 42753e5..2d268ef 100755 --- a/plugins/LinuxVST/src/FromTape/FromTapeProc.cpp +++ b/plugins/LinuxVST/src/FromTape/FromTapeProc.cpp @@ -37,9 +37,6 @@ void FromTape::processReplacing(float **inputs, float **outputs, VstInt32 sample double drySampleR; double randy; double invrandy; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -224,25 +221,14 @@ void FromTape::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -284,9 +270,6 @@ void FromTape::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double drySampleR; double randy; double invrandy; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -471,25 +454,16 @@ void FromTape::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Gatelope/GatelopeProc.cpp b/plugins/LinuxVST/src/Gatelope/GatelopeProc.cpp index b32bddb..f429042 100755 --- a/plugins/LinuxVST/src/Gatelope/GatelopeProc.cpp +++ b/plugins/LinuxVST/src/Gatelope/GatelopeProc.cpp @@ -196,18 +196,14 @@ void Gatelope::processReplacing(float **inputs, float **outputs, VstInt32 sample flip = !flip; - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -217,12 +213,6 @@ void Gatelope::processReplacing(float **inputs, float **outputs, VstInt32 sample *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Gatelope::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -414,18 +404,16 @@ void Gatelope::processDoubleReplacing(double **inputs, double **outputs, VstInt3 flip = !flip; - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -435,10 +423,4 @@ void Gatelope::processDoubleReplacing(double **inputs, double **outputs, VstInt3 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/LinuxVST/src/Golem/Golem.cpp b/plugins/LinuxVST/src/Golem/Golem.cpp index 8f63b48..c99c5cd 100755 --- a/plugins/LinuxVST/src/Golem/Golem.cpp +++ b/plugins/LinuxVST/src/Golem/Golem.cpp @@ -17,10 +17,8 @@ Golem::Golem(audioMasterCallback audioMaster) : C = 0.0; for(count = 0; count < 4098; count++) {p[count] = 0.0;} count = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; flip = true; //this is reset: values being initialized only once. Startup values, whatever they are. diff --git a/plugins/LinuxVST/src/Golem/Golem.h b/plugins/LinuxVST/src/Golem/Golem.h index 8bb81d8..e02ab78 100755 --- a/plugins/LinuxVST/src/Golem/Golem.h +++ b/plugins/LinuxVST/src/Golem/Golem.h @@ -54,10 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; + long double fpNShapeL; + long double fpNShapeR; bool flip; //default stuff double p[4099]; diff --git a/plugins/LinuxVST/src/Golem/GolemProc.cpp b/plugins/LinuxVST/src/Golem/GolemProc.cpp index 9235869..1d7e9f5 100755 --- a/plugins/LinuxVST/src/Golem/GolemProc.cpp +++ b/plugins/LinuxVST/src/Golem/GolemProc.cpp @@ -14,9 +14,6 @@ void Golem::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; int phase = (int)((C * 5.999)+1); double balance = ((A*2.0)-1.0) / 2.0; double gainL = 0.5 - balance; @@ -115,25 +112,14 @@ void Golem::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra inputSampleR = inputSampleL; //the output is totally mono - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -152,9 +138,6 @@ void Golem::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; int phase = (int)((C * 5.999)+1); double balance = ((A*2.0)-1.0) / 2.0; double gainL = 0.5 - balance; @@ -253,25 +236,16 @@ void Golem::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s inputSampleR = inputSampleL; //the output is totally mono - //noise shaping to 64-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - flip = !flip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/GrooveWear/GrooveWear.cpp b/plugins/LinuxVST/src/GrooveWear/GrooveWear.cpp index e553daa..cbe1fc5 100644..100755 --- a/plugins/LinuxVST/src/GrooveWear/GrooveWear.cpp +++ b/plugins/LinuxVST/src/GrooveWear/GrooveWear.cpp @@ -36,11 +36,8 @@ GrooveWear::GrooveWear(audioMasterCallback audioMaster) : cMidPrevR = 0.0; dMidPrevR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/GrooveWear/GrooveWear.h b/plugins/LinuxVST/src/GrooveWear/GrooveWear.h index 7b933c2..4bf9745 100644..100755 --- a/plugins/LinuxVST/src/GrooveWear/GrooveWear.h +++ b/plugins/LinuxVST/src/GrooveWear/GrooveWear.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double aMidL[21]; diff --git a/plugins/LinuxVST/src/GrooveWear/GrooveWearProc.cpp b/plugins/LinuxVST/src/GrooveWear/GrooveWearProc.cpp index a22f6df..e663203 100644..100755 --- a/plugins/LinuxVST/src/GrooveWear/GrooveWearProc.cpp +++ b/plugins/LinuxVST/src/GrooveWear/GrooveWearProc.cpp @@ -14,9 +14,6 @@ void GrooveWear::processReplacing(float **inputs, float **outputs, VstInt32 samp float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double overallscale = (pow(A,2)*19.0)+1.0; double gain = overallscale; @@ -433,25 +430,14 @@ void GrooveWear::processReplacing(float **inputs, float **outputs, VstInt32 samp drySampleR = inputSampleR; } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -470,9 +456,6 @@ void GrooveWear::processDoubleReplacing(double **inputs, double **outputs, VstIn double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double overallscale = (pow(A,2)*19.0)+1.0; double gain = overallscale; @@ -889,25 +872,16 @@ void GrooveWear::processDoubleReplacing(double **inputs, double **outputs, VstIn drySampleR = inputSampleR; } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/GuitarConditioner/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/GuitarConditioner/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/GuitarConditioner/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/GuitarConditioner/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/GuitarConditioner/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..9e37109 --- /dev/null +++ b/plugins/LinuxVST/src/GuitarConditioner/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/GuitarConditioner/GuitarConditioner.cpp b/plugins/LinuxVST/src/GuitarConditioner/GuitarConditioner.cpp index 8f3ccfc..b0388ab 100755 --- a/plugins/LinuxVST/src/GuitarConditioner/GuitarConditioner.cpp +++ b/plugins/LinuxVST/src/GuitarConditioner/GuitarConditioner.cpp @@ -12,12 +12,9 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new G GuitarConditioner::GuitarConditioner(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, kNumPrograms, kNumParameters) { - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; fpFlip = true; - lastSampleTL = 0.0; lastSampleBL = 0.0; //for Slews. T for treble, B for bass iirSampleTAL = 0.0; diff --git a/plugins/LinuxVST/src/GuitarConditioner/GuitarConditioner.h b/plugins/LinuxVST/src/GuitarConditioner/GuitarConditioner.h index 7bd73ab..3be09e1 100755 --- a/plugins/LinuxVST/src/GuitarConditioner/GuitarConditioner.h +++ b/plugins/LinuxVST/src/GuitarConditioner/GuitarConditioner.h @@ -49,13 +49,10 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff - + bool fpFlip; double lastSampleTL; double lastSampleBL; //for Slews double iirSampleTAL; diff --git a/plugins/LinuxVST/src/GuitarConditioner/GuitarConditionerProc.cpp b/plugins/LinuxVST/src/GuitarConditioner/GuitarConditionerProc.cpp index 83970f2..b25d600 100755 --- a/plugins/LinuxVST/src/GuitarConditioner/GuitarConditionerProc.cpp +++ b/plugins/LinuxVST/src/GuitarConditioner/GuitarConditionerProc.cpp @@ -17,9 +17,6 @@ void GuitarConditioner::processReplacing(float **inputs, float **outputs, VstInt double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -164,26 +161,18 @@ void GuitarConditioner::processReplacing(float **inputs, float **outputs, VstInt lastSampleBR = bassR; //bassR slew inputSampleL = trebleL + bassL; //final merge - inputSampleR = trebleR + bassR; //final merge - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } + inputSampleR = trebleR + bassR; //final merge fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -205,9 +194,6 @@ void GuitarConditioner::processDoubleReplacing(double **inputs, double **outputs double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -353,26 +339,19 @@ void GuitarConditioner::processDoubleReplacing(double **inputs, double **outputs lastSampleBR = bassR; //bassR slew inputSampleL = trebleL + bassL; //final merge - inputSampleR = trebleR + bassR; //final merge - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } + inputSampleR = trebleR + bassR; //final merge fpFlip = !fpFlip; - //end noise shaping on 64 bit output + + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/HardVacuum/HardVacuum.cpp b/plugins/LinuxVST/src/HardVacuum/HardVacuum.cpp index 2ad1a4a..9c14f89 100755 --- a/plugins/LinuxVST/src/HardVacuum/HardVacuum.cpp +++ b/plugins/LinuxVST/src/HardVacuum/HardVacuum.cpp @@ -19,11 +19,8 @@ HardVacuum::HardVacuum(audioMasterCallback audioMaster) : E = 1.0; lastSampleL = 0.0; lastSampleR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/HardVacuum/HardVacuum.h b/plugins/LinuxVST/src/HardVacuum/HardVacuum.h index 6321df6..7f4c098 100755 --- a/plugins/LinuxVST/src/HardVacuum/HardVacuum.h +++ b/plugins/LinuxVST/src/HardVacuum/HardVacuum.h @@ -56,11 +56,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double lastSampleL; diff --git a/plugins/LinuxVST/src/HardVacuum/HardVacuumProc.cpp b/plugins/LinuxVST/src/HardVacuum/HardVacuumProc.cpp index f8fe4fd..e0e07e2 100755 --- a/plugins/LinuxVST/src/HardVacuum/HardVacuumProc.cpp +++ b/plugins/LinuxVST/src/HardVacuum/HardVacuumProc.cpp @@ -33,9 +33,6 @@ void HardVacuum::processReplacing(float **inputs, float **outputs, VstInt32 samp double skewL; double skewR; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double drySampleL; double drySampleR; @@ -176,25 +173,14 @@ void HardVacuum::processReplacing(float **inputs, float **outputs, VstInt32 samp inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -232,9 +218,6 @@ void HardVacuum::processDoubleReplacing(double **inputs, double **outputs, VstIn double skewL; double skewR; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double drySampleL; double drySampleR; @@ -376,25 +359,16 @@ void HardVacuum::processDoubleReplacing(double **inputs, double **outputs, VstIn inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/HermeTrim/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/HermeTrim/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/HermeTrim/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/HermeTrim/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/HermeTrim/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..d06b803 --- /dev/null +++ b/plugins/LinuxVST/src/HermeTrim/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/HermeTrim/HermeTrim.cpp b/plugins/LinuxVST/src/HermeTrim/HermeTrim.cpp index 562df2c..117cc45 100755 --- a/plugins/LinuxVST/src/HermeTrim/HermeTrim.cpp +++ b/plugins/LinuxVST/src/HermeTrim/HermeTrim.cpp @@ -17,11 +17,8 @@ HermeTrim::HermeTrim(audioMasterCallback audioMaster) : C = 0.5; D = 0.5; E = 0.5; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/HermeTrim/HermeTrim.h b/plugins/LinuxVST/src/HermeTrim/HermeTrim.h index b8503ca..f0bc8ed 100755 --- a/plugins/LinuxVST/src/HermeTrim/HermeTrim.h +++ b/plugins/LinuxVST/src/HermeTrim/HermeTrim.h @@ -56,11 +56,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/HermeTrim/HermeTrimProc.cpp b/plugins/LinuxVST/src/HermeTrim/HermeTrimProc.cpp index d920843..66d3144 100755 --- a/plugins/LinuxVST/src/HermeTrim/HermeTrimProc.cpp +++ b/plugins/LinuxVST/src/HermeTrim/HermeTrimProc.cpp @@ -14,9 +14,6 @@ void HermeTrim::processReplacing(float **inputs, float **outputs, VstInt32 sampl float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double leftgain = pow(10.0,((A*3.0)-1.5)/20.0); double rightgain = pow(10.0,((B*3.0)-1.5)/20.0); @@ -83,25 +80,14 @@ void HermeTrim::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleR = (mid-side) * rightgain; //contains mastergain and the gain trim fixing the mid/side - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -120,9 +106,6 @@ void HermeTrim::processDoubleReplacing(double **inputs, double **outputs, VstInt double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double leftgain = pow(10.0,((A*3.0)-1.5)/20.0); double rightgain = pow(10.0,((B*3.0)-1.5)/20.0); @@ -189,25 +172,16 @@ void HermeTrim::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleR = (mid-side) * rightgain; //contains mastergain and the gain trim fixing the mid/side - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Hermepass/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Hermepass/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Hermepass/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Hermepass/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Hermepass/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..2a195c6 --- /dev/null +++ b/plugins/LinuxVST/src/Hermepass/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Hermepass/Hermepass.cpp b/plugins/LinuxVST/src/Hermepass/Hermepass.cpp index 3bfb1aa..4e4a532 100755 --- a/plugins/LinuxVST/src/Hermepass/Hermepass.cpp +++ b/plugins/LinuxVST/src/Hermepass/Hermepass.cpp @@ -32,12 +32,9 @@ Hermepass::Hermepass(audioMasterCallback audioMaster) : iirFR = 0.0; iirGR = 0.0; iirHR = 0.0; - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Hermepass/Hermepass.h b/plugins/LinuxVST/src/Hermepass/Hermepass.h index 4f29497..1000bb9 100755 --- a/plugins/LinuxVST/src/Hermepass/Hermepass.h +++ b/plugins/LinuxVST/src/Hermepass/Hermepass.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double iirAL; double iirBL; //first stage is the flipping one, for lowest slope. It is always engaged, and is the highest one @@ -76,7 +73,7 @@ private: double iirFR; //our slope control will have a pow() on it so that the high orders are way to the right side double iirGR; double iirHR; //seven poles max, and the final pole is always at 20hz directly. - + bool fpFlip; float A; diff --git a/plugins/LinuxVST/src/Hermepass/HermepassProc.cpp b/plugins/LinuxVST/src/Hermepass/HermepassProc.cpp index 01b35aa..fddffe3 100755 --- a/plugins/LinuxVST/src/Hermepass/HermepassProc.cpp +++ b/plugins/LinuxVST/src/Hermepass/HermepassProc.cpp @@ -17,10 +17,8 @@ void Hermepass::processReplacing(float **inputs, float **outputs, VstInt32 sampl double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + long double fpNew = 1.0 - fpOld; double rangescale = 0.1 / overallscale; double cutoff = pow(A,3); @@ -175,26 +173,17 @@ void Hermepass::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleR -= correction; //end R channel - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -216,10 +205,8 @@ void Hermepass::processDoubleReplacing(double **inputs, double **outputs, VstInt double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing long double fpOld = 0.618033988749894848204586; //golden ratio! long double fpNew = 1.0 - fpOld; - double rangescale = 0.1 / overallscale; double cutoff = pow(A,3); @@ -374,26 +361,19 @@ void Hermepass::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleR -= correction; //end R channel - - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } fpFlip = !fpFlip; - //end noise shaping on 64 bit output + + + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/HighImpact/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/HighImpact/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/HighImpact/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/HighImpact/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/HighImpact/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..56b69ec --- /dev/null +++ b/plugins/LinuxVST/src/HighImpact/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/HighImpact/HighImpact.cpp b/plugins/LinuxVST/src/HighImpact/HighImpact.cpp index 0944b18..960d80c 100755 --- a/plugins/LinuxVST/src/HighImpact/HighImpact.cpp +++ b/plugins/LinuxVST/src/HighImpact/HighImpact.cpp @@ -17,11 +17,8 @@ HighImpact::HighImpact(audioMasterCallback audioMaster) : C = 0.0; lastSampleL = 0.0; lastSampleR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/HighImpact/HighImpact.h b/plugins/LinuxVST/src/HighImpact/HighImpact.h index 9c7a4a0..a57230b 100755 --- a/plugins/LinuxVST/src/HighImpact/HighImpact.h +++ b/plugins/LinuxVST/src/HighImpact/HighImpact.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double lastSampleL; diff --git a/plugins/LinuxVST/src/HighImpact/HighImpactProc.cpp b/plugins/LinuxVST/src/HighImpact/HighImpactProc.cpp index 037bbe9..f24804a 100755 --- a/plugins/LinuxVST/src/HighImpact/HighImpactProc.cpp +++ b/plugins/LinuxVST/src/HighImpact/HighImpactProc.cpp @@ -14,9 +14,6 @@ void HighImpact::processReplacing(float **inputs, float **outputs, VstInt32 samp float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -161,25 +158,14 @@ void HighImpact::processReplacing(float **inputs, float **outputs, VstInt32 samp //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -201,9 +187,6 @@ void HighImpact::processDoubleReplacing(double **inputs, double **outputs, VstIn double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -348,25 +331,16 @@ void HighImpact::processDoubleReplacing(double **inputs, double **outputs, VstIn //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Highpass/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Highpass/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Highpass/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Highpass/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Highpass/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..9f7300c --- /dev/null +++ b/plugins/LinuxVST/src/Highpass/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Highpass/Highpass.cpp b/plugins/LinuxVST/src/Highpass/Highpass.cpp index ed43f9d..86ebe24 100755 --- a/plugins/LinuxVST/src/Highpass/Highpass.cpp +++ b/plugins/LinuxVST/src/Highpass/Highpass.cpp @@ -19,10 +19,8 @@ Highpass::Highpass(audioMasterCallback audioMaster) : iirSampleBL = 0.0; iirSampleAR = 0.0; iirSampleBR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; fpFlip = true; //this is reset: values being initialized only once. Startup values, whatever they are. diff --git a/plugins/LinuxVST/src/Highpass/Highpass.h b/plugins/LinuxVST/src/Highpass/Highpass.h index 03d8609..673f951 100755 --- a/plugins/LinuxVST/src/Highpass/Highpass.h +++ b/plugins/LinuxVST/src/Highpass/Highpass.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; @@ -68,7 +65,7 @@ private: double iirSampleBL; double iirSampleAR; double iirSampleBR; - + bool fpFlip; }; #endif diff --git a/plugins/LinuxVST/src/Highpass/HighpassProc.cpp b/plugins/LinuxVST/src/Highpass/HighpassProc.cpp index b1e7de9..371ed57 100755 --- a/plugins/LinuxVST/src/Highpass/HighpassProc.cpp +++ b/plugins/LinuxVST/src/Highpass/HighpassProc.cpp @@ -26,9 +26,6 @@ void Highpass::processReplacing(float **inputs, float **outputs, VstInt32 sample double inputSampleR; double outputSampleL; double outputSampleR; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; iirAmount += (iirAmount * tight * tight); if (tight > 0) tight /= 1.5; @@ -114,33 +111,21 @@ void Highpass::processReplacing(float **inputs, float **outputs, VstInt32 sample iirSampleBR = (iirSampleBR * (1 - (offset * iirAmount))) + (inputSampleR * (offset * iirAmount)); outputSampleR = outputSampleR - iirSampleBR; } + fpFlip = !fpFlip; if (wet < 1.0) outputSampleL = (outputSampleL * wet) + (inputSampleL * dry); if (wet < 1.0) outputSampleR = (outputSampleR * wet) + (inputSampleR * dry); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = outputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((outputSampleL-fpTemp)*fpNew); - outputSampleL += fpNShapeLA; - - fpTemp = outputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((outputSampleR-fpTemp)*fpNew); - outputSampleR += fpNShapeRA; - } - else { - fpTemp = outputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((outputSampleL-fpTemp)*fpNew); - outputSampleL += fpNShapeLB; - - fpTemp = outputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((outputSampleR-fpTemp)*fpNew); - outputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = outputSampleL; *out2 = outputSampleR; @@ -171,9 +156,6 @@ void Highpass::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double inputSampleR; double outputSampleL; double outputSampleR; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; iirAmount += (iirAmount * tight * tight); if (tight > 0) tight /= 1.5; @@ -259,33 +241,23 @@ void Highpass::processDoubleReplacing(double **inputs, double **outputs, VstInt3 iirSampleBR = (iirSampleBR * (1 - (offset * iirAmount))) + (inputSampleR * (offset * iirAmount)); outputSampleR = outputSampleR - iirSampleBR; } + fpFlip = !fpFlip; if (wet < 1.0) outputSampleL = (outputSampleL * wet) + (inputSampleL * dry); if (wet < 1.0) outputSampleR = (outputSampleR * wet) + (inputSampleR * dry); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = outputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((outputSampleL-fpTemp)*fpNew); - outputSampleL += fpNShapeLA; - - fpTemp = outputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((outputSampleR-fpTemp)*fpNew); - outputSampleR += fpNShapeRA; - } - else { - fpTemp = outputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((outputSampleL-fpTemp)*fpNew); - outputSampleL += fpNShapeLB; - - fpTemp = outputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((outputSampleR-fpTemp)*fpNew); - outputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = outputSampleL; *out2 = outputSampleR; diff --git a/plugins/LinuxVST/src/Hombre/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Hombre/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Hombre/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Hombre/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Hombre/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..1c81394 --- /dev/null +++ b/plugins/LinuxVST/src/Hombre/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Hombre/Hombre.cpp b/plugins/LinuxVST/src/Hombre/Hombre.cpp index 9ef8844..8b03ed1 100755 --- a/plugins/LinuxVST/src/Hombre/Hombre.cpp +++ b/plugins/LinuxVST/src/Hombre/Hombre.cpp @@ -17,11 +17,8 @@ Hombre::Hombre(audioMasterCallback audioMaster) : for(int count = 0; count < 4000; count++) {pL[count] = 0.0; pR[count] = 0.0;} gcount = 0; slide = 0.421; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Hombre/Hombre.h b/plugins/LinuxVST/src/Hombre/Hombre.h index 94e29b1..e23f6f3 100755 --- a/plugins/LinuxVST/src/Hombre/Hombre.h +++ b/plugins/LinuxVST/src/Hombre/Hombre.h @@ -58,11 +58,8 @@ private: double slide; int gcount; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/Hombre/HombreProc.cpp b/plugins/LinuxVST/src/Hombre/HombreProc.cpp index 01e08bd..16bf513 100755 --- a/plugins/LinuxVST/src/Hombre/HombreProc.cpp +++ b/plugins/LinuxVST/src/Hombre/HombreProc.cpp @@ -17,9 +17,6 @@ void Hombre::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double target = A; double offsetA; @@ -134,25 +131,14 @@ void Hombre::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -174,9 +160,6 @@ void Hombre::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double target = A; double offsetA; @@ -291,25 +274,16 @@ void Hombre::processDoubleReplacing(double **inputs, double **outputs, VstInt32 inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/IronOxide5/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/IronOxide5/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/IronOxide5/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/IronOxide5/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/IronOxide5/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..171a825 --- /dev/null +++ b/plugins/LinuxVST/src/IronOxide5/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/IronOxide5/IronOxide5.cpp b/plugins/LinuxVST/src/IronOxide5/IronOxide5.cpp index 2d7c84f..914f53b 100755 --- a/plugins/LinuxVST/src/IronOxide5/IronOxide5.cpp +++ b/plugins/LinuxVST/src/IronOxide5/IronOxide5.cpp @@ -45,11 +45,8 @@ IronOxide5::IronOxide5(audioMasterCallback audioMaster) : rateof = 0.5; nextmax = 0.5; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/IronOxide5/IronOxide5.h b/plugins/LinuxVST/src/IronOxide5/IronOxide5.h index a7cad5d..82d4c9a 100755 --- a/plugins/LinuxVST/src/IronOxide5/IronOxide5.h +++ b/plugins/LinuxVST/src/IronOxide5/IronOxide5.h @@ -101,11 +101,8 @@ private: double nextmax; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/IronOxide5/IronOxide5Proc.cpp b/plugins/LinuxVST/src/IronOxide5/IronOxide5Proc.cpp index c0fbb35..e42d69f 100755 --- a/plugins/LinuxVST/src/IronOxide5/IronOxide5Proc.cpp +++ b/plugins/LinuxVST/src/IronOxide5/IronOxide5Proc.cpp @@ -17,9 +17,6 @@ void IronOxide5::processReplacing(float **inputs, float **outputs, VstInt32 samp double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = pow(10.0,((A*36.0)-18.0)/20.0); double outputgain = pow(10.0,((F*36.0)-18.0)/20.0); @@ -422,25 +419,14 @@ void IronOxide5::processReplacing(float **inputs, float **outputs, VstInt32 samp } //end invdrywet block with outputgain - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -462,9 +448,6 @@ void IronOxide5::processDoubleReplacing(double **inputs, double **outputs, VstIn double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = pow(10.0,((A*36.0)-18.0)/20.0); double outputgain = pow(10.0,((F*36.0)-18.0)/20.0); @@ -867,25 +850,16 @@ void IronOxide5::processDoubleReplacing(double **inputs, double **outputs, VstIn } //end invdrywet block with outputgain - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/IronOxideClassic/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/IronOxideClassic/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/IronOxideClassic/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/IronOxideClassic/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/IronOxideClassic/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..b85b7c1 --- /dev/null +++ b/plugins/LinuxVST/src/IronOxideClassic/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/IronOxideClassic/IronOxideClassic.cpp b/plugins/LinuxVST/src/IronOxideClassic/IronOxideClassic.cpp index 012d8a3..8ce7103 100755 --- a/plugins/LinuxVST/src/IronOxideClassic/IronOxideClassic.cpp +++ b/plugins/LinuxVST/src/IronOxideClassic/IronOxideClassic.cpp @@ -22,12 +22,9 @@ IronOxideClassic::IronOxideClassic(audioMasterCallback audioMaster) : iirSampleAL = iirSampleBL = 0.0; fastIIRAR = fastIIRBR = slowIIRAR = slowIIRBR = 0.0; iirSampleAR = iirSampleBR = 0.0; - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/IronOxideClassic/IronOxideClassic.h b/plugins/LinuxVST/src/IronOxideClassic/IronOxideClassic.h index b7f8bfa..bafb457 100755 --- a/plugins/LinuxVST/src/IronOxideClassic/IronOxideClassic.h +++ b/plugins/LinuxVST/src/IronOxideClassic/IronOxideClassic.h @@ -71,12 +71,9 @@ private: double slowIIRBR; int gcount; - - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/IronOxideClassic/IronOxideClassicProc.cpp b/plugins/LinuxVST/src/IronOxideClassic/IronOxideClassicProc.cpp index c245166..97bbaca 100755 --- a/plugins/LinuxVST/src/IronOxideClassic/IronOxideClassicProc.cpp +++ b/plugins/LinuxVST/src/IronOxideClassic/IronOxideClassicProc.cpp @@ -17,9 +17,6 @@ void IronOxideClassic::processReplacing(float **inputs, float **outputs, VstInt3 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = pow(10.0,((A*36.0)-18.0)/20.0); double outputgain = pow(10.0,((C*36.0)-18.0)/20.0); @@ -343,26 +340,16 @@ void IronOxideClassic::processReplacing(float **inputs, float **outputs, VstInt3 inputSampleL *= outputgain; inputSampleR *= outputgain; } - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -384,9 +371,6 @@ void IronOxideClassic::processDoubleReplacing(double **inputs, double **outputs, double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = pow(10.0,((A*36.0)-18.0)/20.0); double outputgain = pow(10.0,((C*36.0)-18.0)/20.0); @@ -710,26 +694,18 @@ void IronOxideClassic::processDoubleReplacing(double **inputs, double **outputs, inputSampleL *= outputgain; inputSampleR *= outputgain; } - - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } fpFlip = !fpFlip; - //end noise shaping on 64 bit output + + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Logical4/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Logical4/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Logical4/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Logical4/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Logical4/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..0a67ad3 --- /dev/null +++ b/plugins/LinuxVST/src/Logical4/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Logical4/Logical4.cpp b/plugins/LinuxVST/src/Logical4/Logical4.cpp index b17cc55..15d185b 100755 --- a/plugins/LinuxVST/src/Logical4/Logical4.cpp +++ b/plugins/LinuxVST/src/Logical4/Logical4.cpp @@ -77,12 +77,9 @@ Logical4::Logical4(audioMasterCallback audioMaster) : gcount = 0; //end Power Sags - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Logical4/Logical4.h b/plugins/LinuxVST/src/Logical4/Logical4.h index 71e118e..fd802c8 100755 --- a/plugins/LinuxVST/src/Logical4/Logical4.h +++ b/plugins/LinuxVST/src/Logical4/Logical4.h @@ -143,10 +143,8 @@ private: int gcount; - double fpNShapeLA; - double fpNShapeLB; - double fpNShapeRA; - double fpNShapeRB; + double fpNShapeL; + double fpNShapeR; bool fpFlip; //default stuff diff --git a/plugins/LinuxVST/src/Logical4/Logical4Proc.cpp b/plugins/LinuxVST/src/Logical4/Logical4Proc.cpp index 0d09fcf..5d079f3 100755 --- a/plugins/LinuxVST/src/Logical4/Logical4Proc.cpp +++ b/plugins/LinuxVST/src/Logical4/Logical4Proc.cpp @@ -17,9 +17,8 @@ void Logical4::processReplacing(float **inputs, float **outputs, VstInt32 sample double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - double fpOld = 0.618033988749894848204586; //golden ratio! - double fpNew = 1.0 - fpOld; + long double fpOld = 0.618033988749894848204586; //golden ratio! + long double fpNew = 1.0 - fpOld; float drySampleL; float drySampleR; @@ -869,27 +868,17 @@ void Logical4::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleL = (inputSampleL * wet) + (drySampleL * dry); inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } + fpFlip = !fpFlip; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -911,9 +900,8 @@ void Logical4::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - double fpOld = 0.618033988749894848204586; //golden ratio! - double fpNew = 1.0 - fpOld; + long double fpOld = 0.618033988749894848204586; //golden ratio! + long double fpNew = 1.0 - fpOld; float drySampleL; float drySampleR; @@ -1762,26 +1750,18 @@ void Logical4::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleL = (inputSampleL * wet) + (drySampleL * dry); inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } fpFlip = !fpFlip; - //end noise shaping on 64 bit output + + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Loud/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Loud/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Loud/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Loud/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Loud/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..abcac37 --- /dev/null +++ b/plugins/LinuxVST/src/Loud/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Loud/Loud.cpp b/plugins/LinuxVST/src/Loud/Loud.cpp index 43f7ffc..009124d 100755 --- a/plugins/LinuxVST/src/Loud/Loud.cpp +++ b/plugins/LinuxVST/src/Loud/Loud.cpp @@ -15,11 +15,8 @@ Loud::Loud(audioMasterCallback audioMaster) : A = 0.0; B = 1.0; C = 1.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Loud/Loud.h b/plugins/LinuxVST/src/Loud/Loud.h index 85b66a2..17537c2 100755 --- a/plugins/LinuxVST/src/Loud/Loud.h +++ b/plugins/LinuxVST/src/Loud/Loud.h @@ -56,11 +56,8 @@ private: double lastSampleL; double lastSampleR; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/Loud/LoudProc.cpp b/plugins/LinuxVST/src/Loud/LoudProc.cpp index 8aedede..35ee29b 100755 --- a/plugins/LinuxVST/src/Loud/LoudProc.cpp +++ b/plugins/LinuxVST/src/Loud/LoudProc.cpp @@ -18,9 +18,6 @@ void Loud::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram overallscale /= 44100.0; overallscale *= getSampleRate(); double boost = pow(A+1.0,5); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double output = B; double wet = C; double dry = 1.0-wet; @@ -143,25 +140,14 @@ void Loud::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -184,9 +170,6 @@ void Loud::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa overallscale /= 44100.0; overallscale *= getSampleRate(); double boost = pow(A+1.0,5); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double output = B; double wet = C; double dry = 1.0-wet; @@ -308,25 +291,16 @@ void Loud::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Lowpass/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Lowpass/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Lowpass/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Lowpass/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Lowpass/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..f5cbb3f --- /dev/null +++ b/plugins/LinuxVST/src/Lowpass/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Lowpass/Lowpass.cpp b/plugins/LinuxVST/src/Lowpass/Lowpass.cpp index 8178799..18064fc 100755 --- a/plugins/LinuxVST/src/Lowpass/Lowpass.cpp +++ b/plugins/LinuxVST/src/Lowpass/Lowpass.cpp @@ -19,10 +19,8 @@ Lowpass::Lowpass(audioMasterCallback audioMaster) : iirSampleBL = 0.0; iirSampleAR = 0.0; iirSampleBR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; fpFlip = true; //this is reset: values being initialized only once. Startup values, whatever they are. diff --git a/plugins/LinuxVST/src/Lowpass/Lowpass.h b/plugins/LinuxVST/src/Lowpass/Lowpass.h index 1b99c55..40ac456 100755 --- a/plugins/LinuxVST/src/Lowpass/Lowpass.h +++ b/plugins/LinuxVST/src/Lowpass/Lowpass.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; @@ -68,7 +65,7 @@ private: double iirSampleBL; double iirSampleAR; double iirSampleBR; - + bool fpFlip; }; #endif diff --git a/plugins/LinuxVST/src/Lowpass/LowpassProc.cpp b/plugins/LinuxVST/src/Lowpass/LowpassProc.cpp index bcce714..bcc3690 100755 --- a/plugins/LinuxVST/src/Lowpass/LowpassProc.cpp +++ b/plugins/LinuxVST/src/Lowpass/LowpassProc.cpp @@ -27,9 +27,6 @@ void Lowpass::processReplacing(float **inputs, float **outputs, VstInt32 sampleF double inputSampleR; double outputSampleL; double outputSampleR; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; iirAmount += (iirAmount * tight * tight); if (tight > 0) tight /= 1.5; @@ -116,33 +113,21 @@ void Lowpass::processReplacing(float **inputs, float **outputs, VstInt32 sampleF iirSampleBR = (iirSampleBR * (1 - (offset * iirAmount))) + (inputSampleR * (offset * iirAmount)); outputSampleR = iirSampleBR; } + fpFlip = !fpFlip; if (wet < 1.0) outputSampleL = (outputSampleL * wet) + (inputSampleL * dry); if (wet < 1.0) outputSampleR = (outputSampleR * wet) + (inputSampleR * dry); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = outputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((outputSampleL-fpTemp)*fpNew); - outputSampleL += fpNShapeLA; - - fpTemp = outputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((outputSampleR-fpTemp)*fpNew); - outputSampleR += fpNShapeRA; - } - else { - fpTemp = outputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((outputSampleL-fpTemp)*fpNew); - outputSampleL += fpNShapeLB; - - fpTemp = outputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((outputSampleR-fpTemp)*fpNew); - outputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = outputSampleL; *out2 = outputSampleR; @@ -174,9 +159,6 @@ void Lowpass::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double inputSampleR; double outputSampleL; double outputSampleR; - double fpTemp; - double fpOld = 0.618033988749894848204586; //golden ratio! - double fpNew = 1.0 - fpOld; iirAmount += (iirAmount * tight * tight); if (tight > 0) tight /= 1.5; @@ -263,33 +245,23 @@ void Lowpass::processDoubleReplacing(double **inputs, double **outputs, VstInt32 iirSampleBR = (iirSampleBR * (1 - (offset * iirAmount))) + (inputSampleR * (offset * iirAmount)); outputSampleR = iirSampleBR; } + fpFlip = !fpFlip; if (wet < 1.0) outputSampleL = (outputSampleL * wet) + (inputSampleL * dry); if (wet < 1.0) outputSampleR = (outputSampleR * wet) + (inputSampleR * dry); - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = outputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((outputSampleL-fpTemp)*fpNew); - outputSampleL += fpNShapeLA; - - fpTemp = outputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((outputSampleR-fpTemp)*fpNew); - outputSampleR += fpNShapeRA; - } - else { - fpTemp = outputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((outputSampleL-fpTemp)*fpNew); - outputSampleL += fpNShapeLB; - - fpTemp = outputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((outputSampleR-fpTemp)*fpNew); - outputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = outputSampleL; *out2 = outputSampleR; diff --git a/plugins/LinuxVST/src/Melt/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Melt/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Melt/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Melt/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Melt/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..ee90f48 --- /dev/null +++ b/plugins/LinuxVST/src/Melt/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Melt/Melt.cpp b/plugins/LinuxVST/src/Melt/Melt.cpp index 9722e1f..35ede1e 100755 --- a/plugins/LinuxVST/src/Melt/Melt.cpp +++ b/plugins/LinuxVST/src/Melt/Melt.cpp @@ -26,11 +26,8 @@ Melt::Melt(audioMasterCallback audioMaster) : slowCount = 0; gcount = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Melt/Melt.h b/plugins/LinuxVST/src/Melt/Melt.h index a8e0f38..af11f0f 100755 --- a/plugins/LinuxVST/src/Melt/Melt.h +++ b/plugins/LinuxVST/src/Melt/Melt.h @@ -70,11 +70,8 @@ private: int slowCount; int gcount; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/Melt/MeltProc.cpp b/plugins/LinuxVST/src/Melt/MeltProc.cpp index 48a1c11..8a55732 100755 --- a/plugins/LinuxVST/src/Melt/MeltProc.cpp +++ b/plugins/LinuxVST/src/Melt/MeltProc.cpp @@ -21,9 +21,6 @@ void Melt::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram double wet = D; double dry = 1.0-wet; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -271,25 +268,14 @@ void Melt::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -315,9 +301,6 @@ void Melt::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa double wet = D; double dry = 1.0-wet; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -565,25 +548,16 @@ void Melt::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/MidSide/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/MidSide/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/MidSide/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/MidSide/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/MidSide/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..652923f --- /dev/null +++ b/plugins/LinuxVST/src/MidSide/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/MidSide/MidSide.cpp b/plugins/LinuxVST/src/MidSide/MidSide.cpp index bc37393..8f61cff 100755 --- a/plugins/LinuxVST/src/MidSide/MidSide.cpp +++ b/plugins/LinuxVST/src/MidSide/MidSide.cpp @@ -13,11 +13,8 @@ MidSide::MidSide(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, kNumPrograms, kNumParameters) { A = 0.5; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/MidSide/MidSide.h b/plugins/LinuxVST/src/MidSide/MidSide.h index 28b2ae7..4d139c8 100755 --- a/plugins/LinuxVST/src/MidSide/MidSide.h +++ b/plugins/LinuxVST/src/MidSide/MidSide.h @@ -52,11 +52,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/MidSide/MidSideProc.cpp b/plugins/LinuxVST/src/MidSide/MidSideProc.cpp index 2df14f4..cca7a5c 100755 --- a/plugins/LinuxVST/src/MidSide/MidSideProc.cpp +++ b/plugins/LinuxVST/src/MidSide/MidSideProc.cpp @@ -14,9 +14,6 @@ void MidSide::processReplacing(float **inputs, float **outputs, VstInt32 sampleF float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -76,25 +73,14 @@ void MidSide::processReplacing(float **inputs, float **outputs, VstInt32 sampleF mid *= midgain; side *= sidegain; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = mid; - fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLA; - fpTemp = side; - fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRA; - } - else { - fpTemp = mid; - fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLB; - fpTemp = side; - fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)mid, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + mid += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)side, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + side += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = mid; *out2 = side; @@ -113,9 +99,6 @@ void MidSide::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -175,25 +158,16 @@ void MidSide::processDoubleReplacing(double **inputs, double **outputs, VstInt32 mid *= midgain; side *= sidegain; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = mid; - fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLA; - fpTemp = side; - fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRA; - } - else { - fpTemp = mid; - fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLB; - fpTemp = side; - fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)mid, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + mid += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)side, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + side += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = mid; *out2 = side; diff --git a/plugins/LinuxVST/src/NCSeventeen/NCSeventeen.cpp b/plugins/LinuxVST/src/NCSeventeen/NCSeventeen.cpp index 9bc129a..409f983 100755 --- a/plugins/LinuxVST/src/NCSeventeen/NCSeventeen.cpp +++ b/plugins/LinuxVST/src/NCSeventeen/NCSeventeen.cpp @@ -31,11 +31,8 @@ NCSeventeen::NCSeventeen(audioMasterCallback audioMaster) : flip = false; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/NCSeventeen/NCSeventeen.h b/plugins/LinuxVST/src/NCSeventeen/NCSeventeen.h index 01179e9..b3ecd94 100755 --- a/plugins/LinuxVST/src/NCSeventeen/NCSeventeen.h +++ b/plugins/LinuxVST/src/NCSeventeen/NCSeventeen.h @@ -70,11 +70,8 @@ private: bool flip; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/NCSeventeen/NCSeventeenProc.cpp b/plugins/LinuxVST/src/NCSeventeen/NCSeventeenProc.cpp index b2f2aa1..e124cb5 100755 --- a/plugins/LinuxVST/src/NCSeventeen/NCSeventeenProc.cpp +++ b/plugins/LinuxVST/src/NCSeventeen/NCSeventeenProc.cpp @@ -19,9 +19,6 @@ void NCSeventeen::processReplacing(float **inputs, float **outputs, VstInt32 sam double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double IIRscaleback = 0.0004716; double bassScaleback = 0.0002364; @@ -347,25 +344,14 @@ void NCSeventeen::processReplacing(float **inputs, float **outputs, VstInt32 sam if (inputSampleR < -0.95) inputSampleR = -0.95; //iron bar - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -389,9 +375,6 @@ void NCSeventeen::processDoubleReplacing(double **inputs, double **outputs, VstI double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double IIRscaleback = 0.0004716; double bassScaleback = 0.0002364; @@ -716,25 +699,16 @@ void NCSeventeen::processDoubleReplacing(double **inputs, double **outputs, VstI if (inputSampleR < -0.95) inputSampleR = -0.95; //iron bar - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Noise/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Noise/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Noise/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Noise/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Noise/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..78a0fe9 --- /dev/null +++ b/plugins/LinuxVST/src/Noise/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Noise/Noise.cpp b/plugins/LinuxVST/src/Noise/Noise.cpp index 76d00c8..d955a29 100755 --- a/plugins/LinuxVST/src/Noise/Noise.cpp +++ b/plugins/LinuxVST/src/Noise/Noise.cpp @@ -36,11 +36,8 @@ Noise::Noise(audioMasterCallback audioMaster) : flipR = false; filterflip = false; for(int count = 0; count < 11; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;} - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Noise/Noise.h b/plugins/LinuxVST/src/Noise/Noise.h index 0ee4d76..67c32bc 100755 --- a/plugins/LinuxVST/src/Noise/Noise.h +++ b/plugins/LinuxVST/src/Noise/Noise.h @@ -81,11 +81,8 @@ private: double f[11]; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/Noise/NoiseProc.cpp b/plugins/LinuxVST/src/Noise/NoiseProc.cpp index e185120..31cba20 100755 --- a/plugins/LinuxVST/src/Noise/NoiseProc.cpp +++ b/plugins/LinuxVST/src/Noise/NoiseProc.cpp @@ -104,9 +104,6 @@ void Noise::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra f[9] /= overallscale; //and now it's neatly scaled, too - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; @@ -299,25 +296,14 @@ void Noise::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra //sometimes I'm really tired and can't do stuff, and I remember trying to simplify this //and breaking it somehow. So, there ya go, strange obtuse code. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -426,9 +412,6 @@ void Noise::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s f[9] /= overallscale; //and now it's neatly scaled, too - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; while (--sampleFrames >= 0) { @@ -619,25 +602,16 @@ void Noise::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s //sometimes I'm really tired and can't do stuff, and I remember trying to simplify this //and breaking it somehow. So, there ya go, strange obtuse code. - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/NonlinearSpace/NonlinearSpace.cpp b/plugins/LinuxVST/src/NonlinearSpace/NonlinearSpace.cpp index 6941556..eb05bc3 100755 --- a/plugins/LinuxVST/src/NonlinearSpace/NonlinearSpace.cpp +++ b/plugins/LinuxVST/src/NonlinearSpace/NonlinearSpace.cpp @@ -195,11 +195,8 @@ NonlinearSpace::NonlinearSpace(audioMasterCallback audioMaster) : countdown = -1; flip = true; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/NonlinearSpace/NonlinearSpace.h b/plugins/LinuxVST/src/NonlinearSpace/NonlinearSpace.h index e915b21..dbaa0b3 100755 --- a/plugins/LinuxVST/src/NonlinearSpace/NonlinearSpace.h +++ b/plugins/LinuxVST/src/NonlinearSpace/NonlinearSpace.h @@ -208,11 +208,8 @@ private: double nonlin; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/NonlinearSpace/NonlinearSpaceProc.cpp b/plugins/LinuxVST/src/NonlinearSpace/NonlinearSpaceProc.cpp index 597e184..f9df9fc 100755 --- a/plugins/LinuxVST/src/NonlinearSpace/NonlinearSpaceProc.cpp +++ b/plugins/LinuxVST/src/NonlinearSpace/NonlinearSpaceProc.cpp @@ -14,9 +14,6 @@ void NonlinearSpace::processReplacing(float **inputs, float **outputs, VstInt32 float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double drySampleL; double drySampleR; @@ -746,25 +743,14 @@ void NonlinearSpace::processReplacing(float **inputs, float **outputs, VstInt32 inputSampleR += drySampleR; //here we combine the tanks with the dry signal - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither flip = !flip; *out1 = inputSampleL; @@ -784,9 +770,6 @@ void NonlinearSpace::processDoubleReplacing(double **inputs, double **outputs, V double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double drySampleL; double drySampleR; @@ -1516,25 +1499,16 @@ void NonlinearSpace::processDoubleReplacing(double **inputs, double **outputs, V inputSampleR += drySampleR; //here we combine the tanks with the dry signal - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither flip = !flip; *out1 = inputSampleL; diff --git a/plugins/LinuxVST/src/OneCornerClip/OneCornerClip.cpp b/plugins/LinuxVST/src/OneCornerClip/OneCornerClip.cpp index bf8828e..59e2824 100755 --- a/plugins/LinuxVST/src/OneCornerClip/OneCornerClip.cpp +++ b/plugins/LinuxVST/src/OneCornerClip/OneCornerClip.cpp @@ -25,11 +25,8 @@ OneCornerClip::OneCornerClip(audioMasterCallback audioMaster) : limitPosR = 0.0; limitNegR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/OneCornerClip/OneCornerClip.h b/plugins/LinuxVST/src/OneCornerClip/OneCornerClip.h index 07f480a..4f039fa 100755 --- a/plugins/LinuxVST/src/OneCornerClip/OneCornerClip.h +++ b/plugins/LinuxVST/src/OneCornerClip/OneCornerClip.h @@ -56,11 +56,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double lastSampleL; diff --git a/plugins/LinuxVST/src/OneCornerClip/OneCornerClipProc.cpp b/plugins/LinuxVST/src/OneCornerClip/OneCornerClipProc.cpp index 0398b60..c45c69b 100755 --- a/plugins/LinuxVST/src/OneCornerClip/OneCornerClipProc.cpp +++ b/plugins/LinuxVST/src/OneCornerClip/OneCornerClipProc.cpp @@ -17,9 +17,6 @@ void OneCornerClip::processReplacing(float **inputs, float **outputs, VstInt32 s double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputGain = pow(10.0,(((A*36.0)-12.0)/20.0)); double posThreshold = B; @@ -157,25 +154,14 @@ void OneCornerClip::processReplacing(float **inputs, float **outputs, VstInt32 s inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither if (clipEngage == false) { @@ -204,9 +190,6 @@ void OneCornerClip::processDoubleReplacing(double **inputs, double **outputs, Vs double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputGain = pow(10.0,(((A*36.0)-12.0)/20.0)); double posThreshold = B; @@ -345,25 +328,16 @@ void OneCornerClip::processDoubleReplacing(double **inputs, double **outputs, Vs inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither if (clipEngage == false) { diff --git a/plugins/LinuxVST/src/PDBuss/PDBuss.cpp b/plugins/LinuxVST/src/PDBuss/PDBuss.cpp index 323d8cf..8b31d8b 100755 --- a/plugins/LinuxVST/src/PDBuss/PDBuss.cpp +++ b/plugins/LinuxVST/src/PDBuss/PDBuss.cpp @@ -21,11 +21,8 @@ PDBuss::PDBuss(audioMasterCallback audioMaster) : previousSampleL = 0.0; previousSampleR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/PDBuss/PDBuss.h b/plugins/LinuxVST/src/PDBuss/PDBuss.h index 5c7a504..3e6d9b8 100755 --- a/plugins/LinuxVST/src/PDBuss/PDBuss.h +++ b/plugins/LinuxVST/src/PDBuss/PDBuss.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double gainchase; double settingchase; diff --git a/plugins/LinuxVST/src/PDBuss/PDBussProc.cpp b/plugins/LinuxVST/src/PDBuss/PDBussProc.cpp index c099057..6da8fa0 100755 --- a/plugins/LinuxVST/src/PDBuss/PDBussProc.cpp +++ b/plugins/LinuxVST/src/PDBuss/PDBussProc.cpp @@ -13,9 +13,6 @@ void PDBuss::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr float* in2 = inputs[1]; float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double intensity = B; @@ -122,25 +119,14 @@ void PDBuss::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr previousSampleR = sin(drySampleR); //apply the sine while storing previous sample - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -158,9 +144,6 @@ void PDBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double* in2 = inputs[1]; double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double intensity = B; @@ -267,25 +250,16 @@ void PDBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 previousSampleR = sin(drySampleR); //apply the sine while storing previous sample - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/PDChannel/PDChannel.cpp b/plugins/LinuxVST/src/PDChannel/PDChannel.cpp index d300fc8..aef639d 100755 --- a/plugins/LinuxVST/src/PDChannel/PDChannel.cpp +++ b/plugins/LinuxVST/src/PDChannel/PDChannel.cpp @@ -21,11 +21,8 @@ PDChannel::PDChannel(audioMasterCallback audioMaster) : previousSampleL = 0.0; previousSampleR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/PDChannel/PDChannel.h b/plugins/LinuxVST/src/PDChannel/PDChannel.h index e92117c..ea233e2 100755 --- a/plugins/LinuxVST/src/PDChannel/PDChannel.h +++ b/plugins/LinuxVST/src/PDChannel/PDChannel.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double gainchase; double settingchase; diff --git a/plugins/LinuxVST/src/PDChannel/PDChannelProc.cpp b/plugins/LinuxVST/src/PDChannel/PDChannelProc.cpp index d8f79df..fb5932d 100755 --- a/plugins/LinuxVST/src/PDChannel/PDChannelProc.cpp +++ b/plugins/LinuxVST/src/PDChannel/PDChannelProc.cpp @@ -13,9 +13,6 @@ void PDChannel::processReplacing(float **inputs, float **outputs, VstInt32 sampl float* in2 = inputs[1]; float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double intensity = B; @@ -115,25 +112,14 @@ void PDChannel::processReplacing(float **inputs, float **outputs, VstInt32 sampl previousSampleR = sin(drySampleR); //apply the sine while storing previous sample - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -151,9 +137,6 @@ void PDChannel::processDoubleReplacing(double **inputs, double **outputs, VstInt double* in2 = inputs[1]; double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double intensity = B; @@ -253,25 +236,16 @@ void PDChannel::processDoubleReplacing(double **inputs, double **outputs, VstInt previousSampleR = sin(drySampleR); //apply the sine while storing previous sample - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/PhaseNudge/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/PhaseNudge/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/PhaseNudge/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/PhaseNudge/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/PhaseNudge/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..11ae01b --- /dev/null +++ b/plugins/LinuxVST/src/PhaseNudge/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/PhaseNudge/PhaseNudge.cpp b/plugins/LinuxVST/src/PhaseNudge/PhaseNudge.cpp index 8a77175..e9e5c8d 100755 --- a/plugins/LinuxVST/src/PhaseNudge/PhaseNudge.cpp +++ b/plugins/LinuxVST/src/PhaseNudge/PhaseNudge.cpp @@ -16,11 +16,8 @@ PhaseNudge::PhaseNudge(audioMasterCallback audioMaster) : B = 1.0; for(int count = 0; count < 1502; count++) {dL[count] = 0.0; dR[count] = 0.0;} one = 1; maxdelay = 9001; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/PhaseNudge/PhaseNudge.h b/plugins/LinuxVST/src/PhaseNudge/PhaseNudge.h index cba0ac8..2926ccb 100755 --- a/plugins/LinuxVST/src/PhaseNudge/PhaseNudge.h +++ b/plugins/LinuxVST/src/PhaseNudge/PhaseNudge.h @@ -57,11 +57,8 @@ private: double dR[1503]; int one, maxdelay; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/PhaseNudge/PhaseNudgeProc.cpp b/plugins/LinuxVST/src/PhaseNudge/PhaseNudgeProc.cpp index 494c841..150ecd5 100755 --- a/plugins/LinuxVST/src/PhaseNudge/PhaseNudgeProc.cpp +++ b/plugins/LinuxVST/src/PhaseNudge/PhaseNudgeProc.cpp @@ -14,9 +14,6 @@ void PhaseNudge::processReplacing(float **inputs, float **outputs, VstInt32 samp float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; int allpasstemp; double outallpass = 0.618033988749894848204586; //golden ratio! @@ -136,25 +133,14 @@ void PhaseNudge::processReplacing(float **inputs, float **outputs, VstInt32 samp inputSampleR = (drySampleR * dry)+(inputSampleR * wet); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -173,9 +159,6 @@ void PhaseNudge::processDoubleReplacing(double **inputs, double **outputs, VstIn double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; int allpasstemp; double outallpass = 0.618033988749894848204586; //golden ratio! @@ -294,25 +277,16 @@ void PhaseNudge::processDoubleReplacing(double **inputs, double **outputs, VstIn inputSampleR = (drySampleR * dry)+(inputSampleR * wet); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Point/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Point/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Point/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Point/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Point/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..8ad608b --- /dev/null +++ b/plugins/LinuxVST/src/Point/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Point/Point.cpp b/plugins/LinuxVST/src/Point/Point.cpp index 22885b5..f795470 100755 --- a/plugins/LinuxVST/src/Point/Point.cpp +++ b/plugins/LinuxVST/src/Point/Point.cpp @@ -24,10 +24,8 @@ Point::Point(audioMasterCallback audioMaster) : nibBR = 0.0; nobBR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; fpFlip = true; //this is reset: values being initialized only once. Startup values, whatever they are. diff --git a/plugins/LinuxVST/src/Point/Point.h b/plugins/LinuxVST/src/Point/Point.h index 12c8001..ff898cb 100755 --- a/plugins/LinuxVST/src/Point/Point.h +++ b/plugins/LinuxVST/src/Point/Point.h @@ -54,10 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; + long double fpNShapeL; + long double fpNShapeR; bool fpFlip; //default stuff double nibAL; diff --git a/plugins/LinuxVST/src/Point/PointProc.cpp b/plugins/LinuxVST/src/Point/PointProc.cpp index a00263d..a3bbe3c 100755 --- a/plugins/LinuxVST/src/Point/PointProc.cpp +++ b/plugins/LinuxVST/src/Point/PointProc.cpp @@ -27,9 +27,6 @@ void Point::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra double nibnobFactor = 0.0; //start with the fallthrough value, why not double absolute; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -128,26 +125,16 @@ void Point::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra } } inputSampleR *= nibnobFactor; - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -179,9 +166,6 @@ void Point::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s double nibnobFactor = 0.0; //start with the fallthrough value, why not double absolute; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -280,26 +264,18 @@ void Point::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s } } inputSampleR *= nibnobFactor; - - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } fpFlip = !fpFlip; - //end noise shaping on 64 bit output + + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Pop/PopProc.cpp b/plugins/LinuxVST/src/Pop/PopProc.cpp index ae7dd4d..baa9420 100755 --- a/plugins/LinuxVST/src/Pop/PopProc.cpp +++ b/plugins/LinuxVST/src/Pop/PopProc.cpp @@ -268,18 +268,14 @@ void Pop::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame inputSampleR = (drySampleR*(1.0-wet))+(inputSampleR*wet); } - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -289,12 +285,6 @@ void Pop::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Pop::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -558,18 +548,16 @@ void Pop::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam inputSampleR = (drySampleR*(1.0-wet))+(inputSampleR*wet); } - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -579,10 +567,4 @@ void Pop::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/LinuxVST/src/PowerSag/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/PowerSag/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/PowerSag/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/PowerSag/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/PowerSag/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..b1569f1 --- /dev/null +++ b/plugins/LinuxVST/src/PowerSag/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/PowerSag/PowerSag.cpp b/plugins/LinuxVST/src/PowerSag/PowerSag.cpp index 0218186..d1d0745 100755 --- a/plugins/LinuxVST/src/PowerSag/PowerSag.cpp +++ b/plugins/LinuxVST/src/PowerSag/PowerSag.cpp @@ -18,11 +18,8 @@ PowerSag::PowerSag(audioMasterCallback audioMaster) : gcount = 0; A = 0.0; B = 0.3; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/PowerSag/PowerSag.h b/plugins/LinuxVST/src/PowerSag/PowerSag.h index 930f05b..38839b6 100755 --- a/plugins/LinuxVST/src/PowerSag/PowerSag.h +++ b/plugins/LinuxVST/src/PowerSag/PowerSag.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double dL[9000]; double dR[9000]; diff --git a/plugins/LinuxVST/src/PowerSag/PowerSagProc.cpp b/plugins/LinuxVST/src/PowerSag/PowerSagProc.cpp index d1afa31..de43be6 100755 --- a/plugins/LinuxVST/src/PowerSag/PowerSagProc.cpp +++ b/plugins/LinuxVST/src/PowerSag/PowerSagProc.cpp @@ -22,9 +22,6 @@ void PowerSag::processReplacing(float **inputs, float **outputs, VstInt32 sample double out; double bridgerectifier; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -123,25 +120,14 @@ void PowerSag::processReplacing(float **inputs, float **outputs, VstInt32 sample gcount--; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -168,9 +154,6 @@ void PowerSag::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double out; double bridgerectifier; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -269,25 +252,16 @@ void PowerSag::processDoubleReplacing(double **inputs, double **outputs, VstInt3 gcount--; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Pressure4/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Pressure4/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Pressure4/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Pressure4/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Pressure4/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..a911044 --- /dev/null +++ b/plugins/LinuxVST/src/Pressure4/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Pressure4/Pressure4.cpp b/plugins/LinuxVST/src/Pressure4/Pressure4.cpp index 8ae2adc..10ed5fa 100755 --- a/plugins/LinuxVST/src/Pressure4/Pressure4.cpp +++ b/plugins/LinuxVST/src/Pressure4/Pressure4.cpp @@ -16,10 +16,8 @@ Pressure4::Pressure4(audioMasterCallback audioMaster) : B = 0.2; C = 1.0; D = 1.0; - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; muSpeedA = 10000; muSpeedB = 10000; muCoefficientA = 1; diff --git a/plugins/LinuxVST/src/Pressure4/Pressure4.h b/plugins/LinuxVST/src/Pressure4/Pressure4.h index 29d20eb..6cf3448 100755 --- a/plugins/LinuxVST/src/Pressure4/Pressure4.h +++ b/plugins/LinuxVST/src/Pressure4/Pressure4.h @@ -62,10 +62,8 @@ private: double muSpeedB; double muCoefficientA; double muCoefficientB; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; + long double fpNShapeL; + long double fpNShapeR; bool flip; float A; diff --git a/plugins/LinuxVST/src/Pressure4/Pressure4Proc.cpp b/plugins/LinuxVST/src/Pressure4/Pressure4Proc.cpp index 02b8a78..7e285df 100755 --- a/plugins/LinuxVST/src/Pressure4/Pressure4Proc.cpp +++ b/plugins/LinuxVST/src/Pressure4/Pressure4Proc.cpp @@ -43,9 +43,6 @@ void Pressure4::processReplacing(float **inputs, float **outputs, VstInt32 sampl unmewiness = 1.0-mewiness; } // µ µ µ µ µ µ µ µ µ µ µ µ is the kitten song o/~ - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -195,27 +192,14 @@ void Pressure4::processReplacing(float **inputs, float **outputs, VstInt32 sampl else {inputSampleR = -bridgerectifier;} //second stage of overdrive to prevent overs and allow bloody loud extremeness - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *outputL = inputSampleL; *outputR = inputSampleR; @@ -263,9 +247,6 @@ void Pressure4::processDoubleReplacing(double **inputs, double **outputs, VstInt unmewiness = 1.0-mewiness; } // µ µ µ µ µ µ µ µ µ µ µ µ is the kitten song o/~ - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -416,27 +397,16 @@ void Pressure4::processDoubleReplacing(double **inputs, double **outputs, VstInt else {inputSampleR = -bridgerectifier;} //second stage of overdrive to prevent overs and allow bloody loud extremeness - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *outputL = inputSampleL; *outputR = inputSampleR; diff --git a/plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBuss.cpp b/plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBuss.cpp index ed0b223..2d8e619 100644..100755 --- a/plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBuss.cpp +++ b/plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBuss.cpp @@ -12,11 +12,8 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new P PurestConsoleBuss::PurestConsoleBuss(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, kNumPrograms, kNumParameters) { - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBuss.h b/plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBuss.h index 0d237ec..51495fc 100644..100755 --- a/plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBuss.h +++ b/plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBuss.h @@ -51,11 +51,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff }; diff --git a/plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBussProc.cpp b/plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBussProc.cpp index c06258a..6211eeb 100644..100755 --- a/plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBussProc.cpp +++ b/plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBussProc.cpp @@ -14,9 +14,6 @@ void PurestConsoleBuss::processReplacing(float **inputs, float **outputs, VstInt float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -74,25 +71,14 @@ void PurestConsoleBuss::processReplacing(float **inputs, float **outputs, VstInt inputSampleR = asin(inputSampleR); //amplitude aspect - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -111,9 +97,6 @@ void PurestConsoleBuss::processDoubleReplacing(double **inputs, double **outputs double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -171,25 +154,16 @@ void PurestConsoleBuss::processDoubleReplacing(double **inputs, double **outputs inputSampleR = asin(inputSampleR); //amplitude aspect - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannel.cpp b/plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannel.cpp index b9f3e04..35649a6 100644..100755 --- a/plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannel.cpp +++ b/plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannel.cpp @@ -12,11 +12,8 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new P PurestConsoleChannel::PurestConsoleChannel(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, kNumPrograms, kNumParameters) { - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannel.h b/plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannel.h index c0a1648..51e728f 100644..100755 --- a/plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannel.h +++ b/plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannel.h @@ -51,11 +51,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff }; diff --git a/plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannelProc.cpp b/plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannelProc.cpp index 630cba7..2fc513a 100644..100755 --- a/plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannelProc.cpp +++ b/plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannelProc.cpp @@ -14,9 +14,6 @@ void PurestConsoleChannel::processReplacing(float **inputs, float **outputs, Vst float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -68,25 +65,14 @@ void PurestConsoleChannel::processReplacing(float **inputs, float **outputs, Vst inputSampleR = sin(inputSampleR); //amplitude aspect - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -105,9 +91,6 @@ void PurestConsoleChannel::processDoubleReplacing(double **inputs, double **outp double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -159,25 +142,16 @@ void PurestConsoleChannel::processDoubleReplacing(double **inputs, double **outp inputSampleR = sin(inputSampleR); //amplitude aspect - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/PurestDrive/PurestDrive.cpp b/plugins/LinuxVST/src/PurestDrive/PurestDrive.cpp index e2451fe..a1d9264 100644..100755 --- a/plugins/LinuxVST/src/PurestDrive/PurestDrive.cpp +++ b/plugins/LinuxVST/src/PurestDrive/PurestDrive.cpp @@ -17,11 +17,8 @@ PurestDrive::PurestDrive(audioMasterCallback audioMaster) : previousSampleL = 0.0; previousSampleR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/PurestDrive/PurestDrive.h b/plugins/LinuxVST/src/PurestDrive/PurestDrive.h index 1f5b349..abcd65b 100644..100755 --- a/plugins/LinuxVST/src/PurestDrive/PurestDrive.h +++ b/plugins/LinuxVST/src/PurestDrive/PurestDrive.h @@ -52,11 +52,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double previousSampleL; diff --git a/plugins/LinuxVST/src/PurestDrive/PurestDriveProc.cpp b/plugins/LinuxVST/src/PurestDrive/PurestDriveProc.cpp index e453883..f5cc804 100644..100755 --- a/plugins/LinuxVST/src/PurestDrive/PurestDriveProc.cpp +++ b/plugins/LinuxVST/src/PurestDrive/PurestDriveProc.cpp @@ -14,9 +14,6 @@ void PurestDrive::processReplacing(float **inputs, float **outputs, VstInt32 sam float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double intensity = A; double drySampleL; @@ -90,25 +87,14 @@ void PurestDrive::processReplacing(float **inputs, float **outputs, VstInt32 sam previousSampleR = sin(drySampleR); //apply the sine while storing previous sample - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -127,9 +113,6 @@ void PurestDrive::processDoubleReplacing(double **inputs, double **outputs, VstI double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double intensity = A; double drySampleL; @@ -204,25 +187,16 @@ void PurestDrive::processDoubleReplacing(double **inputs, double **outputs, VstI previousSampleR = sin(drySampleR); //apply the sine while storing previous sample - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/PurestEcho/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/PurestEcho/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/PurestEcho/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/PurestEcho/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/PurestEcho/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..1ddbf82 --- /dev/null +++ b/plugins/LinuxVST/src/PurestEcho/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/PurestEcho/PurestEcho.cpp b/plugins/LinuxVST/src/PurestEcho/PurestEcho.cpp index 6b8c302..6bcaa3f 100755 --- a/plugins/LinuxVST/src/PurestEcho/PurestEcho.cpp +++ b/plugins/LinuxVST/src/PurestEcho/PurestEcho.cpp @@ -19,11 +19,8 @@ PurestEcho::PurestEcho(audioMasterCallback audioMaster) : E = 0.0; for(int count = 0; count < totalsamples-1; count++) {dL[count] = 0;dR[count] = 0;} gcount = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/PurestEcho/PurestEcho.h b/plugins/LinuxVST/src/PurestEcho/PurestEcho.h index a298dd2..870e158 100755 --- a/plugins/LinuxVST/src/PurestEcho/PurestEcho.h +++ b/plugins/LinuxVST/src/PurestEcho/PurestEcho.h @@ -62,11 +62,8 @@ private: int gcount; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/PurestEcho/PurestEchoProc.cpp b/plugins/LinuxVST/src/PurestEcho/PurestEchoProc.cpp index 77e4b2f..e8e141c 100755 --- a/plugins/LinuxVST/src/PurestEcho/PurestEchoProc.cpp +++ b/plugins/LinuxVST/src/PurestEcho/PurestEchoProc.cpp @@ -76,9 +76,6 @@ void PurestEcho::processReplacing(float **inputs, float **outputs, VstInt32 samp double delaysBufferL; double delaysBufferR; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -177,25 +174,14 @@ void PurestEcho::processReplacing(float **inputs, float **outputs, VstInt32 samp gcount--; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -276,9 +262,6 @@ void PurestEcho::processDoubleReplacing(double **inputs, double **outputs, VstIn double delaysBufferL; double delaysBufferR; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -377,25 +360,16 @@ void PurestEcho::processDoubleReplacing(double **inputs, double **outputs, VstIn gcount--; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/PurestGain/PurestGain.cpp b/plugins/LinuxVST/src/PurestGain/PurestGain.cpp index 3091a12..b1b77fe 100644..100755 --- a/plugins/LinuxVST/src/PurestGain/PurestGain.cpp +++ b/plugins/LinuxVST/src/PurestGain/PurestGain.cpp @@ -18,11 +18,8 @@ PurestGain::PurestGain(audioMasterCallback audioMaster) : settingchase = -90.0; gainBchase = -90.0; chasespeed = 350.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/PurestGain/PurestGain.h b/plugins/LinuxVST/src/PurestGain/PurestGain.h index 7869425..9e2baea 100644..100755 --- a/plugins/LinuxVST/src/PurestGain/PurestGain.h +++ b/plugins/LinuxVST/src/PurestGain/PurestGain.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double gainchase; double settingchase; diff --git a/plugins/LinuxVST/src/PurestGain/PurestGainProc.cpp b/plugins/LinuxVST/src/PurestGain/PurestGainProc.cpp index 38f2849..4aa6d96 100644..100755 --- a/plugins/LinuxVST/src/PurestGain/PurestGainProc.cpp +++ b/plugins/LinuxVST/src/PurestGain/PurestGainProc.cpp @@ -43,9 +43,6 @@ void PurestGain::processReplacing(float **inputs, float **outputs, VstInt32 samp //done with slow fade controller double outputgain; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -118,45 +115,19 @@ void PurestGain::processReplacing(float **inputs, float **outputs, VstInt32 samp if (1.0 == outputgain) { - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output *out1 = *in1; *out2 = *in2; } else { inputSampleL *= outputgain; inputSampleR *= outputgain; - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; } @@ -204,9 +175,6 @@ void PurestGain::processDoubleReplacing(double **inputs, double **outputs, VstIn //done with slow fade controller double outputgain; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -273,45 +241,21 @@ void PurestGain::processDoubleReplacing(double **inputs, double **outputs, VstIn if (1.0 == outputgain) { - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output *out1 = *in1; *out2 = *in2; } else { inputSampleL *= outputgain; inputSampleR *= outputgain; - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; } diff --git a/plugins/LinuxVST/src/PurestWarm/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/PurestWarm/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/PurestWarm/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/PurestWarm/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/PurestWarm/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..91f4254 --- /dev/null +++ b/plugins/LinuxVST/src/PurestWarm/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/PurestWarm/PurestWarm.cpp b/plugins/LinuxVST/src/PurestWarm/PurestWarm.cpp index 475e845..eeee37b 100755 --- a/plugins/LinuxVST/src/PurestWarm/PurestWarm.cpp +++ b/plugins/LinuxVST/src/PurestWarm/PurestWarm.cpp @@ -13,11 +13,8 @@ PurestWarm::PurestWarm(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, kNumPrograms, kNumParameters) { A = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/PurestWarm/PurestWarm.h b/plugins/LinuxVST/src/PurestWarm/PurestWarm.h index c67a91e..98bb0ce 100755 --- a/plugins/LinuxVST/src/PurestWarm/PurestWarm.h +++ b/plugins/LinuxVST/src/PurestWarm/PurestWarm.h @@ -52,11 +52,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/PurestWarm/PurestWarmProc.cpp b/plugins/LinuxVST/src/PurestWarm/PurestWarmProc.cpp index b5a5070..101c931 100755 --- a/plugins/LinuxVST/src/PurestWarm/PurestWarmProc.cpp +++ b/plugins/LinuxVST/src/PurestWarm/PurestWarmProc.cpp @@ -14,9 +14,6 @@ void PurestWarm::processReplacing(float **inputs, float **outputs, VstInt32 samp float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; int polarity = (int) ( A * 1.999 ); @@ -71,103 +68,55 @@ void PurestWarm::processReplacing(float **inputs, float **outputs, VstInt32 samp if (inputSampleL < 0) { inputSampleL = -(sin(-inputSampleL*1.57079634)/1.57079634); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - } - } else { - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - } + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither } - if (inputSampleR < 0) { inputSampleR = -(sin(-inputSampleR*1.57079634)/1.57079634); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } else { - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - } else { - if (fpFlip) { - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - } else { - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - } + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither } - } else { - if (inputSampleL > 0) { inputSampleL = sin(inputSampleL*1.57079634)/1.57079634; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - } - } else { - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - } - } + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither + } if (inputSampleR > 0) { inputSampleR = sin(inputSampleR*1.57079634)/1.57079634; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } else { - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - } else { - if (fpFlip) { - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - } else { - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - } - } - + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither + } } //that's it. Only applies on one half of the waveform, other half is passthrough untouched. - //even the floating point noise shaping to the 32 bit buss is only applied as needed. - - fpFlip = !fpFlip; - //end noise shaping on 32 bit output *out1 = inputSampleL; *out2 = inputSampleR; @@ -186,9 +135,6 @@ void PurestWarm::processDoubleReplacing(double **inputs, double **outputs, VstIn double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; int polarity = (int) ( A * 1.999 ); @@ -243,103 +189,63 @@ void PurestWarm::processDoubleReplacing(double **inputs, double **outputs, VstIn if (inputSampleL < 0) { inputSampleL = -(sin(-inputSampleL*1.57079634)/1.57079634); - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - } - } else { - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - } + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither } if (inputSampleR < 0) { inputSampleR = -(sin(-inputSampleR*1.57079634)/1.57079634); - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } else { - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - } else { - if (fpFlip) { - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - } else { - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - } + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither } - } else { - if (inputSampleL > 0) { inputSampleL = sin(inputSampleL*1.57079634)/1.57079634; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - } - } else { - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - } + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither } - if (inputSampleR > 0) { inputSampleR = sin(inputSampleR*1.57079634)/1.57079634; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } else { - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - } else { - if (fpFlip) { - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - } else { - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - } + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither } - } //that's it. Only applies on one half of the waveform, other half is passthrough untouched. - //even the floating point noise shaping to the 32 bit buss is only applied as needed. - - fpFlip = !fpFlip; - //end noise shaping on 64 bit output *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Pyewacket/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Pyewacket/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Pyewacket/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Pyewacket/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Pyewacket/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..be9ac10 --- /dev/null +++ b/plugins/LinuxVST/src/Pyewacket/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Pyewacket/Pyewacket.cpp b/plugins/LinuxVST/src/Pyewacket/Pyewacket.cpp index ee2db40..d500e74 100755 --- a/plugins/LinuxVST/src/Pyewacket/Pyewacket.cpp +++ b/plugins/LinuxVST/src/Pyewacket/Pyewacket.cpp @@ -18,11 +18,8 @@ Pyewacket::Pyewacket(audioMasterCallback audioMaster) : chase = 1.0; lastrectifierL = 0.0; lastrectifierR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Pyewacket/Pyewacket.h b/plugins/LinuxVST/src/Pyewacket/Pyewacket.h index 593001f..087a198 100755 --- a/plugins/LinuxVST/src/Pyewacket/Pyewacket.h +++ b/plugins/LinuxVST/src/Pyewacket/Pyewacket.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double chase; double lastrectifierL; diff --git a/plugins/LinuxVST/src/Pyewacket/PyewacketProc.cpp b/plugins/LinuxVST/src/Pyewacket/PyewacketProc.cpp index 83112a2..8b3021a 100755 --- a/plugins/LinuxVST/src/Pyewacket/PyewacketProc.cpp +++ b/plugins/LinuxVST/src/Pyewacket/PyewacketProc.cpp @@ -17,9 +17,8 @@ void Pyewacket::processReplacing(float **inputs, float **outputs, VstInt32 sampl double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; + long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; long double drySampleL; @@ -134,25 +133,14 @@ void Pyewacket::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleR *= outputGain; } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -174,9 +162,8 @@ void Pyewacket::processDoubleReplacing(double **inputs, double **outputs, VstInt double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; + long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; long double drySampleL; @@ -291,25 +278,16 @@ void Pyewacket::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleR *= outputGain; } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Righteous4/Righteous4Proc.cpp b/plugins/LinuxVST/src/Righteous4/Righteous4Proc.cpp index 7ed44cf..630360f 100755 --- a/plugins/LinuxVST/src/Righteous4/Righteous4Proc.cpp +++ b/plugins/LinuxVST/src/Righteous4/Righteous4Proc.cpp @@ -300,17 +300,14 @@ void Righteous4::processReplacing(float **inputs, float **outputs, VstInt32 samp //output dither section if (bitDepth == 3) { - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither } else { //entire Naturalize section used when not on 32 bit out @@ -515,12 +512,6 @@ void Righteous4::processReplacing(float **inputs, float **outputs, VstInt32 samp *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Righteous4::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -529,11 +520,11 @@ void Righteous4::processDoubleReplacing(double **inputs, double **outputs, VstIn double* in2 = inputs[1]; double* out1 = outputs[0]; double* out2 = outputs[1]; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); + long double fpOld = 0.618033988749894848204586; //golden ratio! + long double fpNew = 1.0 - fpOld; double IIRscaleback = 0.0002597;//scaleback of harmonic avg IIRscaleback /= overallscale; IIRscaleback = 1.0 - IIRscaleback; @@ -816,17 +807,16 @@ void Righteous4::processDoubleReplacing(double **inputs, double **outputs, VstIn //output dither section if (bitDepth == 3) { - //noise shaping to 32-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither } else { //entire Naturalize section used when not on 32 bit out @@ -1031,10 +1021,4 @@ void Righteous4::processDoubleReplacing(double **inputs, double **outputs, VstIn *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. }
\ No newline at end of file diff --git a/plugins/LinuxVST/src/SideDull/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/SideDull/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/SideDull/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/SideDull/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/SideDull/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..68a45bd --- /dev/null +++ b/plugins/LinuxVST/src/SideDull/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/SideDull/SideDull.cpp b/plugins/LinuxVST/src/SideDull/SideDull.cpp index 547f1fd..479bdfd 100755 --- a/plugins/LinuxVST/src/SideDull/SideDull.cpp +++ b/plugins/LinuxVST/src/SideDull/SideDull.cpp @@ -16,10 +16,8 @@ SideDull::SideDull(audioMasterCallback audioMaster) : iirSampleA = 0.0; iirSampleB = 0.0; flip = true; - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/SideDull/SideDull.h b/plugins/LinuxVST/src/SideDull/SideDull.h index 6f431ac..ef5e892 100755 --- a/plugins/LinuxVST/src/SideDull/SideDull.h +++ b/plugins/LinuxVST/src/SideDull/SideDull.h @@ -55,10 +55,8 @@ private: double iirSampleA; double iirSampleB; bool flip; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; + long double fpNShapeL; + long double fpNShapeR; float A; }; diff --git a/plugins/LinuxVST/src/SideDull/SideDullProc.cpp b/plugins/LinuxVST/src/SideDull/SideDullProc.cpp index 347e5e8..7b77744 100755 --- a/plugins/LinuxVST/src/SideDull/SideDullProc.cpp +++ b/plugins/LinuxVST/src/SideDull/SideDullProc.cpp @@ -17,9 +17,6 @@ void SideDull::processReplacing(float **inputs, float **outputs, VstInt32 sample double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -88,27 +85,14 @@ void SideDull::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -130,9 +114,6 @@ void SideDull::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -201,27 +182,16 @@ void SideDull::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; - //noise shaping to 64-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Sidepass/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Sidepass/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Sidepass/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Sidepass/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Sidepass/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..5aee656 --- /dev/null +++ b/plugins/LinuxVST/src/Sidepass/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Sidepass/Sidepass.cpp b/plugins/LinuxVST/src/Sidepass/Sidepass.cpp index 98f6f3a..a28c212 100755 --- a/plugins/LinuxVST/src/Sidepass/Sidepass.cpp +++ b/plugins/LinuxVST/src/Sidepass/Sidepass.cpp @@ -16,10 +16,8 @@ Sidepass::Sidepass(audioMasterCallback audioMaster) : iirSampleA = 0.0; iirSampleB = 0.0; flip = true; - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Sidepass/Sidepass.h b/plugins/LinuxVST/src/Sidepass/Sidepass.h index 0e496f5..1b31b91 100755 --- a/plugins/LinuxVST/src/Sidepass/Sidepass.h +++ b/plugins/LinuxVST/src/Sidepass/Sidepass.h @@ -55,10 +55,8 @@ private: double iirSampleA; double iirSampleB; bool flip; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/Sidepass/SidepassProc.cpp b/plugins/LinuxVST/src/Sidepass/SidepassProc.cpp index d022df3..834ae3e 100755 --- a/plugins/LinuxVST/src/Sidepass/SidepassProc.cpp +++ b/plugins/LinuxVST/src/Sidepass/SidepassProc.cpp @@ -17,9 +17,6 @@ void Sidepass::processReplacing(float **inputs, float **outputs, VstInt32 sample double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double iirAmount = pow(A,3)/overallscale; long double inputSampleL; long double inputSampleR; @@ -87,25 +84,14 @@ void Sidepass::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -127,9 +113,6 @@ void Sidepass::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double iirAmount = pow(A,3)/overallscale; long double inputSampleL; long double inputSampleR; @@ -197,25 +180,16 @@ void Sidepass::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; - //noise shaping to 64-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/SingleEndedTriode/SingleEndedTriodeProc.cpp b/plugins/LinuxVST/src/SingleEndedTriode/SingleEndedTriodeProc.cpp index 5781165..ef6694c 100755 --- a/plugins/LinuxVST/src/SingleEndedTriode/SingleEndedTriodeProc.cpp +++ b/plugins/LinuxVST/src/SingleEndedTriode/SingleEndedTriodeProc.cpp @@ -127,18 +127,14 @@ void SingleEndedTriode::processReplacing(float **inputs, float **outputs, VstInt inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -148,12 +144,6 @@ void SingleEndedTriode::processReplacing(float **inputs, float **outputs, VstInt *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void SingleEndedTriode::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -276,18 +266,16 @@ void SingleEndedTriode::processDoubleReplacing(double **inputs, double **outputs inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -297,10 +285,4 @@ void SingleEndedTriode::processDoubleReplacing(double **inputs, double **outputs *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. }
\ No newline at end of file diff --git a/plugins/LinuxVST/src/Slew/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Slew/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Slew/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Slew/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Slew/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..95f3018 --- /dev/null +++ b/plugins/LinuxVST/src/Slew/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Slew2/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Slew2/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Slew2/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Slew2/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Slew2/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..b0d4c72 --- /dev/null +++ b/plugins/LinuxVST/src/Slew2/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/SlewOnly/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/SlewOnly/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/SlewOnly/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/SlewOnly/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/SlewOnly/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..19a25dd --- /dev/null +++ b/plugins/LinuxVST/src/SlewOnly/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Spiral/SpiralProc.cpp b/plugins/LinuxVST/src/Spiral/SpiralProc.cpp index d43a93a..4aea5bc 100755 --- a/plugins/LinuxVST/src/Spiral/SpiralProc.cpp +++ b/plugins/LinuxVST/src/Spiral/SpiralProc.cpp @@ -60,18 +60,14 @@ void Spiral::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr inputSampleL = sin(inputSampleL * fabs(inputSampleL)) / ((inputSampleL == 0.0) ?1:fabs(inputSampleL)); inputSampleR = sin(inputSampleR * fabs(inputSampleR)) / ((inputSampleR == 0.0) ?1:fabs(inputSampleR)); - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -81,12 +77,6 @@ void Spiral::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Spiral::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -142,18 +132,16 @@ void Spiral::processDoubleReplacing(double **inputs, double **outputs, VstInt32 inputSampleL = sin(inputSampleL * fabs(inputSampleL)) / ((inputSampleL == 0.0) ?1:fabs(inputSampleL)); inputSampleR = sin(inputSampleR * fabs(inputSampleR)) / ((inputSampleR == 0.0) ?1:fabs(inputSampleR)); - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -163,10 +151,4 @@ void Spiral::processDoubleReplacing(double **inputs, double **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/LinuxVST/src/Spiral2/Spiral2Proc.cpp b/plugins/LinuxVST/src/Spiral2/Spiral2Proc.cpp index d309448..a8669c5 100755 --- a/plugins/LinuxVST/src/Spiral2/Spiral2Proc.cpp +++ b/plugins/LinuxVST/src/Spiral2/Spiral2Proc.cpp @@ -118,18 +118,14 @@ void Spiral2::processReplacing(float **inputs, float **outputs, VstInt32 sampleF prevSampleR = drySampleR; flip = !flip; - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -139,12 +135,6 @@ void Spiral2::processReplacing(float **inputs, float **outputs, VstInt32 sampleF *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Spiral2::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -259,18 +249,16 @@ void Spiral2::processDoubleReplacing(double **inputs, double **outputs, VstInt32 prevSampleR = drySampleR; flip = !flip; - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -280,10 +268,4 @@ void Spiral2::processDoubleReplacing(double **inputs, double **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/LinuxVST/src/StarChild/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/StarChild/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/StarChild/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/StarChild/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/StarChild/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..1c72906 --- /dev/null +++ b/plugins/LinuxVST/src/StarChild/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/StarChild/StarChild.cpp b/plugins/LinuxVST/src/StarChild/StarChild.cpp index 84becbc..1b29d50 100755 --- a/plugins/LinuxVST/src/StarChild/StarChild.cpp +++ b/plugins/LinuxVST/src/StarChild/StarChild.cpp @@ -65,11 +65,8 @@ StarChild::StarChild(audioMasterCallback audioMaster) : increment = 1; dutyCycle = 1; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/StarChild/StarChild.h b/plugins/LinuxVST/src/StarChild/StarChild.h index 7ae986a..630be3c 100755 --- a/plugins/LinuxVST/src/StarChild/StarChild.h +++ b/plugins/LinuxVST/src/StarChild/StarChild.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double d[45102]; diff --git a/plugins/LinuxVST/src/StarChild/StarChildProc.cpp b/plugins/LinuxVST/src/StarChild/StarChildProc.cpp index 03c8e31..047948a 100755 --- a/plugins/LinuxVST/src/StarChild/StarChildProc.cpp +++ b/plugins/LinuxVST/src/StarChild/StarChildProc.cpp @@ -14,9 +14,6 @@ void StarChild::processReplacing(float **inputs, float **outputs, VstInt32 sampl float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double drySampleL; double drySampleR; @@ -392,25 +389,14 @@ void StarChild::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleR += drySampleR; //here we combine the tanks with the dry signal - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -429,9 +415,6 @@ void StarChild::processDoubleReplacing(double **inputs, double **outputs, VstInt double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double drySampleL; double drySampleR; @@ -807,25 +790,16 @@ void StarChild::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleR += drySampleR; //here we combine the tanks with the dry signal - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/StereoFX/StereoFX.cpp b/plugins/LinuxVST/src/StereoFX/StereoFX.cpp index 63c23db..704cbf3 100755 --- a/plugins/LinuxVST/src/StereoFX/StereoFX.cpp +++ b/plugins/LinuxVST/src/StereoFX/StereoFX.cpp @@ -17,10 +17,8 @@ StereoFX::StereoFX(audioMasterCallback audioMaster) : C = 0.0; iirSampleA = 0.0; iirSampleB = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; flip = false; //this is reset: values being initialized only once. Startup values, whatever they are. diff --git a/plugins/LinuxVST/src/StereoFX/StereoFX.h b/plugins/LinuxVST/src/StereoFX/StereoFX.h index 6748d1e..7a36059 100755 --- a/plugins/LinuxVST/src/StereoFX/StereoFX.h +++ b/plugins/LinuxVST/src/StereoFX/StereoFX.h @@ -56,10 +56,8 @@ private: double iirSampleA; double iirSampleB; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; + long double fpNShapeL; + long double fpNShapeR; bool flip; //default stuff diff --git a/plugins/LinuxVST/src/StereoFX/StereoFXProc.cpp b/plugins/LinuxVST/src/StereoFX/StereoFXProc.cpp index 49be44f..0e9de74 100755 --- a/plugins/LinuxVST/src/StereoFX/StereoFXProc.cpp +++ b/plugins/LinuxVST/src/StereoFX/StereoFXProc.cpp @@ -17,9 +17,6 @@ void StereoFX::processReplacing(float **inputs, float **outputs, VstInt32 sample double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; long double mid; @@ -138,25 +135,14 @@ void StereoFX::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -178,9 +164,6 @@ void StereoFX::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; long double mid; @@ -299,25 +282,16 @@ void StereoFX::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; - //noise shaping to 64-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - flip = !flip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Surge/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Surge/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Surge/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Surge/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Surge/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..03e6045 --- /dev/null +++ b/plugins/LinuxVST/src/Surge/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Surge/Surge.cpp b/plugins/LinuxVST/src/Surge/Surge.cpp index 711c0df..222fbcf 100755 --- a/plugins/LinuxVST/src/Surge/Surge.cpp +++ b/plugins/LinuxVST/src/Surge/Surge.cpp @@ -12,10 +12,8 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new S Surge::Surge(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, kNumPrograms, kNumParameters) { - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; flip = true; chaseA = 0.0; chaseB = 0.0; diff --git a/plugins/LinuxVST/src/Surge/Surge.h b/plugins/LinuxVST/src/Surge/Surge.h index 0e485c3..7f42c9f 100755 --- a/plugins/LinuxVST/src/Surge/Surge.h +++ b/plugins/LinuxVST/src/Surge/Surge.h @@ -53,10 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; + long double fpNShapeL; + long double fpNShapeR; bool flip; long double chaseA; long double chaseB; diff --git a/plugins/LinuxVST/src/Surge/SurgeProc.cpp b/plugins/LinuxVST/src/Surge/SurgeProc.cpp index 7a72b2f..cd82bad 100755 --- a/plugins/LinuxVST/src/Surge/SurgeProc.cpp +++ b/plugins/LinuxVST/src/Surge/SurgeProc.cpp @@ -17,9 +17,6 @@ void Surge::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -120,27 +117,14 @@ void Surge::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra inputSampleR = drySampleR - (inputSampleR * intensity); inputSampleR = (drySampleR * dry) + (inputSampleR * wet); - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -162,9 +146,6 @@ void Surge::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -264,27 +245,16 @@ void Surge::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s inputSampleR = drySampleR - (inputSampleR * intensity); inputSampleR = (drySampleR * dry) + (inputSampleR * wet); - //noise shaping to 64-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/SurgeTide/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/SurgeTide/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/SurgeTide/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/SurgeTide/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/SurgeTide/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..17702f9 --- /dev/null +++ b/plugins/LinuxVST/src/SurgeTide/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/SurgeTide/SurgeTide.cpp b/plugins/LinuxVST/src/SurgeTide/SurgeTide.cpp index 8df46c0..494e886 100755 --- a/plugins/LinuxVST/src/SurgeTide/SurgeTide.cpp +++ b/plugins/LinuxVST/src/SurgeTide/SurgeTide.cpp @@ -15,10 +15,8 @@ SurgeTide::SurgeTide(audioMasterCallback audioMaster) : A = 0.5; B = 0.3; C = 1.0; - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; flip = true; chaseA = 0.0; chaseB = 0.0; diff --git a/plugins/LinuxVST/src/SurgeTide/SurgeTide.h b/plugins/LinuxVST/src/SurgeTide/SurgeTide.h index 27495d7..8f8cd42 100755 --- a/plugins/LinuxVST/src/SurgeTide/SurgeTide.h +++ b/plugins/LinuxVST/src/SurgeTide/SurgeTide.h @@ -54,10 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; + long double fpNShapeL; + long double fpNShapeR; bool flip; long double chaseA; long double chaseB; diff --git a/plugins/LinuxVST/src/SurgeTide/SurgeTideProc.cpp b/plugins/LinuxVST/src/SurgeTide/SurgeTideProc.cpp index 2fc6a1a..59a92aa 100755 --- a/plugins/LinuxVST/src/SurgeTide/SurgeTideProc.cpp +++ b/plugins/LinuxVST/src/SurgeTide/SurgeTideProc.cpp @@ -17,9 +17,6 @@ void SurgeTide::processReplacing(float **inputs, float **outputs, VstInt32 sampl double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -110,27 +107,14 @@ void SurgeTide::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleR = drySampleR - (inputSampleR * intensity); inputSampleR = (drySampleR * dry) + (inputSampleR * wet); - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -152,9 +136,6 @@ void SurgeTide::processDoubleReplacing(double **inputs, double **outputs, VstInt double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -245,27 +226,16 @@ void SurgeTide::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleR = drySampleR - (inputSampleR * intensity); inputSampleR = (drySampleR * dry) + (inputSampleR * wet); - //noise shaping to 64-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Swell/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Swell/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Swell/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Swell/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Swell/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..f1f16de --- /dev/null +++ b/plugins/LinuxVST/src/Swell/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Swell/Swell.cpp b/plugins/LinuxVST/src/Swell/Swell.cpp index 30518d8..e197cfb 100755 --- a/plugins/LinuxVST/src/Swell/Swell.cpp +++ b/plugins/LinuxVST/src/Swell/Swell.cpp @@ -21,11 +21,8 @@ Swell::Swell(audioMasterCallback audioMaster) : louderL = false; louderR = false; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Swell/Swell.h b/plugins/LinuxVST/src/Swell/Swell.h index c383df2..7c108b7 100755 --- a/plugins/LinuxVST/src/Swell/Swell.h +++ b/plugins/LinuxVST/src/Swell/Swell.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff diff --git a/plugins/LinuxVST/src/Swell/SwellProc.cpp b/plugins/LinuxVST/src/Swell/SwellProc.cpp index 28c0aba..3ab1e9b 100755 --- a/plugins/LinuxVST/src/Swell/SwellProc.cpp +++ b/plugins/LinuxVST/src/Swell/SwellProc.cpp @@ -17,9 +17,6 @@ void Swell::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double thresholdOn = pow(A,2) * B; double speedOn = (pow(B,2)*0.001)/overallscale; @@ -97,25 +94,14 @@ void Swell::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -137,9 +123,6 @@ void Swell::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double thresholdOn = pow(A,2) * B; double speedOn = (pow(B,2)*0.001)/overallscale; @@ -217,25 +200,16 @@ void Swell::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/TapeDelay/TapeDelayProc.cpp b/plugins/LinuxVST/src/TapeDelay/TapeDelayProc.cpp index 43fa743..e2f1ade 100755 --- a/plugins/LinuxVST/src/TapeDelay/TapeDelayProc.cpp +++ b/plugins/LinuxVST/src/TapeDelay/TapeDelayProc.cpp @@ -156,18 +156,14 @@ void TapeDelay::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleL = (inputSampleL * dry) + (dL[delay] * wet); inputSampleR = (inputSampleR * dry) + (dR[delay] * wet); - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -177,12 +173,6 @@ void TapeDelay::processReplacing(float **inputs, float **outputs, VstInt32 sampl *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void TapeDelay::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -333,18 +323,16 @@ void TapeDelay::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleL = (inputSampleL * dry) + (dL[delay] * wet); inputSampleR = (inputSampleR * dry) + (dR[delay] * wet); - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -354,10 +342,4 @@ void TapeDelay::processDoubleReplacing(double **inputs, double **outputs, VstInt *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/LinuxVST/src/TapeDust/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/TapeDust/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/TapeDust/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/TapeDust/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/TapeDust/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..df95641 --- /dev/null +++ b/plugins/LinuxVST/src/TapeDust/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/TapeDust/TapeDust.cpp b/plugins/LinuxVST/src/TapeDust/TapeDust.cpp index 9638c14..0ce16e0 100755 --- a/plugins/LinuxVST/src/TapeDust/TapeDust.cpp +++ b/plugins/LinuxVST/src/TapeDust/TapeDust.cpp @@ -22,10 +22,8 @@ TapeDust::TapeDust(audioMasterCallback audioMaster) : fR[count] = 0.0; } - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; fpFlip = true; //this is reset: values being initialized only once. Startup values, whatever they are. diff --git a/plugins/LinuxVST/src/TapeDust/TapeDust.h b/plugins/LinuxVST/src/TapeDust/TapeDust.h index 7b3a7fd..facbf40 100755 --- a/plugins/LinuxVST/src/TapeDust/TapeDust.h +++ b/plugins/LinuxVST/src/TapeDust/TapeDust.h @@ -53,10 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; + long double fpNShapeL; + long double fpNShapeR; bool fpFlip; //default stuff diff --git a/plugins/LinuxVST/src/TapeDust/TapeDustProc.cpp b/plugins/LinuxVST/src/TapeDust/TapeDustProc.cpp index 3d6588d..429a366 100755 --- a/plugins/LinuxVST/src/TapeDust/TapeDustProc.cpp +++ b/plugins/LinuxVST/src/TapeDust/TapeDustProc.cpp @@ -13,9 +13,6 @@ void TapeDust::processReplacing(float **inputs, float **outputs, VstInt32 sample float* in2 = inputs[1]; float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -93,6 +90,7 @@ void TapeDust::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleL = -inputSampleL; inputSampleR = -inputSampleR; } + fpFlip = !fpFlip; for(int count = 0; count < 9; count++) { if (gainL > 1.0) { @@ -120,25 +118,14 @@ void TapeDust::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -156,9 +143,6 @@ void TapeDust::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double* in2 = inputs[1]; double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -236,6 +220,7 @@ void TapeDust::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleL = -inputSampleL; inputSampleR = -inputSampleR; } + fpFlip = !fpFlip; for(int count = 0; count < 9; count++) { if (gainL > 1.0) { @@ -263,25 +248,16 @@ void TapeDust::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/TapeFat/TapeFatProc.cpp b/plugins/LinuxVST/src/TapeFat/TapeFatProc.cpp index 3f81d20..8eb0e98 100755 --- a/plugins/LinuxVST/src/TapeFat/TapeFatProc.cpp +++ b/plugins/LinuxVST/src/TapeFat/TapeFatProc.cpp @@ -119,18 +119,14 @@ void TapeFat::processReplacing(float **inputs, float **outputs, VstInt32 sampleF gcount--; - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -140,12 +136,6 @@ void TapeFat::processReplacing(float **inputs, float **outputs, VstInt32 sampleF *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void TapeFat::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -260,18 +250,16 @@ void TapeFat::processDoubleReplacing(double **inputs, double **outputs, VstInt32 gcount--; - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -281,10 +269,4 @@ void TapeFat::processDoubleReplacing(double **inputs, double **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/LinuxVST/src/Thunder/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Thunder/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Thunder/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Thunder/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Thunder/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..b01488d --- /dev/null +++ b/plugins/LinuxVST/src/Thunder/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Thunder/Thunder.cpp b/plugins/LinuxVST/src/Thunder/Thunder.cpp index 015eabd..7bc8226 100755 --- a/plugins/LinuxVST/src/Thunder/Thunder.cpp +++ b/plugins/LinuxVST/src/Thunder/Thunder.cpp @@ -15,10 +15,8 @@ Thunder::Thunder(audioMasterCallback audioMaster) : A = 0.0; B = 1.0; - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; muSpeedA = 10000; muSpeedB = 10000; muCoefficientA = 1; diff --git a/plugins/LinuxVST/src/Thunder/Thunder.h b/plugins/LinuxVST/src/Thunder/Thunder.h index 1ef1d03..9e49054 100755 --- a/plugins/LinuxVST/src/Thunder/Thunder.h +++ b/plugins/LinuxVST/src/Thunder/Thunder.h @@ -69,10 +69,8 @@ private: double iirSampleAM; double iirSampleBM; double iirSampleCM; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; + long double fpNShapeL; + long double fpNShapeR; bool flip; float A; diff --git a/plugins/LinuxVST/src/Thunder/ThunderProc.cpp b/plugins/LinuxVST/src/Thunder/ThunderProc.cpp index bd401d4..2cf454d 100755 --- a/plugins/LinuxVST/src/Thunder/ThunderProc.cpp +++ b/plugins/LinuxVST/src/Thunder/ThunderProc.cpp @@ -40,9 +40,6 @@ void Thunder::processReplacing(float **inputs, float **outputs, VstInt32 sampleF double resultML; double resultMR; - float fpTemp; - double fpOld = 0.618033988749894848204586; //golden ratio! - double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -225,27 +222,14 @@ void Thunder::processReplacing(float **inputs, float **outputs, VstInt32 sampleF inputSampleR *= outputGain; } - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; @@ -291,9 +275,6 @@ void Thunder::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double resultML; double resultMR; - double fpTemp; - double fpOld = 0.618033988749894848204586; //golden ratio! - double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -476,27 +457,16 @@ void Thunder::processDoubleReplacing(double **inputs, double **outputs, VstInt32 inputSampleR *= outputGain; } - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; diff --git a/plugins/LinuxVST/src/ToTape5/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/ToTape5/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/ToTape5/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/ToTape5/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/ToTape5/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..b0c4487 --- /dev/null +++ b/plugins/LinuxVST/src/ToTape5/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/ToTape5/ToTape5.cpp b/plugins/LinuxVST/src/ToTape5/ToTape5.cpp index 01f61cb..6136aaf 100755 --- a/plugins/LinuxVST/src/ToTape5/ToTape5.cpp +++ b/plugins/LinuxVST/src/ToTape5/ToTape5.cpp @@ -98,11 +98,8 @@ ToTape5::ToTape5(audioMasterCallback audioMaster) : hcount = 0; flip = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/ToTape5/ToTape5.h b/plugins/LinuxVST/src/ToTape5/ToTape5.h index ac26df5..d049014 100755 --- a/plugins/LinuxVST/src/ToTape5/ToTape5.h +++ b/plugins/LinuxVST/src/ToTape5/ToTape5.h @@ -140,11 +140,8 @@ private: double iirSampleZR; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/ToTape5/ToTape5Proc.cpp b/plugins/LinuxVST/src/ToTape5/ToTape5Proc.cpp index 4d2d5c7..5824f80 100755 --- a/plugins/LinuxVST/src/ToTape5/ToTape5Proc.cpp +++ b/plugins/LinuxVST/src/ToTape5/ToTape5Proc.cpp @@ -17,7 +17,7 @@ void ToTape5::processReplacing(float **inputs, float **outputs, VstInt32 sampleF double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - + long double fpOld = 0.618033988749894848204586; //golden ratio! double inputgain = pow(A+1.0,3); double outputgain = E; double wet = F; @@ -63,9 +63,6 @@ void ToTape5::processReplacing(float **inputs, float **outputs, VstInt32 sampleF double tempSampleR; double drySampleR; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -358,25 +355,14 @@ void ToTape5::processReplacing(float **inputs, float **outputs, VstInt32 sampleF inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -398,7 +384,7 @@ void ToTape5::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - + long double fpOld = 0.618033988749894848204586; //golden ratio! double inputgain = pow(A+1.0,3); double outputgain = E; double wet = F; @@ -443,10 +429,6 @@ void ToTape5::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double bridgerectifierR; double tempSampleR; double drySampleR; - - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -738,25 +720,16 @@ void ToTape5::processDoubleReplacing(double **inputs, double **outputs, VstInt32 inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/ToVinyl4/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/ToVinyl4/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/ToVinyl4/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/ToVinyl4/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/ToVinyl4/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..33b5837 --- /dev/null +++ b/plugins/LinuxVST/src/ToVinyl4/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/ToVinyl4/ToVinyl4.cpp b/plugins/LinuxVST/src/ToVinyl4/ToVinyl4.cpp index b0c91f8..429187c 100755 --- a/plugins/LinuxVST/src/ToVinyl4/ToVinyl4.cpp +++ b/plugins/LinuxVST/src/ToVinyl4/ToVinyl4.cpp @@ -87,11 +87,8 @@ ToVinyl4::ToVinyl4(audioMasterCallback audioMaster) : B = 0.3424051; //44.0 hz = ((B*B)*290)+10 (B*B)*290 = 34 (B*B) = 0.1172413 sqrt() = 0.3424051 C = 0.32; D = 0.064; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/ToVinyl4/ToVinyl4.h b/plugins/LinuxVST/src/ToVinyl4/ToVinyl4.h index 57bffac..6a2dc26 100755 --- a/plugins/LinuxVST/src/ToVinyl4/ToVinyl4.h +++ b/plugins/LinuxVST/src/ToVinyl4/ToVinyl4.h @@ -142,11 +142,8 @@ private: double bMidPrev; double bSidePrev; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/ToVinyl4/ToVinyl4Proc.cpp b/plugins/LinuxVST/src/ToVinyl4/ToVinyl4Proc.cpp index 8d9dc0c..a67af99 100755 --- a/plugins/LinuxVST/src/ToVinyl4/ToVinyl4Proc.cpp +++ b/plugins/LinuxVST/src/ToVinyl4/ToVinyl4Proc.cpp @@ -17,9 +17,6 @@ void ToVinyl4::processReplacing(float **inputs, float **outputs, VstInt32 sample double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double fusswithscale = 50000; //corrected double cutofffreq = ((A*A)*290.0)+10.0; @@ -464,25 +461,14 @@ void ToVinyl4::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleR = accumulatorSample; //we just re-use accumulatorSample to do this little shuffle - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -504,9 +490,6 @@ void ToVinyl4::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double fusswithscale = 50000; //corrected double cutofffreq = ((A*A)*290.0)+10.0; @@ -950,25 +933,16 @@ void ToVinyl4::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleR = accumulatorSample; //we just re-use accumulatorSample to do this little shuffle - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/ToneSlant/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/ToneSlant/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/ToneSlant/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/ToneSlant/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/ToneSlant/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..b31a1bb --- /dev/null +++ b/plugins/LinuxVST/src/ToneSlant/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/ToneSlant/ToneSlant.cpp b/plugins/LinuxVST/src/ToneSlant/ToneSlant.cpp index 0ed3618..d99fa60 100755 --- a/plugins/LinuxVST/src/ToneSlant/ToneSlant.cpp +++ b/plugins/LinuxVST/src/ToneSlant/ToneSlant.cpp @@ -15,11 +15,8 @@ ToneSlant::ToneSlant(audioMasterCallback audioMaster) : A = 0.0; B = 0.0; for(int count = 0; count < 102; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;} - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/ToneSlant/ToneSlant.h b/plugins/LinuxVST/src/ToneSlant/ToneSlant.h index 655cc55..7c52bca 100755 --- a/plugins/LinuxVST/src/ToneSlant/ToneSlant.h +++ b/plugins/LinuxVST/src/ToneSlant/ToneSlant.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/ToneSlant/ToneSlantProc.cpp b/plugins/LinuxVST/src/ToneSlant/ToneSlantProc.cpp index b594b05..d78cfb5 100755 --- a/plugins/LinuxVST/src/ToneSlant/ToneSlantProc.cpp +++ b/plugins/LinuxVST/src/ToneSlant/ToneSlantProc.cpp @@ -14,9 +14,6 @@ void ToneSlant::processReplacing(float **inputs, float **outputs, VstInt32 sampl float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputSampleL; double inputSampleR; @@ -109,25 +106,14 @@ void ToneSlant::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleR += (correctionSampleR * applySlant); //our one math operation on the input data coming in - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -146,9 +132,6 @@ void ToneSlant::processDoubleReplacing(double **inputs, double **outputs, VstInt double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputSampleL; double inputSampleR; @@ -240,25 +223,16 @@ void ToneSlant::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleR += (correctionSampleR * applySlant); //our one math operation on the input data coming in - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/TransDesk/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/TransDesk/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/TransDesk/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/TransDesk/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/TransDesk/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..1e5676d --- /dev/null +++ b/plugins/LinuxVST/src/TransDesk/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/TransDesk/TransDesk.cpp b/plugins/LinuxVST/src/TransDesk/TransDesk.cpp index 24443bd..3f352f7 100755 --- a/plugins/LinuxVST/src/TransDesk/TransDesk.cpp +++ b/plugins/LinuxVST/src/TransDesk/TransDesk.cpp @@ -25,11 +25,8 @@ TransDesk::TransDesk(audioMasterCallback audioMaster) : lastOutSampleR = 0.0; lastSlewR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/TransDesk/TransDesk.h b/plugins/LinuxVST/src/TransDesk/TransDesk.h index b3b891d..5729b4c 100755 --- a/plugins/LinuxVST/src/TransDesk/TransDesk.h +++ b/plugins/LinuxVST/src/TransDesk/TransDesk.h @@ -51,11 +51,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff int gcount; diff --git a/plugins/LinuxVST/src/TransDesk/TransDeskProc.cpp b/plugins/LinuxVST/src/TransDesk/TransDeskProc.cpp index c7df5e8..c8b45c2 100755 --- a/plugins/LinuxVST/src/TransDesk/TransDeskProc.cpp +++ b/plugins/LinuxVST/src/TransDesk/TransDeskProc.cpp @@ -17,9 +17,6 @@ void TransDesk::processReplacing(float **inputs, float **outputs, VstInt32 sampl double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double intensity = 0.02198359; double depthA = 3.0; @@ -200,25 +197,14 @@ void TransDesk::processReplacing(float **inputs, float **outputs, VstInt32 sampl gcount--; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -240,9 +226,6 @@ void TransDesk::processDoubleReplacing(double **inputs, double **outputs, VstInt double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double intensity = 0.02198359; double depthA = 3.0; @@ -423,25 +406,16 @@ void TransDesk::processDoubleReplacing(double **inputs, double **outputs, VstInt gcount--; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Tremolo/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Tremolo/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/Tremolo/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/Tremolo/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Tremolo/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..9d04545 --- /dev/null +++ b/plugins/LinuxVST/src/Tremolo/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/Tremolo/Tremolo.cpp b/plugins/LinuxVST/src/Tremolo/Tremolo.cpp index be5d06d..f0b649d 100755 --- a/plugins/LinuxVST/src/Tremolo/Tremolo.cpp +++ b/plugins/LinuxVST/src/Tremolo/Tremolo.cpp @@ -21,11 +21,8 @@ Tremolo::Tremolo(audioMasterCallback audioMaster) : depthAmount = 0.0; lastSpeed = 1000.0; lastDepth = 1000.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Tremolo/Tremolo.h b/plugins/LinuxVST/src/Tremolo/Tremolo.h index ea40aa6..11fc718 100755 --- a/plugins/LinuxVST/src/Tremolo/Tremolo.h +++ b/plugins/LinuxVST/src/Tremolo/Tremolo.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double sweep; diff --git a/plugins/LinuxVST/src/Tremolo/TremoloProc.cpp b/plugins/LinuxVST/src/Tremolo/TremoloProc.cpp index d0de7cc..d27dc86 100755 --- a/plugins/LinuxVST/src/Tremolo/TremoloProc.cpp +++ b/plugins/LinuxVST/src/Tremolo/TremoloProc.cpp @@ -17,9 +17,6 @@ void Tremolo::processReplacing(float **inputs, float **outputs, VstInt32 sampleF double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; speedChase = pow(A,4); depthChase = B; @@ -151,25 +148,14 @@ void Tremolo::processReplacing(float **inputs, float **outputs, VstInt32 sampleF inputSampleR = (drySampleR * (1-depth)) + (inputSampleR*depth); //end R - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -191,9 +177,6 @@ void Tremolo::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; speedChase = pow(A,4); depthChase = B; @@ -326,25 +309,16 @@ void Tremolo::processDoubleReplacing(double **inputs, double **outputs, VstInt32 inputSampleR = (drySampleR * (1-depth)) + (inputSampleR*depth); //end R - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/TubeDesk/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/TubeDesk/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/TubeDesk/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/TubeDesk/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/TubeDesk/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..318d2bc --- /dev/null +++ b/plugins/LinuxVST/src/TubeDesk/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/TubeDesk/TubeDesk.cpp b/plugins/LinuxVST/src/TubeDesk/TubeDesk.cpp index fc4bd75..5a7465c 100755 --- a/plugins/LinuxVST/src/TubeDesk/TubeDesk.cpp +++ b/plugins/LinuxVST/src/TubeDesk/TubeDesk.cpp @@ -25,11 +25,8 @@ TubeDesk::TubeDesk(audioMasterCallback audioMaster) : lastOutSampleR = 0.0; lastSlewR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/TubeDesk/TubeDesk.h b/plugins/LinuxVST/src/TubeDesk/TubeDesk.h index b41b283..fb15768 100755 --- a/plugins/LinuxVST/src/TubeDesk/TubeDesk.h +++ b/plugins/LinuxVST/src/TubeDesk/TubeDesk.h @@ -51,11 +51,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff int gcount; diff --git a/plugins/LinuxVST/src/TubeDesk/TubeDeskProc.cpp b/plugins/LinuxVST/src/TubeDesk/TubeDeskProc.cpp index 2636076..cccf6e2 100755 --- a/plugins/LinuxVST/src/TubeDesk/TubeDeskProc.cpp +++ b/plugins/LinuxVST/src/TubeDesk/TubeDeskProc.cpp @@ -17,9 +17,6 @@ void TubeDesk::processReplacing(float **inputs, float **outputs, VstInt32 sample double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double intensity = 0.4384938; double depthA = 549.0; @@ -199,25 +196,14 @@ void TubeDesk::processReplacing(float **inputs, float **outputs, VstInt32 sample gcount--; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -239,9 +225,6 @@ void TubeDesk::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double intensity = 0.4384938; double depthA = 549.0; @@ -421,25 +404,16 @@ void TubeDesk::processDoubleReplacing(double **inputs, double **outputs, VstInt3 gcount--; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/UnBox/UnBoxProc.cpp b/plugins/LinuxVST/src/UnBox/UnBoxProc.cpp index 12133dc..3cb3aab 100755 --- a/plugins/LinuxVST/src/UnBox/UnBoxProc.cpp +++ b/plugins/LinuxVST/src/UnBox/UnBoxProc.cpp @@ -218,18 +218,14 @@ void UnBox::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra if (output != 1.0) {inputSampleL *= output; inputSampleR *= output;} - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -239,12 +235,6 @@ void UnBox::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void UnBox::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -458,18 +448,16 @@ void UnBox::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s if (output != 1.0) {inputSampleL *= output; inputSampleR *= output;} - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -479,10 +467,4 @@ void UnBox::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/LinuxVST/src/VariMu/VariMuProc.cpp b/plugins/LinuxVST/src/VariMu/VariMuProc.cpp index b966cd8..323b5e4 100755 --- a/plugins/LinuxVST/src/VariMu/VariMuProc.cpp +++ b/plugins/LinuxVST/src/VariMu/VariMuProc.cpp @@ -233,18 +233,14 @@ void VariMu::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -254,12 +250,6 @@ void VariMu::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void VariMu::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -488,18 +478,16 @@ void VariMu::processDoubleReplacing(double **inputs, double **outputs, VstInt32 //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -509,10 +497,4 @@ void VariMu::processDoubleReplacing(double **inputs, double **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/LinuxVST/src/VoiceOfTheStarship/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/VoiceOfTheStarship/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/LinuxVST/src/VoiceOfTheStarship/.vs/Console4Channel64/v14/.suo diff --git a/plugins/LinuxVST/src/VoiceOfTheStarship/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/VoiceOfTheStarship/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..29e8736 --- /dev/null +++ b/plugins/LinuxVST/src/VoiceOfTheStarship/.vs/VSTProject/v14/.suo diff --git a/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarship.cpp b/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarship.cpp index c30bd47..19f1d94 100644..100755 --- a/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarship.cpp +++ b/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarship.cpp @@ -28,11 +28,8 @@ VoiceOfTheStarship::VoiceOfTheStarship(audioMasterCallback audioMaster) : for(int count = 0; count < 11; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;} lastAlgorithm = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarship.h b/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarship.h index febb344..519923b 100644..100755 --- a/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarship.h +++ b/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarship.h @@ -73,11 +73,8 @@ private: int lastAlgorithm; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarshipProc.cpp b/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarshipProc.cpp index 32979d0..bbb14fa 100644..100755 --- a/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarshipProc.cpp +++ b/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarshipProc.cpp @@ -79,9 +79,6 @@ void VoiceOfTheStarship::processReplacing(float **inputs, float **outputs, VstIn double inputSampleL; double inputSampleR; - float fpTemp; - double fpOld = 0.618033988749894848204586; //golden ratio! - double fpNew = 1.0 - fpOld; while (--sampleFrames >= 0) { @@ -181,25 +178,14 @@ void VoiceOfTheStarship::processReplacing(float **inputs, float **outputs, VstIn filterflip = !filterflip; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -283,9 +269,6 @@ void VoiceOfTheStarship::processDoubleReplacing(double **inputs, double **output double inputSampleL; double inputSampleR; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; while (--sampleFrames >= 0) { @@ -384,25 +367,16 @@ void VoiceOfTheStarship::processDoubleReplacing(double **inputs, double **output flipR = !flipR; filterflip = !filterflip; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/Wider/Wider.cpp b/plugins/LinuxVST/src/Wider/Wider.cpp index c1e57d0..26d4d47 100755 --- a/plugins/LinuxVST/src/Wider/Wider.cpp +++ b/plugins/LinuxVST/src/Wider/Wider.cpp @@ -17,11 +17,8 @@ Wider::Wider(audioMasterCallback audioMaster) : C = 1.0; for(int fcount = 0; fcount < 4098; fcount++) {p[fcount] = 0.0;} count = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/LinuxVST/src/Wider/Wider.h b/plugins/LinuxVST/src/Wider/Wider.h index 8b04cfb..6a6a2df 100755 --- a/plugins/LinuxVST/src/Wider/Wider.h +++ b/plugins/LinuxVST/src/Wider/Wider.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double p[4099]; diff --git a/plugins/LinuxVST/src/Wider/WiderProc.cpp b/plugins/LinuxVST/src/Wider/WiderProc.cpp index 618e651..f90fa21 100755 --- a/plugins/LinuxVST/src/Wider/WiderProc.cpp +++ b/plugins/LinuxVST/src/Wider/WiderProc.cpp @@ -17,9 +17,6 @@ void Wider::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -141,25 +138,14 @@ void Wider::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra inputSampleL = (drySampleL * dry) + ((mid+side) * wet); inputSampleR = (drySampleR * dry) + ((mid-side) * wet); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -181,9 +167,6 @@ void Wider::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -305,25 +288,16 @@ void Wider::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s inputSampleL = (drySampleL * dry) + ((mid+side) * wet); inputSampleR = (drySampleR * dry) + ((mid-side) * wet); - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/LinuxVST/src/uLawDecode/uLawDecodeProc.cpp b/plugins/LinuxVST/src/uLawDecode/uLawDecodeProc.cpp index a78b3c2..1835623 100755 --- a/plugins/LinuxVST/src/uLawDecode/uLawDecodeProc.cpp +++ b/plugins/LinuxVST/src/uLawDecode/uLawDecodeProc.cpp @@ -88,18 +88,14 @@ void uLawDecode::processReplacing(float **inputs, float **outputs, VstInt32 samp inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -109,12 +105,6 @@ void uLawDecode::processReplacing(float **inputs, float **outputs, VstInt32 samp *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void uLawDecode::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -198,18 +188,16 @@ void uLawDecode::processDoubleReplacing(double **inputs, double **outputs, VstIn inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -219,10 +207,4 @@ void uLawDecode::processDoubleReplacing(double **inputs, double **outputs, VstIn *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/LinuxVST/src/uLawEncode/uLawEncodeProc.cpp b/plugins/LinuxVST/src/uLawEncode/uLawEncodeProc.cpp index 3d86a7f..c5dd74d 100755 --- a/plugins/LinuxVST/src/uLawEncode/uLawEncodeProc.cpp +++ b/plugins/LinuxVST/src/uLawEncode/uLawEncodeProc.cpp @@ -88,18 +88,14 @@ void uLawEncode::processReplacing(float **inputs, float **outputs, VstInt32 samp inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -109,12 +105,6 @@ void uLawEncode::processReplacing(float **inputs, float **outputs, VstInt32 samp *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void uLawEncode::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -198,18 +188,16 @@ void uLawEncode::processDoubleReplacing(double **inputs, double **outputs, VstIn inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -219,10 +207,4 @@ void uLawEncode::processDoubleReplacing(double **inputs, double **outputs, VstIn *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacAU/ADClip7/ADClip7.cpp b/plugins/MacAU/ADClip7/ADClip7.cpp index 688c254..4835b0f 100755 --- a/plugins/MacAU/ADClip7/ADClip7.cpp +++ b/plugins/MacAU/ADClip7/ADClip7.cpp @@ -205,9 +205,7 @@ void ADClip7::ADClip7Kernel::Reset() refclip = 0.99; iirLowsA = 0.0; iirLowsB = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -225,7 +223,6 @@ void ADClip7::ADClip7Kernel::Process( const Float32 *inSourceP, Float64 overallscale = 1.0; overallscale /= 44100.0; overallscale *= GetSampleRate(); - Float32 fpTemp; Float64 fpOld = 0.618033988749894848204586; //golden ratio! Float64 fpNew = 1.0 - fpOld; @@ -479,19 +476,11 @@ void ADClip7::ADClip7Kernel::Process( const Float32 *inSourceP, if (inputSample < -refclip) inputSample = -refclip; //final iron bar - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = not fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/ADClip7/ADClip7.h b/plugins/MacAU/ADClip7/ADClip7.h index 5388f80..215cc2c 100755 --- a/plugins/MacAU/ADClip7/ADClip7.h +++ b/plugins/MacAU/ADClip7/ADClip7.h @@ -148,9 +148,7 @@ public: Float64 iirLowsA; Float64 iirLowsB; long double refclip; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/ADClip7/ADClip7.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/ADClip7/ADClip7.xcodeproj/christopherjohnson.pbxuser index 6d857bb..941868c 100755 --- a/plugins/MacAU/ADClip7/ADClip7.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/ADClip7/ADClip7.xcodeproj/christopherjohnson.pbxuser @@ -49,55 +49,45 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 538004990; - PBXWorkspaceStateSaveDate = 538004990; + PBXPerProjectTemplateStateSaveDate = 569587824; + PBXWorkspaceStateSaveDate = 569587824; }; perUserProjectItems = { - 8B79CD0220114E0500E8A187 /* PBXTextBookmark */ = 8B79CD0220114E0500E8A187 /* PBXTextBookmark */; - 8B7B31211F8EA92200DC6305 /* PBXTextBookmark */ = 8B7B31211F8EA92200DC6305 /* PBXTextBookmark */; - 8B80DAAF1F83179100B72A72 /* PBXTextBookmark */ = 8B80DAAF1F83179100B72A72 /* PBXTextBookmark */; + 8B79272821F33919006E9731 /* PBXTextBookmark */ = 8B79272821F33919006E9731 /* PBXTextBookmark */; + 8B79273321F33979006E9731 /* PBXTextBookmark */ = 8B79273321F33979006E9731 /* PBXTextBookmark */; 8BAC117C1F8245C00066CBCE /* PlistBookmark */ = 8BAC117C1F8245C00066CBCE /* PlistBookmark */; + 8BBB330321C4563C00825986 /* PBXTextBookmark */ = 8BBB330321C4563C00825986 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B79CD0220114E0500E8A187 /* PBXTextBookmark */ = { + 8B79272821F33919006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* ADClip7.h */; - name = "ADClip7.h: 58"; - rLen = 0; - rLoc = 2914; - rType = 0; - vrLen = 231; - vrLoc = 2754; - }; - 8B7B31211F8EA92200DC6305 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* ADClip7.h */; - name = "ADClip7.h: 58"; - rLen = 0; - rLoc = 2914; + fRef = 8BA05A660720730100365D66 /* ADClip7.cpp */; + name = "ADClip7.cpp: 205"; + rLen = 7; + rLoc = 9006; rType = 0; - vrLen = 253; - vrLoc = 2732; + vrLen = 261; + vrLoc = 9866; }; - 8B80DAAF1F83179100B72A72 /* PBXTextBookmark */ = { + 8B79273321F33979006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* ADClip7.cpp */; name = "ADClip7.cpp: 205"; rLen = 7; rLoc = 9006; rType = 0; - vrLen = 372; - vrLoc = 9703; + vrLen = 215; + vrLoc = 9864; }; 8BA05A660720730100365D66 /* ADClip7.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {980, 7163}}"; - sepNavSelRange = "{18297, 0}"; - sepNavVisRange = "{17647, 1478}"; - sepNavWindowFrame = "{{335, 43}, {1027, 835}}"; + sepNavIntBoundsRect = "{{0, 0}, {572, 6513}}"; + sepNavSelRange = "{9006, 7}"; + sepNavVisRange = "{9864, 215}"; + sepNavWindowFrame = "{{327, 43}, {1027, 835}}"; }; }; 8BA05A690720730100365D66 /* ADClip7Version.h */ = { @@ -120,12 +110,22 @@ rLen = 0; rLoc = 9223372036854775808; }; + 8BBB330321C4563C00825986 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* ADClip7.h */; + name = "ADClip7.h: 58"; + rLen = 0; + rLoc = 2914; + rType = 0; + vrLen = 229; + vrLoc = 2756; + }; 8BC6025B073B072D006C4272 /* ADClip7.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {803, 2197}}"; - sepNavSelRange = "{2914, 0}"; - sepNavVisRange = "{2754, 231}"; - sepNavWindowFrame = "{{859, 43}, {1027, 835}}"; + sepNavIntBoundsRect = "{{0, 0}, {980, 2132}}"; + sepNavSelRange = "{5842, 0}"; + sepNavVisRange = "{4309, 1634}"; + sepNavWindowFrame = "{{413, 43}, {1027, 835}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/ADClip7/ADClip7.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/ADClip7/ADClip7.xcodeproj/christopherjohnson.perspectivev3 index 7b3b431..186a188 100755 --- a/plugins/MacAU/ADClip7/ADClip7.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/ADClip7/ADClip7.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -326,7 +324,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>599 170 841 654 0 0 1440 878 </string> + <string>391 159 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -342,7 +340,7 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274A1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>ADClip7.h</string> + <string>ADClip7.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -350,16 +348,16 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274B1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>ADClip7.h</string> + <string>ADClip7.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B79CD0220114E0500E8A187</string> + <string>8B79273321F33979006E9731</string> <key>history</key> <array> <string>8BAC117C1F8245C00066CBCE</string> - <string>8B80DAAF1F83179100B72A72</string> - <string>8B7B31211F8EA92200DC6305</string> + <string>8BBB330321C4563C00825986</string> + <string>8B79272821F33919006E9731</string> </array> </dict> <key>SplitCount</key> @@ -373,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 126}}</string> + <string>{{0, 0}, {531, 92}}</string> <key>RubberWindowFrame</key> - <string>599 170 841 654 0 0 1440 878 </string> + <string>391 159 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>126pt</string> + <string>92pt</string> </dict> <dict> <key>Proportion</key> - <string>482pt</string> + <string>516pt</string> <key>Tabs</key> <array> <dict> @@ -398,9 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 455}}</string> - <key>RubberWindowFrame</key> - <string>599 170 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 489}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -454,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 379}}</string> + <string>{{10, 27}, {531, 489}}</string> + <key>RubberWindowFrame</key> + <string>391 159 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -482,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B79CD0320114E0500E8A187</string> + <string>8B79273421F33979006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B79CD0420114E0500E8A187</string> + <string>8B79273521F33979006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B79CD0520114E0500E8A187</string> + <string>8B79273621F33979006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -659,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>538004997.98427904</real> + <real>569588089.57457805</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -676,10 +674,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> + <string>8B79273721F33979006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/ADClip7/ADClip7.xcodeproj</string> </array> <key>WindowString</key> - <string>599 170 841 654 0 0 1440 878 </string> + <string>391 159 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/ADT/ADT.cpp b/plugins/MacAU/ADT/ADT.cpp index b12c056..098adaa 100755 --- a/plugins/MacAU/ADT/ADT.cpp +++ b/plugins/MacAU/ADT/ADT.cpp @@ -317,23 +317,15 @@ void ADT::ADTKernel::Process( const Float32 *inSourceP, if (output < 1.0) inputSample *= output; - //noise shaping to 32-bit floating point - Float32 fpTemp = inputSample; - fpNShape += (inputSample-fpTemp); - inputSample += fpNShape; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; } - fpNShape *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacAU/ADT/ADT.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/ADT/ADT.xcodeproj/christopherjohnson.pbxuser index 2f05153..3d176d1 100755 --- a/plugins/MacAU/ADT/ADT.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/ADT/ADT.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 561258474; - PBXWorkspaceStateSaveDate = 561258474; + PBXPerProjectTemplateStateSaveDate = 569588119; + PBXWorkspaceStateSaveDate = 569588119; }; perUserProjectItems = { 8B15DB8E21742E37007AD769 /* PlistBookmark */ = 8B15DB8E21742E37007AD769 /* PlistBookmark */; - 8BE627BC215F0C7700E4E476 /* PlistBookmark */ = 8BE627BC215F0C7700E4E476 /* PlistBookmark */; + 8B79275021F339F0006E9731 /* PlistBookmark */ = 8B79275021F339F0006E9731 /* PlistBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -72,12 +72,24 @@ rLen = 0; rLoc = 0; }; + 8B79275021F339F0006E9731 /* PlistBookmark */ = { + isa = PlistBookmark; + fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; + fallbackIsa = PBXBookmark; + isK = 0; + kPath = ( + CFBundleName, + ); + name = /Users/christopherjohnson/Desktop/MacAU/ADT/Info.plist; + rLen = 0; + rLoc = 0; + }; 8BA05A660720730100365D66 /* ADT.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {719, 4563}}"; - sepNavSelRange = "{14352, 0}"; - sepNavVisRange = "{0, 0}"; - sepNavWindowFrame = "{{701, 68}, {890, 810}}"; + sepNavIntBoundsRect = "{{0, 0}, {843, 4654}}"; + sepNavSelRange = "{13854, 0}"; + sepNavVisRange = "{12187, 1670}"; + sepNavWindowFrame = "{{396, 68}, {890, 810}}"; }; }; 8BA05A690720730100365D66 /* ADTVersion.h */ = { @@ -92,8 +104,8 @@ uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {894, 2028}}"; sepNavSelRange = "{5711, 0}"; - sepNavVisRange = "{2516, 1388}"; - sepNavWindowFrame = "{{712, 68}, {890, 810}}"; + sepNavVisRange = "{4340, 1557}"; + sepNavWindowFrame = "{{550, 68}, {890, 810}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { @@ -110,18 +122,6 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8BE627BC215F0C7700E4E476 /* PlistBookmark */ = { - isa = PlistBookmark; - fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; - fallbackIsa = PBXBookmark; - isK = 0; - kPath = ( - CFBundleName, - ); - name = /Users/christopherjohnson/Desktop/MacAU/ADT/Info.plist; - rLen = 0; - rLoc = 9223372036854775808; - }; 8D01CCC60486CAD60068D4B7 /* ADT */ = { activeExec = 0; }; diff --git a/plugins/MacAU/ADT/ADT.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/ADT/ADT.xcodeproj/christopherjohnson.perspectivev3 index fb2f9be..4fab981 100755 --- a/plugins/MacAU/ADT/ADT.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/ADT/ADT.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>841</integer> - <integer>841</integer> + <integer>653</integer> + <integer>653</integer> </array> <key>Perspectives</key> <array> @@ -324,7 +324,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>775 349 653 504 0 0 1440 878 </string> + <string>597 292 653 504 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,10 +352,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B15DB8E21742E37007AD769</string> + <string>8B79275021F339F0006E9731</string> <key>history</key> <array> - <string>8BE627BC215F0C7700E4E476</string> + <string>8B15DB8E21742E37007AD769</string> </array> </dict> <key>SplitCount</key> @@ -371,7 +371,7 @@ <key>Frame</key> <string>{{0, 0}, {343, 0}}</string> <key>RubberWindowFrame</key> - <string>775 349 653 504 0 0 1440 878 </string> + <string>597 292 653 504 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -395,8 +395,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {343, 431}}</string> - <key>RubberWindowFrame</key> - <string>775 349 653 504 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -450,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 339}}</string> + <string>{{10, 27}, {343, 431}}</string> + <key>RubberWindowFrame</key> + <string>597 292 653 504 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -478,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B15DB7F21741FEB007AD769</string> + <string>8B79274221F339AE006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B15DB8021741FEB007AD769</string> + <string>8B79274321F339AE006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B15DB8121741FEB007AD769</string> + <string>8B79274421F339AE006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -655,7 +655,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>561262135.87675905</real> + <real>569588208.91309297</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -675,7 +675,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/ADT/ADT.xcodeproj</string> </array> <key>WindowString</key> - <string>775 349 653 504 0 0 1440 878 </string> + <string>597 292 653 504 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.cpp b/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.cpp index 9fbaade..8d93557 100755 --- a/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.cpp +++ b/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.cpp @@ -181,10 +181,7 @@ void AQuickVoiceClip::AQuickVoiceClipKernel::Reset() iirSampleC = 0.0; iirSampleD = 0.0; flip = false; - demotimer = 0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -227,9 +224,6 @@ void AQuickVoiceClip::AQuickVoiceClipKernel::Process( const Float32 *inSourceP Float64 outputSample; bool clipOnset; Float64 drySample; - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; while (nSampleFrames-- > 0) { inputSample = *sourceP; @@ -430,21 +424,7 @@ void AQuickVoiceClip::AQuickVoiceClipKernel::Process( const Float32 *inSourceP inputSample += (((lastOutSample + lastOut2Sample + lastOut3Sample) / 3.6)*lpDepth); } if (lpDepth < 0.0) lpDepth = 0.0; - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = not fpFlip; - //end noise shaping on 32 bit output, hasn't been applied yet - + inputSample *= (1.0-maxRecent); inputSample += (passThrough * maxRecent); //there's our raw signal, without antialiasing. Brings up low level stuff and softens more when hot @@ -453,6 +433,11 @@ void AQuickVoiceClip::AQuickVoiceClipKernel::Process( const Float32 *inSourceP if (inputSample < -cliplevel) inputSample = -cliplevel; //final iron bar + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.h b/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.h index ef284bd..5cb485a 100755 --- a/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.h +++ b/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.h @@ -158,11 +158,7 @@ public: Float64 iirSampleC; Float64 iirSampleD; bool flip; - int demotimer; - Float64 fpNShapeA; - Float64 fpNShapeB; - bool fpFlip; - + Float64 fpNShape; }; }; diff --git a/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.pbxuser index f98240c..ec97115 100755 --- a/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.pbxuser @@ -49,29 +49,18 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528421130; - PBXWorkspaceStateSaveDate = 528421130; + PBXPerProjectTemplateStateSaveDate = 569588500; + PBXWorkspaceStateSaveDate = 569588500; }; perUserProjectItems = { - 8B65E4DA1EFF50F700DF9573 /* PBXTextBookmark */ = 8B65E4DA1EFF50F700DF9573 /* PBXTextBookmark */; - 8B9D72231F7EFB95007AB60F /* PBXTextBookmark */ = 8B9D72231F7EFB95007AB60F /* PBXTextBookmark */; + 8B79277E21F33BC7006E9731 /* PBXTextBookmark */ = 8B79277E21F33BC7006E9731 /* PBXTextBookmark */; 8B9D72B61F7F1114007AB60F /* PBXTextBookmark */ = 8B9D72B61F7F1114007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B65E4DA1EFF50F700DF9573 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* AQuickVoiceClip.cpp */; - name = "AQuickVoiceClip.cpp: 420"; - rLen = 0; - rLoc = 16700; - rType = 0; - vrLen = 137; - vrLoc = 14995; - }; - 8B9D72231F7EFB95007AB60F /* PBXTextBookmark */ = { + 8B79277E21F33BC7006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A690720730100365D66 /* AQuickVoiceClipVersion.h */; name = "AQuickVoiceClipVersion.h: 54"; @@ -93,9 +82,9 @@ }; 8BA05A660720730100365D66 /* AQuickVoiceClip.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1468, 5785}}"; - sepNavSelRange = "{11331, 0}"; - sepNavVisRange = "{9752, 2750}"; + sepNavIntBoundsRect = "{{0, 0}, {1104, 6604}}"; + sepNavSelRange = "{16734, 0}"; + sepNavVisRange = "{15329, 1491}"; sepNavWindowFrame = "{{175, 59}, {1151, 803}}"; }; }; @@ -109,9 +98,9 @@ }; 8BC6025B073B072D006C4272 /* AQuickVoiceClip.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1104, 2236}}"; - sepNavSelRange = "{5418, 0}"; - sepNavVisRange = "{1999, 1702}"; + sepNavIntBoundsRect = "{{0, 0}, {1104, 2392}}"; + sepNavSelRange = "{5940, 0}"; + sepNavVisRange = "{4794, 1256}"; sepNavWindowFrame = "{{16, 57}, {1151, 803}}"; }; }; diff --git a/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.perspectivev3 index 278e871..e2f0f99 100755 --- a/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>810</integer> + <integer>810</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -352,11 +350,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D72B61F7F1114007AB60F</string> + <string>8B79277E21F33BC7006E9731</string> <key>history</key> <array> - <string>8B65E4DA1EFF50F700DF9573</string> - <string>8B9D72231F7EFB95007AB60F</string> + <string>8B9D72B61F7F1114007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +367,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {567, 13}}</string> + <string>{{0, 0}, {567, 0}}</string> <key>RubberWindowFrame</key> <string>218 365 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>13pt</string> + <string>0pt</string> </dict> <dict> <key>Proportion</key> - <string>428pt</string> + <string>441pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +392,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {567, 401}}</string> - <key>RubberWindowFrame</key> - <string>218 365 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {567, 414}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +446,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {567, 414}}</string> + <key>RubberWindowFrame</key> + <string>218 365 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +476,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D72B71F7F1114007AB60F</string> + <string>8B79277F21F33BC7006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D72B81F7F1114007AB60F</string> + <string>8B79278021F33BC7006E9731</string> <string>8B81AD171E85459D00889355</string> - <string>8B9D72B91F7F1114007AB60F</string> + <string>8B79278121F33BC7006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +633,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528421140.86927599</real> + <real>569588679.18826604</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,7 +650,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D72BA1F7F1114007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/AQuickVoiceClip/AQuickVoiceClip.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacAU/Acceleration/Acceleration.cpp b/plugins/MacAU/Acceleration/Acceleration.cpp index d389d62..3fe259b 100644..100755 --- a/plugins/MacAU/Acceleration/Acceleration.cpp +++ b/plugins/MacAU/Acceleration/Acceleration.cpp @@ -170,9 +170,7 @@ void Acceleration::AccelerationKernel::Reset() s1L = s2L = s3L = 0.0; o1L = o2L = o3L = 0.0; m1L = m2L = desL = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -190,9 +188,6 @@ void Acceleration::AccelerationKernel::Process( const Float32 *inSourceP, long double overallscale = 1.0; overallscale /= 44100.0; overallscale *= GetSampleRate(); - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; Float64 intensity = pow(GetParameter( kParam_One ),3)*(32/overallscale); Float64 wet = GetParameter( kParam_Two ); @@ -262,19 +257,11 @@ void Acceleration::AccelerationKernel::Process( const Float32 *inSourceP, } //Dry/Wet control, defaults to the last slider - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/Acceleration/Acceleration.h b/plugins/MacAU/Acceleration/Acceleration.h index 57d3b4b..ba5bfd4 100644..100755 --- a/plugins/MacAU/Acceleration/Acceleration.h +++ b/plugins/MacAU/Acceleration/Acceleration.h @@ -138,9 +138,7 @@ public: Float64 m1L; Float64 m2L; Float64 desL; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.mode1v3 b/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.mode1v3 index f301be9..f301be9 100644..100755 --- a/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.mode1v3 +++ b/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.mode1v3 diff --git a/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.pbxuser index f49c30b..0c19d54 100644..100755 --- a/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.pbxuser @@ -49,28 +49,18 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 538705190; - PBXWorkspaceStateSaveDate = 538705190; + PBXPerProjectTemplateStateSaveDate = 569587589; + PBXWorkspaceStateSaveDate = 569587589; }; perUserProjectItems = { - 8B4E5812201C02EE00B5DC2A /* PBXTextBookmark */ = 8B4E5812201C02EE00B5DC2A /* PBXTextBookmark */; 8B6FC0BF20114A1C003CA5F7 /* PlistBookmark */ = 8B6FC0BF20114A1C003CA5F7 /* PlistBookmark */; - 8B79CCF320114DBD00E8A187 /* PBXTextBookmark */ = 8B79CCF320114DBD00E8A187 /* PBXTextBookmark */; + 8B79271221F3383E006E9731 /* PBXTextBookmark */ = 8B79271221F3383E006E9731 /* PBXTextBookmark */; + 8B79271721F3384E006E9731 /* PBXTextBookmark */ = 8B79271721F3384E006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B4E5812201C02EE00B5DC2A /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* Acceleration.cpp */; - name = "Acceleration.cpp: 239"; - rLen = 0; - rLoc = 10522; - rType = 0; - vrLen = 447; - vrLoc = 10210; - }; 8B6FC0BF20114A1C003CA5F7 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; @@ -83,22 +73,32 @@ rLen = 0; rLoc = 9223372036854775808; }; - 8B79CCF320114DBD00E8A187 /* PBXTextBookmark */ = { + 8B79271221F3383E006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Acceleration.cpp */; + name = "Acceleration.cpp: 234"; + rLen = 0; + rLoc = 10370; + rType = 0; + vrLen = 269; + vrLoc = 10290; + }; + 8B79271721F3384E006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Acceleration.cpp */; - name = "Acceleration.cpp: 239"; + name = "Acceleration.cpp: 234"; rLen = 0; - rLoc = 10522; + rLoc = 10370; rType = 0; - vrLen = 488; - vrLoc = 10210; + vrLen = 269; + vrLoc = 10290; }; 8BA05A660720730100365D66 /* Acceleration.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {691, 3718}}"; - sepNavSelRange = "{10522, 0}"; - sepNavVisRange = "{10210, 447}"; - sepNavWindowFrame = "{{537, 39}, {895, 839}}"; + sepNavIntBoundsRect = "{{0, 0}, {684, 3666}}"; + sepNavSelRange = "{10370, 0}"; + sepNavVisRange = "{10290, 269}"; + sepNavWindowFrame = "{{378, 39}, {895, 839}}"; }; }; 8BA05A690720730100365D66 /* AccelerationVersion.h */ = { @@ -111,10 +111,10 @@ }; 8BC6025B073B072D006C4272 /* Acceleration.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1950}}"; - sepNavSelRange = "{5229, 159}"; - sepNavVisRange = "{1351, 2063}"; - sepNavWindowFrame = "{{642, 39}, {895, 839}}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 1872}}"; + sepNavSelRange = "{5413, 0}"; + sepNavVisRange = "{3998, 1517}"; + sepNavWindowFrame = "{{545, 39}, {895, 839}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.perspectivev3 index 2851941..f284420 100644..100755 --- a/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -326,7 +324,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>583 224 841 654 0 0 1440 878 </string> + <string>354 224 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -354,11 +352,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B4E5812201C02EE00B5DC2A</string> + <string>8B79271721F3384E006E9731</string> <key>history</key> <array> <string>8B6FC0BF20114A1C003CA5F7</string> - <string>8B79CCF320114DBD00E8A187</string> + <string>8B79271221F3383E006E9731</string> </array> </dict> <key>SplitCount</key> @@ -372,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 202}}</string> + <string>{{0, 0}, {531, 188}}</string> <key>RubberWindowFrame</key> - <string>583 224 841 654 0 0 1440 878 </string> + <string>354 224 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>202pt</string> + <string>188pt</string> </dict> <dict> <key>Proportion</key> - <string>406pt</string> + <string>420pt</string> <key>Tabs</key> <array> <dict> @@ -397,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 379}}</string> - <key>RubberWindowFrame</key> - <string>583 224 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 393}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -453,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 339}}</string> + <string>{{10, 27}, {531, 393}}</string> + <key>RubberWindowFrame</key> + <string>354 224 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -481,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B4E5813201C02EE00B5DC2A</string> + <string>8B79271821F3384E006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B4E5814201C02EE00B5DC2A</string> + <string>8B79271921F3384E006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B4E5815201C02EE00B5DC2A</string> + <string>8B79271A21F3384E006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -658,7 +656,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>538706670.20774806</real> + <real>569587790.455778</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -675,11 +673,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B4E5816201C02EE00B5DC2A</string> <string>/Users/christopherjohnson/Desktop/MacAU/Acceleration/Acceleration.xcodeproj</string> </array> <key>WindowString</key> - <string>583 224 841 654 0 0 1440 878 </string> + <string>354 224 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Acceleration/Acceleration.xcodeproj/project.pbxproj b/plugins/MacAU/Acceleration/Acceleration.xcodeproj/project.pbxproj index 7755ccf..7755ccf 100644..100755 --- a/plugins/MacAU/Acceleration/Acceleration.xcodeproj/project.pbxproj +++ b/plugins/MacAU/Acceleration/Acceleration.xcodeproj/project.pbxproj diff --git a/plugins/MacAU/Air/Air.cpp b/plugins/MacAU/Air/Air.cpp index 716f907..7ba3efe 100755 --- a/plugins/MacAU/Air/Air.cpp +++ b/plugins/MacAU/Air/Air.cpp @@ -222,11 +222,7 @@ void Air::AirKernel::Reset() tripletC = 0.0; tripletFactor = 0.0; count = 1; - - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; - + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -254,11 +250,6 @@ void Air::AirKernel::Process( const Float32 *inSourceP, Float64 wet = GetParameter( kParam_Six ); Float64 dry = 1.0-wet; - - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; - Float32 fpTemp; - long double inputSample; Float64 drySample; Float64 correction; @@ -399,19 +390,11 @@ void Air::AirKernel::Process( const Float32 *inSourceP, //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = not fpFlip; - //end noise shaping on 32 bit output - + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; destP += inNumChannels; diff --git a/plugins/MacAU/Air/Air.h b/plugins/MacAU/Air/Air.h index 571b8ac..6dcd06c 100755 --- a/plugins/MacAU/Air/Air.h +++ b/plugins/MacAU/Air/Air.h @@ -164,12 +164,7 @@ public: Float64 tripletC; Float64 tripletFactor; int count; - - - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; - + long double fpNShape; }; }; diff --git a/plugins/MacAU/Air/Air.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Air/Air.xcodeproj/christopherjohnson.pbxuser index 2af057b..3a436a8 100755 --- a/plugins/MacAU/Air/Air.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Air/Air.xcodeproj/christopherjohnson.pbxuser @@ -49,34 +49,34 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528421060; - PBXWorkspaceStateSaveDate = 528421060; + PBXPerProjectTemplateStateSaveDate = 569588293; + PBXWorkspaceStateSaveDate = 569588293; }; perUserProjectItems = { - 8B9D72161F7EFB8B007AB60F /* PBXTextBookmark */ = 8B9D72161F7EFB8B007AB60F /* PBXTextBookmark */; - 8B9D72A71F7F10F4007AB60F /* PBXTextBookmark */ = 8B9D72A71F7F10F4007AB60F /* PBXTextBookmark */; + 8B79276221F33AB6006E9731 /* PBXTextBookmark */ = 8B79276221F33AB6006E9731 /* PBXTextBookmark */; + 8B79276821F33AE6006E9731 /* PBXTextBookmark */ = 8B79276821F33AE6006E9731 /* PBXTextBookmark */; 8B9F0C261EB403E000D3B900 /* PBXTextBookmark */ = 8B9F0C261EB403E000D3B900 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B9D72161F7EFB8B007AB60F /* PBXTextBookmark */ = { + 8B79276221F33AB6006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Air.cpp */; - name = "Air.cpp: 397"; + name = "Air.cpp: 394"; rLen = 0; - rLoc = 15339; + rLoc = 15189; rType = 0; - vrLen = 94; - vrLoc = 14078; + vrLen = 0; + vrLoc = 0; }; - 8B9D72A71F7F10F4007AB60F /* PBXTextBookmark */ = { + 8B79276821F33AE6006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Air.cpp */; - name = "Air.cpp: 398"; + name = "Air.cpp: 389"; rLen = 0; - rLoc = 15339; + rLoc = 15189; rType = 0; vrLen = 0; vrLoc = 0; @@ -86,17 +86,17 @@ fRef = 8BC6025B073B072D006C4272 /* Air.h */; name = "Air.h: 169"; rLen = 0; - rLoc = 6210; + rLoc = 6204; rType = 0; vrLen = 107; vrLoc = 6071; }; 8BA05A660720730100365D66 /* Air.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 5512}}"; - sepNavSelRange = "{15339, 0}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 5421}}"; + sepNavSelRange = "{15189, 0}"; sepNavVisRange = "{0, 0}"; - sepNavWindowFrame = "{{255, 66}, {1145, 812}}"; + sepNavWindowFrame = "{{152, 66}, {1145, 812}}"; }; }; 8BA05A690720730100365D66 /* AirVersion.h */ = { @@ -109,10 +109,10 @@ }; 8BC6025B073B072D006C4272 /* Air.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {656, 2574}}"; - sepNavSelRange = "{6210, 0}"; - sepNavVisRange = "{6071, 107}"; - sepNavWindowFrame = "{{505, 39}, {1053, 839}}"; + sepNavIntBoundsRect = "{{0, 0}, {1006, 2483}}"; + sepNavSelRange = "{6190, 0}"; + sepNavVisRange = "{5126, 1198}"; + sepNavWindowFrame = "{{387, 39}, {1053, 839}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/Air/Air.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Air/Air.xcodeproj/christopherjohnson.perspectivev3 index f7348cf..c4d0cd5 100755 --- a/plugins/MacAU/Air/Air.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Air/Air.xcodeproj/christopherjohnson.perspectivev3 @@ -352,11 +352,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D72A71F7F10F4007AB60F</string> + <string>8B79276821F33AE6006E9731</string> <key>history</key> <array> <string>8B9F0C261EB403E000D3B900</string> - <string>8B9D72161F7EFB8B007AB60F</string> + <string>8B79276221F33AB6006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 32}}</string> + <string>{{0, 0}, {603, 13}}</string> <key>RubberWindowFrame</key> <string>484 346 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>32pt</string> + <string>13pt</string> </dict> <dict> <key>Proportion</key> - <string>409pt</string> + <string>428pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 382}}</string> - <key>RubberWindowFrame</key> - <string>484 346 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 401}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 328}}</string> + <string>{{10, 27}, {603, 401}}</string> + <key>RubberWindowFrame</key> + <string>484 346 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D72A81F7F10F4007AB60F</string> + <string>8B79276921F33AE6006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D72A91F7F10F4007AB60F</string> + <string>8B79276A21F33AE6006E9731</string> <string>8BDB25A91EAA638A001F42B2</string> - <string>8B9D72AA1F7F10F4007AB60F</string> + <string>8B79276B21F33AE6006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528421108.41774899</real> + <real>569588454.36706197</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,7 +653,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D72AB1F7F10F4007AB60F</string> + <string>8B79276C21F33AE6006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/Air/Air.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacAU/AtmosphereBuss/AtmosphereBuss.cpp b/plugins/MacAU/AtmosphereBuss/AtmosphereBuss.cpp index 508cd06..c68d1ee 100755 --- a/plugins/MacAU/AtmosphereBuss/AtmosphereBuss.cpp +++ b/plugins/MacAU/AtmosphereBuss/AtmosphereBuss.cpp @@ -203,7 +203,6 @@ void AtmosphereBuss::AtmosphereBussKernel::Process( const Float32 *inSourceP, UInt32 nSampleFrames = inFramesToProcess; const Float32 *sourceP = inSourceP; Float32 *destP = inDestP; - Float32 fpTemp; Float64 overallscale = 1.0; overallscale /= 44100.0; overallscale *= GetSampleRate(); @@ -342,23 +341,15 @@ void AtmosphereBuss::AtmosphereBussKernel::Process( const Float32 *inSourceP, lastSampleA = drySample; //store the raw input sample again for use next time - //noise shaping to 32-bit floating point - fpTemp = inputSample; - fpNShape += (inputSample-fpTemp); - inputSample += fpNShape; - //for Atmosphere, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; } - fpNShape *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacAU/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.pbxuser index 6387880..d3cdc9f 100755 --- a/plugins/MacAU/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.pbxuser @@ -49,18 +49,48 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 546563283; - PBXWorkspaceStateSaveDate = 546563283; + PBXPerProjectTemplateStateSaveDate = 569588700; + PBXWorkspaceStateSaveDate = 569588700; }; perUserProjectItems = { + 8B7927A021F33C4A006E9731 /* PBXTextBookmark */ = 8B7927A021F33C4A006E9731 /* PBXTextBookmark */; + 8B7927A121F33C4A006E9731 /* XCBuildMessageTextBookmark */ = 8B7927A121F33C4A006E9731 /* XCBuildMessageTextBookmark */; + 8B7927A221F33C4A006E9731 /* PBXTextBookmark */ = 8B7927A221F33C4A006E9731 /* PBXTextBookmark */; 8B7A85312054728D0074B00C /* PlistBookmark */ = 8B7A85312054728D0074B00C /* PlistBookmark */; - 8BC5CF4A2093F4B70058B257 /* PBXTextBookmark */ = 8BC5CF4A2093F4B70058B257 /* PBXTextBookmark */; - 8BC5CF4B2093F4B70058B257 /* PBXTextBookmark */ = 8BC5CF4B2093F4B70058B257 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B7927A021F33C4A006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* AtmosphereBuss.h */; + name = "AtmosphereBuss.h: 130"; + rLen = 0; + rLoc = 5139; + rType = 0; + vrLen = 177; + vrLoc = 5070; + }; + 8B7927A121F33C4A006E9731 /* XCBuildMessageTextBookmark */ = { + isa = PBXTextBookmark; + comments = "Unused variable 'fpTemp'"; + fRef = 8BA05A660720730100365D66 /* AtmosphereBuss.cpp */; + fallbackIsa = XCBuildMessageTextBookmark; + rLen = 1; + rLoc = 205; + rType = 1; + }; + 8B7927A221F33C4A006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* AtmosphereBuss.cpp */; + name = "AtmosphereBuss.cpp: 206"; + rLen = 0; + rLoc = 8815; + rType = 0; + vrLen = 266; + vrLoc = 8708; + }; 8B7A85312054728D0074B00C /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; @@ -75,10 +105,10 @@ }; 8BA05A660720730100365D66 /* AtmosphereBuss.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {677, 4914}}"; - sepNavSelRange = "{13285, 0}"; - sepNavVisRange = "{13794, 273}"; - sepNavWindowFrame = "{{815, 35}, {816, 832}}"; + sepNavIntBoundsRect = "{{0, 0}, {656, 4667}}"; + sepNavSelRange = "{8815, 0}"; + sepNavVisRange = "{8708, 266}"; + sepNavWindowFrame = "{{378, 46}, {816, 832}}"; }; }; 8BA05A690720730100365D66 /* AtmosphereBussVersion.h */ = { @@ -89,31 +119,11 @@ sepNavWindowFrame = "{{692, 46}, {816, 832}}"; }; }; - 8BC5CF4A2093F4B70058B257 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* AtmosphereBuss.cpp */; - name = "AtmosphereBuss.cpp: 321"; - rLen = 0; - rLoc = 13285; - rType = 0; - vrLen = 273; - vrLoc = 13794; - }; - 8BC5CF4B2093F4B70058B257 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* AtmosphereBuss.cpp */; - name = "AtmosphereBuss.cpp: 321"; - rLen = 0; - rLoc = 13285; - rType = 0; - vrLen = 273; - vrLoc = 13794; - }; 8BC6025B073B072D006C4272 /* AtmosphereBuss.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 2132}}"; + sepNavIntBoundsRect = "{{0, 0}, {810, 2483}}"; sepNavSelRange = "{5139, 0}"; - sepNavVisRange = "{1894, 1791}"; + sepNavVisRange = "{5070, 177}"; sepNavWindowFrame = "{{743, 46}, {816, 832}}"; }; }; diff --git a/plugins/MacAU/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.perspectivev3 index e3a1dec..b791cf4 100755 --- a/plugins/MacAU/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -302,9 +300,6 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>4</integer> - <integer>2</integer> - <integer>1</integer> <integer>0</integer> </array> </array> @@ -326,7 +321,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>597 180 841 654 0 0 1440 878 </string> + <string>434 184 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -354,11 +349,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BC5CF4B2093F4B70058B257</string> + <string>8B7927A221F33C4A006E9731</string> <key>history</key> <array> <string>8B7A85312054728D0074B00C</string> - <string>8BC5CF4A2093F4B70058B257</string> + <string>8B7927A021F33C4A006E9731</string> + <string>8B7927A121F33C4A006E9731</string> </array> </dict> <key>SplitCount</key> @@ -372,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 142}}</string> + <string>{{0, 0}, {531, 126}}</string> <key>RubberWindowFrame</key> - <string>597 180 841 654 0 0 1440 878 </string> + <string>434 184 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>142pt</string> + <string>126pt</string> </dict> <dict> <key>Proportion</key> - <string>466pt</string> + <string>482pt</string> <key>Tabs</key> <array> <dict> @@ -397,9 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 439}}</string> - <key>RubberWindowFrame</key> - <string>597 180 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 455}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -453,7 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 339}}</string> + <string>{{10, 27}, {531, 455}}</string> + <key>RubberWindowFrame</key> + <string>434 184 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -481,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BC5CF4C2093F4B70058B257</string> + <string>8B7927A321F33C4A006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BC5CF4D2093F4B70058B257</string> + <string>8B7927A421F33C4A006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8BC5CF4E2093F4B70058B257</string> + <string>8B7927A521F33C4A006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -658,7 +654,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>546567351.06036103</real> + <real>569588810.27972102</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -675,11 +671,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BC5CF4F2093F4B70058B257</string> + <string>8B7927A621F33C4A006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/AtmosphereBuss/AtmosphereBuss.xcodeproj</string> </array> <key>WindowString</key> - <string>597 180 841 654 0 0 1440 878 </string> + <string>434 184 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/AtmosphereChannel/AtmosphereChannel.cpp b/plugins/MacAU/AtmosphereChannel/AtmosphereChannel.cpp index d0ca7aa..6ca9131 100755 --- a/plugins/MacAU/AtmosphereChannel/AtmosphereChannel.cpp +++ b/plugins/MacAU/AtmosphereChannel/AtmosphereChannel.cpp @@ -203,7 +203,6 @@ void AtmosphereChannel::AtmosphereChannelKernel::Process( const Float32 *inSou UInt32 nSampleFrames = inFramesToProcess; const Float32 *sourceP = inSourceP; Float32 *destP = inDestP; - Float32 fpTemp; Float64 overallscale = 1.0; overallscale /= 44100.0; overallscale *= GetSampleRate(); @@ -339,23 +338,15 @@ void AtmosphereChannel::AtmosphereChannelKernel::Process( const Float32 *inSou lastSampleA = drySample; //store the raw input sample again for use next time - //noise shaping to 32-bit floating point - fpTemp = inputSample; - fpNShape += (inputSample-fpTemp); - inputSample += fpNShape; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; } - fpNShape *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacAU/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.pbxuser index d21e452..64fb8bb 100755 --- a/plugins/MacAU/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.pbxuser @@ -49,14 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 546562903; - PBXWorkspaceStateSaveDate = 546562903; + PBXPerProjectTemplateStateSaveDate = 569588835; + PBXWorkspaceStateSaveDate = 569588835; }; perUserProjectItems = { 8B2BAFD320548396002C5203 /* PlistBookmark */ = 8B2BAFD320548396002C5203 /* PlistBookmark */; - 8BC5CF502093F4BA0058B257 /* PBXTextBookmark */ = 8BC5CF502093F4BA0058B257 /* PBXTextBookmark */; - 8BC5CF512093F4BA0058B257 /* PBXTextBookmark */ = 8BC5CF512093F4BA0058B257 /* PBXTextBookmark */; - 8BC5CF522093F4BA0058B257 /* PBXTextBookmark */ = 8BC5CF522093F4BA0058B257 /* PBXTextBookmark */; + 8B7927B321F33C89006E9731 /* PBXTextBookmark */ = 8B7927B321F33C89006E9731 /* PBXTextBookmark */; + 8B7927B821F33C9F006E9731 /* PBXTextBookmark */ = 8B7927B821F33C9F006E9731 /* PBXTextBookmark */; + 8BFBE901209D18FF00E1438C /* PBXTextBookmark */ = 8BFBE901209D18FF00E1438C /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -74,12 +74,32 @@ rLen = 0; rLoc = 9223372036854775808; }; + 8B7927B321F33C89006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* AtmosphereChannel.cpp */; + name = "AtmosphereChannel.cpp: 277"; + rLen = 0; + rLoc = 11355; + rType = 0; + vrLen = 169; + vrLoc = 13693; + }; + 8B7927B821F33C9F006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* AtmosphereChannel.cpp */; + name = "AtmosphereChannel.cpp: 277"; + rLen = 0; + rLoc = 11355; + rType = 0; + vrLen = 169; + vrLoc = 13693; + }; 8BA05A660720730100365D66 /* AtmosphereChannel.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {769, 5018}}"; - sepNavSelRange = "{14355, 349}"; - sepNavVisRange = "{12684, 2023}"; - sepNavWindowFrame = "{{624, 46}, {816, 832}}"; + sepNavIntBoundsRect = "{{0, 0}, {482, 4654}}"; + sepNavSelRange = "{11355, 0}"; + sepNavVisRange = "{13693, 169}"; + sepNavWindowFrame = "{{566, 46}, {816, 832}}"; }; }; 8BA05A690720730100365D66 /* AtmosphereChannelVersion.h */ = { @@ -90,42 +110,12 @@ sepNavWindowFrame = "{{726, 46}, {816, 832}}"; }; }; - 8BC5CF502093F4BA0058B257 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* AtmosphereChannel.cpp */; - name = "AtmosphereChannel.cpp: 277"; - rLen = 0; - rLoc = 11372; - rType = 0; - vrLen = 304; - vrLoc = 13659; - }; - 8BC5CF512093F4BA0058B257 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* AtmosphereChannel.h */; - name = "AtmosphereChannel.h: 131"; - rLen = 713; - rLoc = 5181; - rType = 0; - vrLen = 187; - vrLoc = 5816; - }; - 8BC5CF522093F4BA0058B257 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* AtmosphereChannel.h */; - name = "AtmosphereChannel.h: 131"; - rLen = 713; - rLoc = 5181; - rType = 0; - vrLen = 187; - vrLoc = 5816; - }; 8BC6025B073B072D006C4272 /* AtmosphereChannel.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {803, 2379}}"; - sepNavSelRange = "{5181, 713}"; - sepNavVisRange = "{5816, 187}"; - sepNavWindowFrame = "{{635, 25}, {816, 832}}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 2132}}"; + sepNavSelRange = "{5129, 0}"; + sepNavVisRange = "{4652, 1351}"; + sepNavWindowFrame = "{{624, 39}, {816, 832}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { @@ -142,6 +132,16 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; + 8BFBE901209D18FF00E1438C /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* AtmosphereChannel.h */; + name = "AtmosphereChannel.h: 131"; + rLen = 713; + rLoc = 5181; + rType = 0; + vrLen = 181; + vrLoc = 5816; + }; 8D01CCC60486CAD60068D4B7 /* AtmosphereChannel */ = { activeExec = 0; }; diff --git a/plugins/MacAU/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.perspectivev3 index 08b4968..f684856 100755 --- a/plugins/MacAU/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -326,7 +324,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>599 209 841 654 0 0 1440 878 </string> + <string>472 198 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -342,7 +340,7 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274A1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>AtmosphereChannel.h</string> + <string>AtmosphereChannel.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -350,16 +348,16 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274B1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>AtmosphereChannel.h</string> + <string>AtmosphereChannel.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BC5CF522093F4BA0058B257</string> + <string>8B7927B821F33C9F006E9731</string> <key>history</key> <array> <string>8B2BAFD320548396002C5203</string> - <string>8BC5CF502093F4BA0058B257</string> - <string>8BC5CF512093F4BA0058B257</string> + <string>8BFBE901209D18FF00E1438C</string> + <string>8B7927B321F33C89006E9731</string> </array> </dict> <key>SplitCount</key> @@ -373,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 158}}</string> + <string>{{0, 0}, {531, 92}}</string> <key>RubberWindowFrame</key> - <string>599 209 841 654 0 0 1440 878 </string> + <string>472 198 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>158pt</string> + <string>92pt</string> </dict> <dict> <key>Proportion</key> - <string>450pt</string> + <string>516pt</string> <key>Tabs</key> <array> <dict> @@ -398,9 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 423}}</string> - <key>RubberWindowFrame</key> - <string>599 209 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 489}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -454,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 339}}</string> + <string>{{10, 27}, {531, 489}}</string> + <key>RubberWindowFrame</key> + <string>472 198 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -482,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BC5CF532093F4BA0058B257</string> + <string>8B7927B921F33C9F006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BC5CF542093F4BA0058B257</string> + <string>8B7927BA21F33C9F006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8BC5CF552093F4BA0058B257</string> + <string>8B7927BB21F33C9F006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -659,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>546567354.06319106</real> + <real>569588895.18574297</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -679,7 +677,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/AtmosphereChannel/AtmosphereChannel.xcodeproj</string> </array> <key>WindowString</key> - <string>599 209 841 654 0 0 1440 878 </string> + <string>472 198 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Aura/Aura.cpp b/plugins/MacAU/Aura/Aura.cpp index 93e1411..48fd283 100755 --- a/plugins/MacAU/Aura/Aura.cpp +++ b/plugins/MacAU/Aura/Aura.cpp @@ -169,9 +169,7 @@ void Aura::AuraKernel::Reset() for(int count = 0; count < 21; count++) {b[count] = 0.0; f[count] = 0.0;} lastSample = 0.0; previousVelocity = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -186,11 +184,6 @@ void Aura::AuraKernel::Process( const Float32 *inSourceP, UInt32 nSampleFrames = inFramesToProcess; const Float32 *sourceP = inSourceP; Float32 *destP = inDestP; - - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - Float64 correction; Float64 accumulatorSample; Float64 velocity; @@ -321,19 +314,11 @@ void Aura::AuraKernel::Process( const Float32 *inSourceP, inputSample = (inputSample * wet) + (drySample * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/Aura/Aura.h b/plugins/MacAU/Aura/Aura.h index 504b1fd..56ef492 100755 --- a/plugins/MacAU/Aura/Aura.h +++ b/plugins/MacAU/Aura/Aura.h @@ -131,9 +131,7 @@ public: Float64 previousVelocity; Float64 b[21]; Float64 f[21]; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/Aura/Aura.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Aura/Aura.xcodeproj/christopherjohnson.pbxuser index 8daaddf..16877c1 100755 --- a/plugins/MacAU/Aura/Aura.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Aura/Aura.xcodeproj/christopherjohnson.pbxuser @@ -49,24 +49,44 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 546126137; - PBXWorkspaceStateSaveDate = 546126137; + PBXPerProjectTemplateStateSaveDate = 569589029; + PBXWorkspaceStateSaveDate = 569589029; }; perUserProjectItems = { + 8B7927C921F33D8C006E9731 /* PBXTextBookmark */ = 8B7927C921F33D8C006E9731 /* PBXTextBookmark */; + 8B7927CE21F33D9D006E9731 /* PBXTextBookmark */ = 8B7927CE21F33D9D006E9731 /* PBXTextBookmark */; 8BC5CC27208D3AE60058B257 /* PBXTextBookmark */ = 8BC5CC27208D3AE60058B257 /* PBXTextBookmark */; - 8BC5CCC3208D4FDB0058B257 /* XCBuildMessageTextBookmark */ = 8BC5CCC3208D4FDB0058B257 /* XCBuildMessageTextBookmark */; - 8BC5CEBB208D734C0058B257 /* PBXTextBookmark */ = 8BC5CEBB208D734C0058B257 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B7927C921F33D8C006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Aura.cpp */; + name = "Aura.cpp: 196"; + rLen = 0; + rLoc = 8658; + rType = 0; + vrLen = 0; + vrLoc = 0; + }; + 8B7927CE21F33D9D006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Aura.cpp */; + name = "Aura.cpp: 196"; + rLen = 0; + rLoc = 8658; + rType = 0; + vrLen = 0; + vrLoc = 0; + }; 8BA05A660720730100365D66 /* Aura.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {558, 4589}}"; - sepNavSelRange = "{8813, 0}"; - sepNavVisRange = "{8966, 228}"; - sepNavWindowFrame = "{{379, 63}, {932, 815}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 4446}}"; + sepNavSelRange = "{8658, 0}"; + sepNavVisRange = "{0, 0}"; + sepNavWindowFrame = "{{5, 63}, {932, 815}}"; }; }; 8BA05A670720730100365D66 /* Aura.exp */ = { @@ -89,37 +109,18 @@ isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* Aura.h */; name = "Aura.h: 135"; - rLen = 65; + rLen = 24; rLoc = 5201; rType = 0; vrLen = 65; vrLoc = 5232; }; - 8BC5CCC3208D4FDB0058B257 /* XCBuildMessageTextBookmark */ = { - isa = PBXTextBookmark; - comments = "Unused variable 'wet'"; - fRef = 8BA05A660720730100365D66 /* Aura.cpp */; - fallbackIsa = XCBuildMessageTextBookmark; - rLen = 0; - rLoc = 202; - rType = 1; - }; - 8BC5CEBB208D734C0058B257 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* Aura.cpp */; - name = "Aura.cpp: 203"; - rLen = 0; - rLoc = 8813; - rType = 0; - vrLen = 228; - vrLoc = 8966; - }; 8BC6025B073B072D006C4272 /* Aura.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1859}}"; - sepNavSelRange = "{5111, 0}"; - sepNavVisRange = "{3864, 1511}"; - sepNavWindowFrame = "{{504, 63}, {932, 815}}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 1794}}"; + sepNavSelRange = "{5226, 0}"; + sepNavVisRange = "{3752, 1576}"; + sepNavWindowFrame = "{{340, 63}, {932, 815}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/Aura/Aura.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Aura/Aura.xcodeproj/christopherjohnson.perspectivev3 index ab104e0..55525f3 100755 --- a/plugins/MacAU/Aura/Aura.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Aura/Aura.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>810</integer> + <integer>810</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>623 315 810 487 0 0 1440 878 </string> + <string>0 312 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,11 +350,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BC5CEBB208D734C0058B257</string> + <string>8B7927CE21F33D9D006E9731</string> <key>history</key> <array> <string>8BC5CC27208D3AE60058B257</string> - <string>8BC5CCC3208D4FDB0058B257</string> + <string>8B7927C921F33D8C006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 69}}</string> + <string>{{0, 0}, {603, 13}}</string> <key>RubberWindowFrame</key> - <string>623 315 810 487 0 0 1440 878 </string> + <string>0 312 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>69pt</string> + <string>13pt</string> </dict> <dict> <key>Proportion</key> - <string>372pt</string> + <string>428pt</string> <key>Tabs</key> <array> <dict> @@ -395,7 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 345}}</string> + <string>{{10, 27}, {603, 401}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -449,9 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 345}}</string> + <string>{{10, 27}, {603, 401}}</string> <key>RubberWindowFrame</key> - <string>623 315 810 487 0 0 1440 878 </string> + <string>0 312 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BC5CC15208D39550058B257</string> + <string>8B7927CF21F33D9D006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BC5CC16208D39550058B257</string> + <string>8B7927D021F33D9D006E9731</string> <string>8B0C0F5D201157B700BC8782</string> - <string>8BC5CC17208D39550058B257</string> + <string>8B7927D121F33D9D006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>546141004.69631898</real> + <real>569589149.88835204</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -656,7 +654,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/Aura/Aura.xcodeproj</string> </array> <key>WindowString</key> - <string>623 315 810 487 0 0 1440 878 </string> + <string>0 312 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Average/Average.cpp b/plugins/MacAU/Average/Average.cpp index 200aafa..d2ee078 100755 --- a/plugins/MacAU/Average/Average.cpp +++ b/plugins/MacAU/Average/Average.cpp @@ -170,9 +170,7 @@ void Average::AverageKernel::Reset() { register UInt32 count; for(count = 0; count < 11; count++) {b[count] = 0.0; f[count] = 0.0;} - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -221,10 +219,6 @@ void Average::AverageKernel::Process( const Float32 *inSourceP, f[9] /= overallscale; //and now it's neatly scaled, too - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; - while (nSampleFrames-- > 0) { inputSample = *sourceP; if (inputSample<1.2e-38 && -inputSample<1.2e-38) { @@ -285,19 +279,11 @@ void Average::AverageKernel::Process( const Float32 *inSourceP, //if it 'won't change anything' but our sample might be at a very different scaling //in the floating point system. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/Average/Average.h b/plugins/MacAU/Average/Average.h index a1d8e88..3ff5e3d 100755 --- a/plugins/MacAU/Average/Average.h +++ b/plugins/MacAU/Average/Average.h @@ -131,10 +131,7 @@ public: private: Float64 b[11]; Float64 f[11]; - Float64 fpNShapeA; - Float64 fpNShapeB; - bool fpFlip; - + Float64 fpNShape; }; }; diff --git a/plugins/MacAU/Average/Average.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Average/Average.xcodeproj/christopherjohnson.pbxuser index 59f35a8..cf424d9 100755 --- a/plugins/MacAU/Average/Average.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Average/Average.xcodeproj/christopherjohnson.pbxuser @@ -49,18 +49,44 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 557438773; - PBXWorkspaceStateSaveDate = 557438773; + PBXPerProjectTemplateStateSaveDate = 569589188; + PBXWorkspaceStateSaveDate = 569589188; }; perUserProjectItems = { + 8B7927DA21F33DD5006E9731 /* PBXBookmark */ = 8B7927DA21F33DD5006E9731 /* PBXBookmark */; + 8B7927E321F33E0C006E9731 /* PBXTextBookmark */ = 8B7927E321F33E0C006E9731 /* PBXTextBookmark */; + 8B7927E921F33E0C006E9731 /* PBXTextBookmark */ = 8B7927E921F33E0C006E9731 /* PBXTextBookmark */; 8B7BA53D1DAD4A33007C127E /* PBXTextBookmark */ = 8B7BA53D1DAD4A33007C127E /* PBXTextBookmark */; - 8B9D72C51F7F1129007AB60F /* PBXTextBookmark */ = 8B9D72C51F7F1129007AB60F /* PBXTextBookmark */; 8BFDB0072139DDE90079F90D /* PBXTextBookmark */ = 8BFDB0072139DDE90079F90D /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B7927DA21F33DD5006E9731 /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 8BA05A660720730100365D66 /* Average.cpp */; + }; + 8B7927E321F33E0C006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Average.cpp */; + name = "Average.cpp: 294"; + rLen = 0; + rLoc = 13108; + rType = 0; + vrLen = 0; + vrLoc = 0; + }; + 8B7927E921F33E0C006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Average.cpp */; + name = "Average.cpp: 222"; + rLen = 0; + rLoc = 9886; + rType = 0; + vrLen = 2433; + vrLoc = 8388; + }; 8B7BA53D1DAD4A33007C127E /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* Average.h */; @@ -71,22 +97,12 @@ vrLen = 248; vrLoc = 2963; }; - 8B9D72C51F7F1129007AB60F /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* Average.cpp */; - name = "Average.cpp: 308"; - rLen = 0; - rLoc = 13372; - rType = 0; - vrLen = 0; - vrLoc = 0; - }; 8BA05A660720730100365D66 /* Average.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 4082}}"; - sepNavSelRange = "{13372, 0}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 4004}}"; + sepNavSelRange = "{13108, 0}"; sepNavVisRange = "{0, 0}"; - sepNavWindowFrame = "{{531, 39}, {909, 838}}"; + sepNavWindowFrame = "{{360, 40}, {909, 838}}"; }; }; 8BA05A690720730100365D66 /* AverageVersion.h */ = { @@ -99,10 +115,10 @@ }; 8BC6025B073B072D006C4272 /* Average.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1200, 1872}}"; - sepNavSelRange = "{3020, 54}"; - sepNavVisRange = "{3923, 1499}"; - sepNavWindowFrame = "{{446, 61}, {1247, 817}}"; + sepNavIntBoundsRect = "{{0, 0}, {1200, 1807}}"; + sepNavSelRange = "{5274, 0}"; + sepNavVisRange = "{3744, 1632}"; + sepNavWindowFrame = "{{193, 61}, {1247, 817}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { @@ -124,7 +140,7 @@ fRef = 8BA05A660720730100365D66 /* Average.cpp */; name = "Average.cpp: 308"; rLen = 0; - rLoc = 13372; + rLoc = 13108; rType = 0; vrLen = 0; vrLoc = 0; diff --git a/plugins/MacAU/Average/Average.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Average/Average.xcodeproj/christopherjohnson.perspectivev3 index cd90e95..e7dddb3 100755 --- a/plugins/MacAU/Average/Average.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Average/Average.xcodeproj/christopherjohnson.perspectivev3 @@ -222,7 +222,48 @@ </dict> </array> <key>OpenEditors</key> - <array/> + <array> + <dict> + <key>Content</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>8B7927E721F33E0C006E9731</string> + <key>PBXProjectModuleLabel</key> + <string>Average.cpp</string> + <key>PBXSplitModuleInNavigatorKey</key> + <dict> + <key>Split0</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>8B7927E821F33E0C006E9731</string> + <key>PBXProjectModuleLabel</key> + <string>Average.cpp</string> + <key>_historyCapacity</key> + <integer>0</integer> + <key>bookmark</key> + <string>8B7927E921F33E0C006E9731</string> + <key>history</key> + <array> + <string>8B7927DA21F33DD5006E9731</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}, {909, 741}}</string> + <key>PBXModuleWindowStatusBarHidden2</key> + <false/> + <key>RubberWindowFrame</key> + <string>360 96 909 782 0 0 1440 878 </string> + </dict> + </dict> + </array> <key>PerspectiveWidths</key> <array> <integer>810</integer> @@ -256,8 +297,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +363,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>612 196 810 487 0 0 1440 878 </string> + <string>456 228 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,11 +391,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BFDB0072139DDE90079F90D</string> + <string>8B7927E321F33E0C006E9731</string> <key>history</key> <array> <string>8B7BA53D1DAD4A33007C127E</string> - <string>8B9D72C51F7F1129007AB60F</string> + <string>8BFDB0072139DDE90079F90D</string> </array> </dict> <key>SplitCount</key> @@ -372,7 +411,7 @@ <key>Frame</key> <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> - <string>612 196 810 487 0 0 1440 878 </string> + <string>456 228 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -396,8 +435,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> - <key>RubberWindowFrame</key> - <string>612 196 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +488,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 297}}</string> + <string>{{10, 27}, {603, 414}}</string> + <key>RubberWindowFrame</key> + <string>456 228 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +518,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BFDB0082139DDE90079F90D</string> + <string>8B7927E421F33E0C006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BFDB0092139DDE90079F90D</string> + <string>8B7927E521F33E0C006E9731</string> <string>8B9E5A3F1DAAD3C800A9546F</string> - <string>8BFDB00A2139DDE90079F90D</string> + <string>8B7927E621F33E0C006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +675,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>557440489.96798897</real> + <real>569589260.26626098</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,11 +692,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BFDB00B2139DDE90079F90D</string> + <string>8B7927E721F33E0C006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/Average/Average.xcodeproj</string> </array> <key>WindowString</key> - <string>612 196 810 487 0 0 1440 878 </string> + <string>456 228 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/BassKit/BassKit.cpp b/plugins/MacAU/BassKit/BassKit.cpp index 6663d2c..da7a49f 100755 --- a/plugins/MacAU/BassKit/BassKit.cpp +++ b/plugins/MacAU/BassKit/BassKit.cpp @@ -453,19 +453,15 @@ OSStatus BassKit::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags bflip++; if (bflip < 1 || bflip > 3) bflip = 1; - //noise shaping to 32-bit floating point - Float32 fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output - + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((Float32)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither + *outputL = inputSampleL; *outputR = inputSampleR; //direct stereo out @@ -475,12 +471,6 @@ OSStatus BassKit::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags outputL += 1; outputR += 1; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. return noErr; } diff --git a/plugins/MacAU/BassKit/BassKit.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/BassKit/BassKit.xcodeproj/christopherjohnson.pbxuser index 44f513a..9b210d0 100755 --- a/plugins/MacAU/BassKit/BassKit.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/BassKit/BassKit.xcodeproj/christopherjohnson.pbxuser @@ -49,43 +49,43 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 561548993; - PBXWorkspaceStateSaveDate = 561548993; + PBXPerProjectTemplateStateSaveDate = 569589289; + PBXWorkspaceStateSaveDate = 569589289; }; perUserProjectItems = { - 8B15DC7821789307007AD769 /* PBXTextBookmark */ = 8B15DC7821789307007AD769 /* PBXTextBookmark */; - 8B15DC7921789307007AD769 /* PBXTextBookmark */ = 8B15DC7921789307007AD769 /* PBXTextBookmark */; + 8B7927F821F33F7A006E9731 /* PBXTextBookmark */ = 8B7927F821F33F7A006E9731 /* PBXTextBookmark */; + 8B7927FD21F33F8B006E9731 /* PBXTextBookmark */ = 8B7927FD21F33F8B006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B15DC7821789307007AD769 /* PBXTextBookmark */ = { + 8B7927F821F33F7A006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* BassKit.cpp */; name = "BassKit.cpp: 325"; rLen = 0; rLoc = 12649; rType = 0; - vrLen = 921; + vrLen = 816; vrLoc = 14920; }; - 8B15DC7921789307007AD769 /* PBXTextBookmark */ = { + 8B7927FD21F33F8B006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* BassKit.cpp */; name = "BassKit.cpp: 325"; rLen = 0; rLoc = 12649; rType = 0; - vrLen = 921; + vrLen = 816; vrLoc = 14920; }; 8BA05A660720730100365D66 /* BassKit.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {901, 5980}}"; + sepNavIntBoundsRect = "{{0, 0}, {761, 5824}}"; sepNavSelRange = "{12649, 0}"; - sepNavVisRange = "{14920, 921}"; - sepNavWindowFrame = "{{548, 68}, {890, 810}}"; + sepNavVisRange = "{14920, 816}"; + sepNavWindowFrame = "{{357, 57}, {890, 810}}"; }; }; 8BA05A690720730100365D66 /* BassKitVersion.h */ = { diff --git a/plugins/MacAU/BassKit/BassKit.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/BassKit/BassKit.xcodeproj/christopherjohnson.perspectivev3 index f21f89d..2a3cdcf 100755 --- a/plugins/MacAU/BassKit/BassKit.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/BassKit/BassKit.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>609 213 752 636 0 0 1440 878 </string> + <string>401 223 752 636 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,10 +350,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B15DC7921789307007AD769</string> + <string>8B7927FD21F33F8B006E9731</string> <key>history</key> <array> - <string>8B15DC7821789307007AD769</string> + <string>8B7927F821F33F7A006E9731</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +367,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {545, 162}}</string> + <string>{{0, 0}, {545, 131}}</string> <key>RubberWindowFrame</key> - <string>609 213 752 636 0 0 1440 878 </string> + <string>401 223 752 636 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>162pt</string> + <string>131pt</string> </dict> <dict> <key>Proportion</key> - <string>428pt</string> + <string>459pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +392,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {545, 401}}</string> - <key>RubberWindowFrame</key> - <string>609 213 752 636 0 0 1440 878 </string> + <string>{{10, 27}, {545, 432}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -450,7 +446,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {545, 386}}</string> + <string>{{10, 27}, {545, 432}}</string> + <key>RubberWindowFrame</key> + <string>401 223 752 636 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -478,11 +476,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B15DC7A21789307007AD769</string> + <string>8B7927FE21F33F8B006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B15DC7B21789307007AD769</string> + <string>8B7927FF21F33F8B006E9731</string> <string>8B2720742173B3CC00396442</string> - <string>8B15DC7C21789307007AD769</string> + <string>8B79280021F33F8B006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +633,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>561550087.85150504</real> + <real>569589643.413149</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,11 +650,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B15DC7D21789307007AD769</string> <string>/Users/christopherjohnson/Desktop/MacAU/BassKit/BassKit.xcodeproj</string> </array> <key>WindowString</key> - <string>609 213 752 636 0 0 1440 878 </string> + <string>401 223 752 636 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.pbxuser index c852a9c..d99aaa0 100755 --- a/plugins/MacAU/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.pbxuser @@ -49,13 +49,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 553994320; - PBXWorkspaceStateSaveDate = 553994320; + PBXPerProjectTemplateStateSaveDate = 569590014; + PBXWorkspaceStateSaveDate = 569590014; }; perUserProjectItems = { 8B12BE4E210416FD00EB8D52 /* PBXTextBookmark */ = 8B12BE4E210416FD00EB8D52 /* PBXTextBookmark */; - 8B12BE50210416FD00EB8D52 /* PBXTextBookmark */ = 8B12BE50210416FD00EB8D52 /* PBXTextBookmark */; - 8BBD1982210557560015A233 /* PBXTextBookmark */ = 8BBD1982210557560015A233 /* PBXTextBookmark */; + 8B79282221F340F9006E9731 /* PBXTextBookmark */ = 8B79282221F340F9006E9731 /* PBXTextBookmark */; + 8B79283421F34111006E9731 /* PBXTextBookmark */ = 8B79283421F34111006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -71,21 +71,31 @@ vrLen = 85; vrLoc = 12311; }; - 8B12BE50210416FD00EB8D52 /* PBXTextBookmark */ = { + 8B79282221F340F9006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A690720730100365D66 /* BitGlitterVersion.h */; name = "BitGlitterVersion.h: 54"; rLen = 0; rLoc = 2897; rType = 0; - vrLen = 131; - vrLoc = 2825; + vrLen = 0; + vrLoc = 0; + }; + 8B79283421F34111006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A690720730100365D66 /* BitGlitterVersion.h */; + name = "BitGlitterVersion.h: 54"; + rLen = 0; + rLoc = 2897; + rType = 0; + vrLen = 0; + vrLoc = 0; }; 8BA05A660720730100365D66 /* BitGlitter.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {747, 4394}}"; + sepNavIntBoundsRect = "{{0, 0}, {747, 4472}}"; sepNavSelRange = "{12683, 1}"; - sepNavVisRange = "{8715, 2103}"; + sepNavVisRange = "{10076, 1544}"; sepNavWindowFrame = "{{637, 65}, {787, 813}}"; }; }; @@ -98,22 +108,12 @@ }; 8BA05A690720730100365D66 /* BitGlitterVersion.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 871}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 819}}"; sepNavSelRange = "{2897, 0}"; - sepNavVisRange = "{2825, 131}"; + sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{15, 60}, {787, 813}}"; }; }; - 8BBD1982210557560015A233 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A690720730100365D66 /* BitGlitterVersion.h */; - name = "BitGlitterVersion.h: 54"; - rLen = 0; - rLoc = 2897; - rType = 0; - vrLen = 131; - vrLoc = 2825; - }; 8BC6025B073B072D006C4272 /* BitGlitter.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {894, 1989}}"; diff --git a/plugins/MacAU/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.perspectivev3 index 31b4a91..ae27f4a 100755 --- a/plugins/MacAU/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.perspectivev3 @@ -324,7 +324,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>586 327 810 487 0 0 1440 878 </string> + <string>490 321 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,11 +352,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BBD1982210557560015A233</string> + <string>8B79283421F34111006E9731</string> <key>history</key> <array> <string>8B12BE4E210416FD00EB8D52</string> - <string>8B12BE50210416FD00EB8D52</string> + <string>8B79282221F340F9006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 51}}</string> + <string>{{0, 0}, {603, 13}}</string> <key>RubberWindowFrame</key> - <string>586 327 810 487 0 0 1440 878 </string> + <string>490 321 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>51pt</string> + <string>13pt</string> </dict> <dict> <key>Proportion</key> - <string>390pt</string> + <string>428pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +395,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 363}}</string> + <string>{{10, 27}, {603, 401}}</string> <key>RubberWindowFrame</key> - <string>586 327 810 487 0 0 1440 878 </string> + <string>490 321 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -479,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBD1983210557560015A233</string> + <string>8B79283521F34111006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBD1984210557560015A233</string> + <string>8B79283621F34111006E9731</string> <string>8BB8B7DD2103C66400751000</string> - <string>8BBD1985210557560015A233</string> + <string>8B79283721F34111006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>553998166.45384705</real> + <real>569590033.70359504</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,11 +653,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BBD1986210557560015A233</string> <string>/Users/christopherjohnson/Desktop/MacAU/BitGlitter/BitGlitter.xcodeproj</string> </array> <key>WindowString</key> - <string>586 327 810 487 0 0 1440 878 </string> + <string>490 321 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.mode1v3 b/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.mode1v3 index f301be9..f301be9 100644..100755 --- a/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.mode1v3 +++ b/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.mode1v3 diff --git a/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.pbxuser index 0c60c13..5c6dcd3 100644..100755 --- a/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.pbxuser @@ -49,48 +49,48 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528421239; - PBXWorkspaceStateSaveDate = 528421239; + PBXPerProjectTemplateStateSaveDate = 569590058; + PBXWorkspaceStateSaveDate = 569590058; }; perUserProjectItems = { + 8B79244F21F12F5D006E9731 /* PBXTextBookmark */ = 8B79244F21F12F5D006E9731 /* PBXTextBookmark */; + 8B79284721F34140006E9731 /* PBXTextBookmark */ = 8B79284721F34140006E9731 /* PBXTextBookmark */; 8B84C3201F06FE8A00F360EE /* PBXTextBookmark */ = 8B84C3201F06FE8A00F360EE /* PBXTextBookmark */; - 8B9D636E1F7C82E9007AB60F /* PBXTextBookmark */ = 8B9D636E1F7C82E9007AB60F /* PBXTextBookmark */; - 8B9D72E51F7F11AB007AB60F /* PBXTextBookmark */ = 8B9D72E51F7F11AB007AB60F /* PBXTextBookmark */; 8B9E7F221DDE37D5006035FA /* PlistBookmark */ = 8B9E7F221DDE37D5006035FA /* PlistBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B84C3201F06FE8A00F360EE /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* BitShiftGain.h */; - name = "BitShiftGain.h: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1640; - vrLoc = 0; - }; - 8B9D636E1F7C82E9007AB60F /* PBXTextBookmark */ = { + 8B79244F21F12F5D006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* BitShiftGain.cpp */; name = "BitShiftGain.cpp: 175"; rLen = 48; rLoc = 7996; rType = 0; - vrLen = 771; - vrLoc = 8415; + vrLen = 675; + vrLoc = 8691; }; - 8B9D72E51F7F11AB007AB60F /* PBXTextBookmark */ = { + 8B79284721F34140006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* BitShiftGain.cpp */; name = "BitShiftGain.cpp: 175"; rLen = 48; rLoc = 7996; rType = 0; - vrLen = 737; - vrLoc = 8415; + vrLen = 644; + vrLoc = 8691; + }; + 8B84C3201F06FE8A00F360EE /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* BitShiftGain.h */; + name = "BitShiftGain.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1640; + vrLoc = 0; }; 8B9E7F221DDE37D5006035FA /* PlistBookmark */ = { isa = PlistBookmark; @@ -106,10 +106,10 @@ }; 8BA05A660720730100365D66 /* BitShiftGain.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {656, 3042}}"; + sepNavIntBoundsRect = "{{0, 0}, {656, 3068}}"; sepNavSelRange = "{7996, 48}"; - sepNavVisRange = "{8415, 737}"; - sepNavWindowFrame = "{{308, 43}, {679, 835}}"; + sepNavVisRange = "{8691, 644}"; + sepNavWindowFrame = "{{738, 43}, {679, 835}}"; }; }; 8BA05A690720730100365D66 /* BitShiftGainVersion.h */ = { diff --git a/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.perspectivev3 index d55ef4a..4adf5a4 100644..100755 --- a/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.perspectivev3 @@ -325,7 +325,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>657 93 776 778 0 0 1440 878 </string> + <string>559 100 776 778 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -353,12 +353,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D72E51F7F11AB007AB60F</string> + <string>8B79284721F34140006E9731</string> <key>history</key> <array> <string>8B9E7F221DDE37D5006035FA</string> <string>8B84C3201F06FE8A00F360EE</string> - <string>8B9D636E1F7C82E9007AB60F</string> + <string>8B79244F21F12F5D006E9731</string> </array> </dict> <key>SplitCount</key> @@ -372,18 +372,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {466, 325}}</string> + <string>{{0, 0}, {466, 301}}</string> <key>RubberWindowFrame</key> - <string>657 93 776 778 0 0 1440 878 </string> + <string>559 100 776 778 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>325pt</string> + <string>301pt</string> </dict> <dict> <key>Proportion</key> - <string>407pt</string> + <string>431pt</string> <key>Tabs</key> <array> <dict> @@ -397,9 +397,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {466, 380}}</string> + <string>{{10, 27}, {466, 404}}</string> <key>RubberWindowFrame</key> - <string>657 93 776 778 0 0 1440 878 </string> + <string>559 100 776 778 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -481,11 +481,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D72E61F7F11AB007AB60F</string> + <string>8B79284821F34140006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D72E71F7F11AB007AB60F</string> + <string>8B79284921F34140006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D72E81F7F11AB007AB60F</string> + <string>8B79284A21F34140006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -658,7 +658,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528421291.05933303</real> + <real>569590080.12127101</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -675,11 +675,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D72E91F7F11AB007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/BitShiftGain/BitShiftGain.xcodeproj</string> </array> <key>WindowString</key> - <string>657 93 776 778 0 0 1440 878 </string> + <string>559 100 776 778 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/project.pbxproj b/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/project.pbxproj index 707c9cb..707c9cb 100644..100755 --- a/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/project.pbxproj +++ b/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/project.pbxproj diff --git a/plugins/MacAU/Bite/Bite.cpp b/plugins/MacAU/Bite/Bite.cpp index 99d3134..c34bb3d 100755 --- a/plugins/MacAU/Bite/Bite.cpp +++ b/plugins/MacAU/Bite/Bite.cpp @@ -175,10 +175,7 @@ void Bite::BiteKernel::Reset() sampleG = 0.0; sampleH = 0.0; sampleI = 0.0; - - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -203,10 +200,7 @@ void Bite::BiteKernel::Process( const Float32 *inSourceP, Float64 midC; Float64 midD; Float64 trigger; - Float64 result; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; - Float32 fpTemp; + long double result; while (nSampleFrames-- > 0) { sampleI = sampleH; @@ -273,18 +267,11 @@ void Bite::BiteKernel::Process( const Float32 *inSourceP, if (outputgain != 1.0) result *= outputgain; - if (fpFlip) { - fpTemp = result; - fpNShapeA = (fpNShapeA*fpOld)+((result-fpTemp)*fpNew); - result += fpNShapeA; - } - else { - fpTemp = result; - fpNShapeB = (fpNShapeB*fpOld)+((result-fpTemp)*fpNew); - result += fpNShapeB; - } - fpFlip = not fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)result, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + result += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = result; //output. diff --git a/plugins/MacAU/Bite/Bite.h b/plugins/MacAU/Bite/Bite.h index c7a5b06..b36870b 100755 --- a/plugins/MacAU/Bite/Bite.h +++ b/plugins/MacAU/Bite/Bite.h @@ -138,10 +138,7 @@ public: Float64 sampleG; Float64 sampleH; Float64 sampleI; - Float64 fpNShapeA; - Float64 fpNShapeB; - bool fpFlip; - + Float64 fpNShape; }; }; diff --git a/plugins/MacAU/Bite/Bite.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Bite/Bite.xcodeproj/christopherjohnson.pbxuser index f9c81c4..b8ac588 100755 --- a/plugins/MacAU/Bite/Bite.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Bite/Bite.xcodeproj/christopherjohnson.pbxuser @@ -49,43 +49,43 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528421171; - PBXWorkspaceStateSaveDate = 528421171; + PBXPerProjectTemplateStateSaveDate = 569589737; + PBXWorkspaceStateSaveDate = 569589737; }; perUserProjectItems = { - 8B9D63401F7C8264007AB60F /* PBXTextBookmark */ = 8B9D63401F7C8264007AB60F /* PBXTextBookmark */; - 8B9D72D41F7F114A007AB60F /* PBXTextBookmark */ = 8B9D72D41F7F114A007AB60F /* PBXTextBookmark */; + 8B79281021F3405A006E9731 /* PBXTextBookmark */ = 8B79281021F3405A006E9731 /* PBXTextBookmark */; + 8B79281521F34076006E9731 /* PBXTextBookmark */ = 8B79281521F34076006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B9D63401F7C8264007AB60F /* PBXTextBookmark */ = { + 8B79281021F3405A006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Bite.cpp */; - name = "Bite.cpp: 289"; + name = "Bite.cpp: 276"; rLen = 0; - rLoc = 11935; + rLoc = 11735; rType = 0; - vrLen = 433; - vrLoc = 10004; + vrLen = 155; + vrLoc = 10210; }; - 8B9D72D41F7F114A007AB60F /* PBXTextBookmark */ = { + 8B79281521F34076006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Bite.cpp */; - name = "Bite.cpp: 289"; + name = "Bite.cpp: 276"; rLen = 0; - rLoc = 11935; + rLoc = 11735; rType = 0; - vrLen = 402; - vrLoc = 10035; + vrLen = 155; + vrLoc = 10210; }; 8BA05A660720730100365D66 /* Bite.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {677, 3913}}"; - sepNavSelRange = "{11935, 0}"; - sepNavVisRange = "{10035, 402}"; - sepNavWindowFrame = "{{295, 66}, {1145, 812}}"; + sepNavIntBoundsRect = "{{0, 0}, {677, 3887}}"; + sepNavSelRange = "{11735, 0}"; + sepNavVisRange = "{10210, 155}"; + sepNavWindowFrame = "{{170, 66}, {1145, 812}}"; }; }; 8BA05A670720730100365D66 /* Bite.exp */ = { @@ -106,9 +106,9 @@ }; 8BC6025B073B072D006C4272 /* Bite.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1062, 1963}}"; - sepNavSelRange = "{5170, 171}"; - sepNavVisRange = "{3327, 1862}"; + sepNavIntBoundsRect = "{{0, 0}, {1062, 1898}}"; + sepNavSelRange = "{5360, 0}"; + sepNavVisRange = "{3983, 1489}"; sepNavWindowFrame = "{{382, 39}, {1053, 839}}"; }; }; diff --git a/plugins/MacAU/Bite/Bite.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Bite/Bite.xcodeproj/christopherjohnson.perspectivev3 index 87e6588..4e2e4c6 100755 --- a/plugins/MacAU/Bite/Bite.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Bite/Bite.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>810</integer> + <integer>810</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>612 285 810 487 0 0 1440 878 </string> + <string>476 284 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,10 +350,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D72D41F7F114A007AB60F</string> + <string>8B79281521F34076006E9731</string> <key>history</key> <array> - <string>8B9D63401F7C8264007AB60F</string> + <string>8B79281021F3405A006E9731</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +367,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 102}}</string> + <string>{{0, 0}, {603, 86}}</string> <key>RubberWindowFrame</key> - <string>612 285 810 487 0 0 1440 878 </string> + <string>476 284 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>102pt</string> + <string>86pt</string> </dict> <dict> <key>Proportion</key> - <string>339pt</string> + <string>355pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +392,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 312}}</string> - <key>RubberWindowFrame</key> - <string>612 285 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 328}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -450,7 +446,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 328}}</string> + <key>RubberWindowFrame</key> + <string>476 284 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -478,11 +476,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D72D51F7F114A007AB60F</string> + <string>8B79281621F34076006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D72D61F7F114A007AB60F</string> + <string>8B79281721F34076006E9731</string> <string>8BDB25E81EAA6D6E001F42B2</string> - <string>8B9D72D71F7F114A007AB60F</string> + <string>8B79281821F34076006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +633,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528421194.64885902</real> + <real>569589878.38768005</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,11 +650,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D72D81F7F114A007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/Bite/Bite.xcodeproj</string> </array> <key>WindowString</key> - <string>612 285 810 487 0 0 1440 878 </string> + <string>476 284 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/BuildATPDF/BuildATPDF.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/BuildATPDF/BuildATPDF.xcodeproj/christopherjohnson.pbxuser index ae403e5..a8e22a5 100755 --- a/plugins/MacAU/BuildATPDF/BuildATPDF.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/BuildATPDF/BuildATPDF.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528421301; - PBXWorkspaceStateSaveDate = 528421301; + PBXPerProjectTemplateStateSaveDate = 569590151; + PBXWorkspaceStateSaveDate = 569590151; }; perUserProjectItems = { 8B753DE91E4005E400347157 /* PlistBookmark */ = 8B753DE91E4005E400347157 /* PlistBookmark */; - 8B9D637D1F7C82F6007AB60F /* PBXTextBookmark */ = 8B9D637D1F7C82F6007AB60F /* PBXTextBookmark */; + 8B79285A21F341B0006E9731 /* PBXTextBookmark */ = 8B79285A21F341B0006E9731 /* PBXTextBookmark */; 8B9D72F41F7F11CA007AB60F /* PBXTextBookmark */ = 8B9D72F41F7F11CA007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; @@ -73,14 +73,14 @@ rLen = 0; rLoc = 9223372036854775808; }; - 8B9D637D1F7C82F6007AB60F /* PBXTextBookmark */ = { + 8B79285A21F341B0006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* BuildATPDF.h */; name = "BuildATPDF.h: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 652; + vrLen = 548; vrLoc = 0; }; 8B9D72F41F7F11CA007AB60F /* PBXTextBookmark */ = { @@ -95,9 +95,9 @@ }; 8BA05A660720730100365D66 /* BuildATPDF.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {876, 4433}}"; + sepNavIntBoundsRect = "{{0, 0}, {876, 4316}}"; sepNavSelRange = "{12469, 0}"; - sepNavVisRange = "{12387, 2186}"; + sepNavVisRange = "{12444, 2132}"; sepNavWindowFrame = "{{496, 41}, {923, 837}}"; }; }; @@ -111,9 +111,9 @@ }; 8BC6025B073B072D006C4272 /* BuildATPDF.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {803, 2093}}"; + sepNavIntBoundsRect = "{{0, 0}, {803, 2106}}"; sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 550}"; + sepNavVisRange = "{0, 548}"; sepNavWindowFrame = "{{517, 39}, {923, 837}}"; }; }; diff --git a/plugins/MacAU/BuildATPDF/BuildATPDF.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/BuildATPDF/BuildATPDF.xcodeproj/christopherjohnson.perspectivev3 index a9070a0..a6dd77a 100755 --- a/plugins/MacAU/BuildATPDF/BuildATPDF.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/BuildATPDF/BuildATPDF.xcodeproj/christopherjohnson.perspectivev3 @@ -353,11 +353,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D72F41F7F11CA007AB60F</string> + <string>8B79285A21F341B0006E9731</string> <key>history</key> <array> <string>8B753DE91E4005E400347157</string> - <string>8B9D637D1F7C82F6007AB60F</string> + <string>8B9D72F41F7F11CA007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 216}}</string> + <string>{{0, 0}, {531, 202}}</string> <key>RubberWindowFrame</key> <string>599 205 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>216pt</string> + <string>202pt</string> </dict> <dict> <key>Proportion</key> - <string>392pt</string> + <string>406pt</string> <key>Tabs</key> <array> <dict> @@ -396,7 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 365}}</string> + <string>{{10, 27}, {531, 379}}</string> <key>RubberWindowFrame</key> <string>599 205 841 654 0 0 1440 878 </string> </dict> @@ -480,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D72F51F7F11CA007AB60F</string> + <string>8B79285B21F341B0006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D72F61F7F11CA007AB60F</string> + <string>8B79285C21F341B0006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D72F71F7F11CA007AB60F</string> + <string>8B79285D21F341B0006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -657,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528421322.85982102</real> + <real>569590192.67660701</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -674,7 +674,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D72F81F7F11CA007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/BuildATPDF/BuildATPDF.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacAU/BussColors4/BussColors4.cpp b/plugins/MacAU/BussColors4/BussColors4.cpp index 4b0c664..35f7931 100755 --- a/plugins/MacAU/BussColors4/BussColors4.cpp +++ b/plugins/MacAU/BussColors4/BussColors4.cpp @@ -227,9 +227,7 @@ void BussColors4::BussColors4Kernel::Reset() control = 0; gcount = 0; slowdyn = 0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -263,9 +261,6 @@ void BussColors4::BussColors4Kernel::Process( const Float32 *inSourceP, Float64 gain = 0.436; Float64 outgain = 1.0; Float64 bridgerectifier; - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; int console = (int) GetParameter( kParam_One ); switch (console) @@ -662,19 +657,11 @@ void BussColors4::BussColors4Kernel::Process( const Float32 *inSourceP, inputSample = (inputSample * wet) + (drySample * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = not fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/BussColors4/BussColors4.h b/plugins/MacAU/BussColors4/BussColors4.h index 799fbc6..321760e 100755 --- a/plugins/MacAU/BussColors4/BussColors4.h +++ b/plugins/MacAU/BussColors4/BussColors4.h @@ -160,9 +160,7 @@ public: Float64 control; int gcount; Float64 slowdyn; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/BussColors4/BussColors4.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/BussColors4/BussColors4.xcodeproj/christopherjohnson.pbxuser index 57c71c6..64acbeb 100755 --- a/plugins/MacAU/BussColors4/BussColors4.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/BussColors4/BussColors4.xcodeproj/christopherjohnson.pbxuser @@ -49,14 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528421335; - PBXWorkspaceStateSaveDate = 528421335; + PBXPerProjectTemplateStateSaveDate = 569590217; + PBXWorkspaceStateSaveDate = 569590217; }; perUserProjectItems = { 8B48B64B1EE21C9100BCF3D0 /* PlistBookmark */ = 8B48B64B1EE21C9100BCF3D0 /* PlistBookmark */; + 8B79286B21F34214006E9731 /* PBXTextBookmark */ = 8B79286B21F34214006E9731 /* PBXTextBookmark */; + 8B79287021F3422D006E9731 /* PBXTextBookmark */ = 8B79287021F3422D006E9731 /* PBXTextBookmark */; 8B9D73031F7F11E3007AB60F /* PBXTextBookmark */ = 8B9D73031F7F11E3007AB60F /* PBXTextBookmark */; - 8B9D73041F7F11E3007AB60F /* PBXTextBookmark */ = 8B9D73041F7F11E3007AB60F /* PBXTextBookmark */; - 8B9D73051F7F11E3007AB60F /* PBXTextBookmark */ = 8B9D73051F7F11E3007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -74,17 +74,7 @@ rLen = 0; rLoc = 9223372036854775808; }; - 8B9D73031F7F11E3007AB60F /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* BussColors4.h */; - name = "BussColors4.h: 157"; - rLen = 0; - rLoc = 6374; - rType = 0; - vrLen = 351; - vrLoc = 3; - }; - 8B9D73041F7F11E3007AB60F /* PBXTextBookmark */ = { + 8B79286B21F34214006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A670720730100365D66 /* BussColors4.exp */; name = "BussColors4.exp: 1"; @@ -94,7 +84,7 @@ vrLen = 18; vrLoc = 0; }; - 8B9D73051F7F11E3007AB60F /* PBXTextBookmark */ = { + 8B79287021F3422D006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A670720730100365D66 /* BussColors4.exp */; name = "BussColors4.exp: 1"; @@ -104,17 +94,27 @@ vrLen = 18; vrLoc = 0; }; + 8B9D73031F7F11E3007AB60F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* BussColors4.h */; + name = "BussColors4.h: 157"; + rLen = 0; + rLoc = 6374; + rType = 0; + vrLen = 351; + vrLoc = 3; + }; 8BA05A660720730100365D66 /* BussColors4.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {905, 9542}}"; - sepNavSelRange = "{12772, 0}"; - sepNavVisRange = "{11547, 2663}"; + sepNavIntBoundsRect = "{{0, 0}, {905, 9672}}"; + sepNavSelRange = "{11353, 0}"; + sepNavVisRange = "{10026, 2482}"; sepNavWindowFrame = "{{394, 39}, {952, 839}}"; }; }; 8BA05A670720730100365D66 /* BussColors4.exp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {367, 107}}"; + sepNavIntBoundsRect = "{{0, 0}, {367, 92}}"; sepNavSelRange = "{0, 0}"; sepNavVisRange = "{0, 18}"; }; @@ -129,9 +129,9 @@ }; 8BC6025B073B072D006C4272 /* BussColors4.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {530, 2236}}"; - sepNavSelRange = "{6374, 0}"; - sepNavVisRange = "{3, 351}"; + sepNavIntBoundsRect = "{{0, 0}, {905, 2340}}"; + sepNavSelRange = "{6519, 0}"; + sepNavVisRange = "{4823, 1798}"; sepNavWindowFrame = "{{33, 39}, {952, 839}}"; }; }; diff --git a/plugins/MacAU/BussColors4/BussColors4.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/BussColors4/BussColors4.xcodeproj/christopherjohnson.perspectivev3 index 1ccb652..c388d98 100755 --- a/plugins/MacAU/BussColors4/BussColors4.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/BussColors4/BussColors4.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -353,12 +351,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D73051F7F11E3007AB60F</string> + <string>8B79287021F3422D006E9731</string> <key>history</key> <array> <string>8B48B64B1EE21C9100BCF3D0</string> <string>8B9D73031F7F11E3007AB60F</string> - <string>8B9D73041F7F11E3007AB60F</string> + <string>8B79286B21F34214006E9731</string> </array> </dict> <key>SplitCount</key> @@ -372,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {416, 139}}</string> + <string>{{0, 0}, {416, 124}}</string> <key>RubberWindowFrame</key> <string>541 301 726 510 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>139pt</string> + <string>124pt</string> </dict> <dict> <key>Proportion</key> - <string>325pt</string> + <string>340pt</string> <key>Tabs</key> <array> <dict> @@ -397,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {416, 298}}</string> - <key>RubberWindowFrame</key> - <string>541 301 726 510 0 0 1440 878 </string> + <string>{{10, 27}, {416, 313}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -453,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {416, 399}}</string> + <string>{{10, 27}, {416, 313}}</string> + <key>RubberWindowFrame</key> + <string>541 301 726 510 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -481,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D73061F7F11E3007AB60F</string> + <string>8B79287121F3422D006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D73071F7F11E3007AB60F</string> + <string>8B79287221F3422D006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D73081F7F11E3007AB60F</string> + <string>8B79287321F3422D006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -658,7 +656,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528421347.61386502</real> + <real>569590317.82425797</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -675,7 +673,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D73091F7F11E3007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/BussColors4/BussColors4.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacAU/ButterComp/ButterComp.cpp b/plugins/MacAU/ButterComp/ButterComp.cpp index 612eb3c..5280a58 100755 --- a/plugins/MacAU/ButterComp/ButterComp.cpp +++ b/plugins/MacAU/ButterComp/ButterComp.cpp @@ -188,9 +188,6 @@ void ButterComp::ButterCompKernel::Process( const Float32 *inSourceP, Float64 overallscale = 2.0; overallscale /= 44100.0; overallscale *= GetSampleRate(); - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; Float64 inputpos; Float64 inputneg; Float64 calcpos; @@ -286,11 +283,11 @@ void ButterComp::ButterCompKernel::Process( const Float32 *inSourceP, inputSample /= outputgain; if (wet < 1.0) inputSample = (drySample * dry)+(inputSample*wet); - //noise shaping to 32-bit floating point - fpTemp = inputSample; - fpNShape = (fpNShape*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShape; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/ButterComp/ButterComp.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/ButterComp/ButterComp.xcodeproj/christopherjohnson.pbxuser index 0757b10..21b9158 100755 --- a/plugins/MacAU/ButterComp/ButterComp.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/ButterComp/ButterComp.xcodeproj/christopherjohnson.pbxuser @@ -51,24 +51,44 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 559509267; - PBXWorkspaceStateSaveDate = 559509267; + PBXPerProjectTemplateStateSaveDate = 569590364; + PBXWorkspaceStateSaveDate = 569590364; }; perUserProjectItems = { + 8B79288121F342AF006E9731 /* PBXTextBookmark */ = 8B79288121F342AF006E9731 /* PBXTextBookmark */; + 8B79288621F342C1006E9731 /* PBXTextBookmark */ = 8B79288621F342C1006E9731 /* PBXTextBookmark */; 8BE626A621596E0600E4E476 /* PBXTextBookmark */ = 8BE626A621596E0600E4E476 /* PBXTextBookmark */; - 8BE626D221596F6E00E4E476 /* PBXTextBookmark */ = 8BE626D221596F6E00E4E476 /* PBXTextBookmark */; - 8BE626D321596F6E00E4E476 /* PBXTextBookmark */ = 8BE626D321596F6E00E4E476 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B79288121F342AF006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* ButterComp.cpp */; + name = "ButterComp.cpp: 266"; + rLen = 0; + rLoc = 11774; + rType = 0; + vrLen = 0; + vrLoc = 0; + }; + 8B79288621F342C1006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* ButterComp.cpp */; + name = "ButterComp.cpp: 266"; + rLen = 0; + rLoc = 11774; + rType = 0; + vrLen = 0; + vrLoc = 0; + }; 8BA05A660720730100365D66 /* ButterComp.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {579, 4004}}"; - sepNavSelRange = "{11891, 0}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 3965}}"; + sepNavSelRange = "{11774, 0}"; sepNavVisRange = "{0, 0}"; - sepNavWindowFrame = "{{618, 69}, {834, 801}}"; + sepNavWindowFrame = "{{405, 77}, {834, 801}}"; }; }; 8BA05A670720730100365D66 /* ButterComp.exp */ = { @@ -89,9 +109,9 @@ }; 8BC6025B073B072D006C4272 /* ButterComp.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {698, 1885}}"; + sepNavIntBoundsRect = "{{0, 0}, {824, 1846}}"; sepNavSelRange = "{5162, 0}"; - sepNavVisRange = "{3553, 95}"; + sepNavVisRange = "{3901, 1436}"; sepNavWindowFrame = "{{606, 77}, {834, 801}}"; }; }; @@ -119,26 +139,6 @@ vrLen = 95; vrLoc = 3553; }; - 8BE626D221596F6E00E4E476 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* ButterComp.cpp */; - name = "ButterComp.cpp: 269"; - rLen = 0; - rLoc = 11891; - rType = 0; - vrLen = 0; - vrLoc = 0; - }; - 8BE626D321596F6E00E4E476 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* ButterComp.cpp */; - name = "ButterComp.cpp: 269"; - rLen = 0; - rLoc = 11891; - rType = 0; - vrLen = 0; - vrLoc = 0; - }; 8D01CCC60486CAD60068D4B7 /* ButterComp */ = { activeExec = 0; }; diff --git a/plugins/MacAU/ButterComp/ButterComp.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/ButterComp/ButterComp.xcodeproj/christopherjohnson.perspectivev3 index 412b584..f0011a1 100755 --- a/plugins/MacAU/ButterComp/ButterComp.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/ButterComp/ButterComp.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>628 380 810 487 0 0 1440 878 </string> + <string>447 360 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,11 +350,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BE626D321596F6E00E4E476</string> + <string>8B79288621F342C1006E9731</string> <key>history</key> <array> <string>8BE626A621596E0600E4E476</string> - <string>8BE626D221596F6E00E4E476</string> + <string>8B79288121F342AF006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 32}}</string> + <string>{{0, 0}, {603, 13}}</string> <key>RubberWindowFrame</key> - <string>628 380 810 487 0 0 1440 878 </string> + <string>447 360 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>32pt</string> + <string>13pt</string> </dict> <dict> <key>Proportion</key> - <string>409pt</string> + <string>428pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 382}}</string> - <key>RubberWindowFrame</key> - <string>628 380 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 401}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 401}}</string> + <key>RubberWindowFrame</key> + <string>447 360 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BE626D421596F6E00E4E476</string> + <string>8B79288721F342C1006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BE626D521596F6E00E4E476</string> + <string>8B79288821F342C1006E9731</string> <string>8B7FDBEA1F85C96D00A80060</string> - <string>8BE626D621596F6E00E4E476</string> + <string>8B79288921F342C1006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -656,7 +654,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>559509358.82003796</real> + <real>569590465.72403705</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -673,11 +671,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BE626D721596F6E00E4E476</string> <string>/Users/christopherjohnson/Desktop/MacAU/ButterComp/ButterComp.xcodeproj</string> </array> <key>WindowString</key> - <string>628 380 810 487 0 0 1440 878 </string> + <string>447 360 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/ButterComp2/ButterComp2.cpp b/plugins/MacAU/ButterComp2/ButterComp2.cpp index e85626f..ec45914 100755 --- a/plugins/MacAU/ButterComp2/ButterComp2.cpp +++ b/plugins/MacAU/ButterComp2/ButterComp2.cpp @@ -317,23 +317,15 @@ void ButterComp2::ButterComp2Kernel::Process( const Float32 *inSourceP, flip = !flip; - //noise shaping to 32-bit floating point - Float32 fpTemp = inputSample; - fpNShape += (inputSample-fpTemp); - inputSample += fpNShape; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; } - fpNShape *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacAU/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.pbxuser index e13714b..9bf558f 100755 --- a/plugins/MacAU/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.pbxuser @@ -49,13 +49,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 559960504; - PBXWorkspaceStateSaveDate = 559960504; + PBXPerProjectTemplateStateSaveDate = 569590507; + PBXWorkspaceStateSaveDate = 569590507; }; perUserProjectItems = { 8B42FD41216050B10092969A /* PBXTextBookmark */ = 8B42FD41216050B10092969A /* PBXTextBookmark */; - 8B42FD83216056480092969A /* PBXTextBookmark */ = 8B42FD83216056480092969A /* PBXTextBookmark */; - 8B42FD84216056480092969A /* PBXTextBookmark */ = 8B42FD84216056480092969A /* PBXTextBookmark */; + 8B79289621F34318006E9731 /* PBXTextBookmark */ = 8B79289621F34318006E9731 /* PBXTextBookmark */; + 8B79289B21F34328006E9731 /* PBXTextBookmark */ = 8B79289B21F34328006E9731 /* PBXTextBookmark */; 8BE6255F2157A02A00E4E476 /* PlistBookmark */ = 8BE6255F2157A02A00E4E476 /* PlistBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; @@ -72,32 +72,32 @@ vrLen = 214; vrLoc = 5453; }; - 8B42FD83216056480092969A /* PBXTextBookmark */ = { + 8B79289621F34318006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* ButterComp2.cpp */; name = "ButterComp2.cpp: 252"; rLen = 0; rLoc = 10778; rType = 0; - vrLen = 265; + vrLen = 180; vrLoc = 10712; }; - 8B42FD84216056480092969A /* PBXTextBookmark */ = { + 8B79289B21F34328006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* ButterComp2.cpp */; name = "ButterComp2.cpp: 252"; rLen = 0; rLoc = 10778; rType = 0; - vrLen = 265; + vrLen = 180; vrLoc = 10712; }; 8BA05A660720730100365D66 /* ButterComp2.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {586, 4498}}"; + sepNavIntBoundsRect = "{{0, 0}, {558, 4329}}"; sepNavSelRange = "{10778, 0}"; - sepNavVisRange = "{10712, 265}"; - sepNavWindowFrame = "{{864, 45}, {816, 833}}"; + sepNavVisRange = "{10712, 180}"; + sepNavWindowFrame = "{{496, 45}, {816, 833}}"; }; }; 8BA05A690720730100365D66 /* ButterComp2Version.h */ = { diff --git a/plugins/MacAU/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.perspectivev3 index c95d3a7..22a4926 100755 --- a/plugins/MacAU/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -326,7 +324,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>662 164 841 654 0 0 1440 878 </string> + <string>456 186 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -354,12 +352,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B42FD84216056480092969A</string> + <string>8B79289B21F34328006E9731</string> <key>history</key> <array> <string>8BE6255F2157A02A00E4E476</string> <string>8B42FD41216050B10092969A</string> - <string>8B42FD83216056480092969A</string> + <string>8B79289621F34318006E9731</string> </array> </dict> <key>SplitCount</key> @@ -373,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 126}}</string> + <string>{{0, 0}, {531, 109}}</string> <key>RubberWindowFrame</key> - <string>662 164 841 654 0 0 1440 878 </string> + <string>456 186 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>126pt</string> + <string>109pt</string> </dict> <dict> <key>Proportion</key> - <string>482pt</string> + <string>499pt</string> <key>Tabs</key> <array> <dict> @@ -398,9 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 455}}</string> - <key>RubberWindowFrame</key> - <string>662 164 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 472}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -454,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 393}}</string> + <string>{{10, 27}, {531, 472}}</string> + <key>RubberWindowFrame</key> + <string>456 186 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -482,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B42FD85216056480092969A</string> + <string>8B79289C21F34328006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B42FD86216056480092969A</string> + <string>8B79289D21F34328006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B42FD87216056480092969A</string> + <string>8B79289E21F34328006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -659,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>559961672.53862405</real> + <real>569590568.39095497</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -676,11 +674,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B42FD88216056480092969A</string> <string>/Users/christopherjohnson/Desktop/MacAU/ButterComp2/ButterComp2.xcodeproj</string> </array> <key>WindowString</key> - <string>662 164 841 654 0 0 1440 878 </string> + <string>456 186 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/C5RawBuss/C5RawBuss.cpp b/plugins/MacAU/C5RawBuss/C5RawBuss.cpp index 4f45ac0..9cca2dd 100755 --- a/plugins/MacAU/C5RawBuss/C5RawBuss.cpp +++ b/plugins/MacAU/C5RawBuss/C5RawBuss.cpp @@ -160,9 +160,7 @@ void C5RawBuss::C5RawBussKernel::Reset() { lastFXBuss = 0.0; lastSampleBuss = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -177,9 +175,6 @@ void C5RawBuss::C5RawBussKernel::Process( const Float32 *inSourceP, UInt32 nSampleFrames = inFramesToProcess; const Float32 *sourceP = inSourceP; Float32 *destP = inDestP; - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double centering = GetParameter( kParam_One ) * 0.5; centering = 1.0 - pow(centering,5); @@ -237,19 +232,11 @@ void C5RawBuss::C5RawBussKernel::Process( const Float32 *inSourceP, //build new signal off what was present in output last time //slew aspect - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/C5RawBuss/C5RawBuss.h b/plugins/MacAU/C5RawBuss/C5RawBuss.h index b8a3a7c..1d3209e 100755 --- a/plugins/MacAU/C5RawBuss/C5RawBuss.h +++ b/plugins/MacAU/C5RawBuss/C5RawBuss.h @@ -127,9 +127,7 @@ public: private: Float64 lastFXBuss; Float64 lastSampleBuss; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.pbxuser index b1e416f..cd94a9b 100755 --- a/plugins/MacAU/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.pbxuser @@ -49,20 +49,18 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 538699005; - PBXWorkspaceStateSaveDate = 538699005; + PBXPerProjectTemplateStateSaveDate = 569590602; + PBXWorkspaceStateSaveDate = 569590602; }; perUserProjectItems = { - 8B4E55B3201BC48D00B5DC2A /* PlistBookmark */ = 8B4E55B3201BC48D00B5DC2A /* PlistBookmark */; - 8B4E57B0201BE78F00B5DC2A /* PBXBookmark */ = 8B4E57B0201BE78F00B5DC2A /* PBXBookmark */; - 8B4E57B9201BF00900B5DC2A /* PlistBookmark */ = 8B4E57B9201BF00900B5DC2A /* PlistBookmark */; - 8B4E57BC201BF00900B5DC2A /* PBXTextBookmark */ = 8B4E57BC201BF00900B5DC2A /* PBXTextBookmark */; + 8B7928AC21F343AD006E9731 /* PlistBookmark */ = 8B7928AC21F343AD006E9731 /* PlistBookmark */; + 8B7928B121F343BF006E9731 /* PlistBookmark */ = 8B7928B121F343BF006E9731 /* PlistBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B4E55B3201BC48D00B5DC2A /* PlistBookmark */ = { + 8B7928AC21F343AD006E9731 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; fallbackIsa = PBXBookmark; @@ -70,15 +68,11 @@ kPath = ( CFBundleName, ); - name = /Users/christopherjohnson/Desktop/C5RawBuss/Info.plist; + name = /Users/christopherjohnson/Desktop/MacAU/C5RawBuss/Info.plist; rLen = 0; - rLoc = 9223372036854775808; - }; - 8B4E57B0201BE78F00B5DC2A /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 8BA05A660720730100365D66 /* C5RawBuss.cpp */; + rLoc = 9223372036854775807; }; - 8B4E57B9201BF00900B5DC2A /* PlistBookmark */ = { + 8B7928B121F343BF006E9731 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; fallbackIsa = PBXBookmark; @@ -87,25 +81,15 @@ CFBundleName, ); name = /Users/christopherjohnson/Desktop/MacAU/C5RawBuss/Info.plist; - rLen = 0; - rLoc = 9223372036854775807; - }; - 8B4E57BC201BF00900B5DC2A /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* C5RawBuss.cpp */; - name = "C5RawBuss.cpp: 220"; - rLen = 762; - rLoc = 9965; - rType = 0; - vrLen = 1877; - vrLoc = 9307; + rLen = 26; + rLoc = 0; }; 8BA05A660720730100365D66 /* C5RawBuss.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {876, 3380}}"; - sepNavSelRange = "{9965, 762}"; - sepNavVisRange = "{9307, 1877}"; - sepNavWindowFrame = "{{-64, 50}, {923, 828}}"; + sepNavIntBoundsRect = "{{0, 0}, {876, 3419}}"; + sepNavSelRange = "{10825, 0}"; + sepNavVisRange = "{7481, 2627}"; + sepNavWindowFrame = "{{369, 50}, {923, 828}}"; }; }; 8BA05A690720730100365D66 /* C5RawBussVersion.h */ = { @@ -118,9 +102,9 @@ }; 8BC6025B073B072D006C4272 /* C5RawBuss.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1807}}"; - sepNavSelRange = "{5077, 48}"; - sepNavVisRange = "{2715, 1805}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 1781}}"; + sepNavSelRange = "{5147, 0}"; + sepNavVisRange = "{3528, 1724}"; sepNavWindowFrame = "{{517, 50}, {923, 828}}"; }; }; diff --git a/plugins/MacAU/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.perspectivev3 index dc4bb99..a043097 100755 --- a/plugins/MacAU/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.perspectivev3 @@ -222,52 +222,11 @@ </dict> </array> <key>OpenEditors</key> - <array> - <dict> - <key>Content</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>8B4E57BA201BF00900B5DC2A</string> - <key>PBXProjectModuleLabel</key> - <string>C5RawBuss.cpp</string> - <key>PBXSplitModuleInNavigatorKey</key> - <dict> - <key>Split0</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>8B4E57BB201BF00900B5DC2A</string> - <key>PBXProjectModuleLabel</key> - <string>C5RawBuss.cpp</string> - <key>_historyCapacity</key> - <integer>0</integer> - <key>bookmark</key> - <string>8B4E57BC201BF00900B5DC2A</string> - <key>history</key> - <array> - <string>8B4E57B0201BE78F00B5DC2A</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}, {923, 731}}</string> - <key>PBXModuleWindowStatusBarHidden2</key> - <false/> - <key>RubberWindowFrame</key> - <string>-64 106 923 772 0 0 1440 878 </string> - </dict> - </dict> - </array> + <array/> <key>PerspectiveWidths</key> <array> - <integer>810</integer> - <integer>810</integer> + <integer>682</integer> + <integer>682</integer> </array> <key>Perspectives</key> <array> @@ -297,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -367,7 +324,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>719 408 682 464 0 0 1440 878 </string> + <string>598 397 682 464 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -395,10 +352,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B4E57B9201BF00900B5DC2A</string> + <string>8B7928B121F343BF006E9731</string> <key>history</key> <array> - <string>8B4E55B3201BC48D00B5DC2A</string> + <string>8B7928AC21F343AD006E9731</string> </array> </dict> <key>SplitCount</key> @@ -412,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {372, 39}}</string> + <string>{{0, 0}, {372, 20}}</string> <key>RubberWindowFrame</key> - <string>719 408 682 464 0 0 1440 878 </string> + <string>598 397 682 464 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>39pt</string> + <string>20pt</string> </dict> <dict> <key>Proportion</key> - <string>379pt</string> + <string>398pt</string> <key>Tabs</key> <array> <dict> @@ -437,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {372, 352}}</string> - <key>RubberWindowFrame</key> - <string>719 408 682 464 0 0 1440 878 </string> + <string>{{10, 27}, {372, 371}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -493,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {372, 371}}</string> + <key>RubberWindowFrame</key> + <string>598 397 682 464 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -521,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B4E5791201BE4FE00B5DC2A</string> + <string>8B7928B221F343BF006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B4E5792201BE4FE00B5DC2A</string> + <string>8B7928B321F343BF006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B4E5793201BE4FE00B5DC2A</string> + <string>8B7928B421F343BF006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -698,7 +655,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>538701833.475577</real> + <real>569590719.21111</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -715,11 +672,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B4E57BA201BF00900B5DC2A</string> <string>/Users/christopherjohnson/Desktop/MacAU/C5RawBuss/C5RawBuss.xcodeproj</string> </array> <key>WindowString</key> - <string>719 408 682 464 0 0 1440 878 </string> + <string>598 397 682 464 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/C5RawChannel/C5RawChannel.cpp b/plugins/MacAU/C5RawChannel/C5RawChannel.cpp index 15d4f7a..2b2eb79 100755 --- a/plugins/MacAU/C5RawChannel/C5RawChannel.cpp +++ b/plugins/MacAU/C5RawChannel/C5RawChannel.cpp @@ -160,9 +160,7 @@ void C5RawChannel::C5RawChannelKernel::Reset() { lastFXChannel = 0.0; lastSampleChannel = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -177,9 +175,6 @@ void C5RawChannel::C5RawChannelKernel::Process( const Float32 *inSourceP, UInt32 nSampleFrames = inFramesToProcess; const Float32 *sourceP = inSourceP; Float32 *destP = inDestP; - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double centering = GetParameter( kParam_One ) * 0.5; centering = 1.0 - pow(centering,5); @@ -238,19 +233,11 @@ void C5RawChannel::C5RawChannelKernel::Process( const Float32 *inSourceP, inputSample = sin(inputSample); //amplitude aspect - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/C5RawChannel/C5RawChannel.h b/plugins/MacAU/C5RawChannel/C5RawChannel.h index 1f3735e..c0bc730 100755 --- a/plugins/MacAU/C5RawChannel/C5RawChannel.h +++ b/plugins/MacAU/C5RawChannel/C5RawChannel.h @@ -127,9 +127,7 @@ public: private: Float64 lastSampleChannel; Float64 lastFXChannel; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.pbxuser index 9e28f23..fe95427 100755 --- a/plugins/MacAU/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.pbxuser @@ -49,13 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 542412635; - PBXWorkspaceStateSaveDate = 542412635; + PBXPerProjectTemplateStateSaveDate = 569590745; + PBXWorkspaceStateSaveDate = 569590745; }; perUserProjectItems = { 8B44C16D20548F6200B1360B /* PlistBookmark */ = 8B44C16D20548F6200B1360B /* PlistBookmark */; - 8B44C16E20548F6200B1360B /* PBXBookmark */ = 8B44C16E20548F6200B1360B /* PBXBookmark */; - 8B44C16F20548F6200B1360B /* PBXTextBookmark */ = 8B44C16F20548F6200B1360B /* PBXTextBookmark */; + 8B7928C221F3441D006E9731 /* PBXTextBookmark */ = 8B7928C221F3441D006E9731 /* PBXTextBookmark */; + 8B7928C721F3442D006E9731 /* PBXTextBookmark */ = 8B7928C721F3442D006E9731 /* PBXTextBookmark */; + 8BE625CC2157ABD800E4E476 /* PBXTextBookmark */ = 8BE625CC2157ABD800E4E476 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -71,27 +72,33 @@ ); name = /Users/christopherjohnson/Desktop/MacAU/C5RawChannel/Info.plist; rLen = 0; - rLoc = 9223372036854775807; + rLoc = 9223372036854775808; }; - 8B44C16E20548F6200B1360B /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 8BA05A660720730100365D66 /* C5RawChannel.cpp */; + 8B7928C221F3441D006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* C5RawChannel.h */; + name = "C5RawChannel.h: 59"; + rLen = 0; + rLoc = 2944; + rType = 0; + vrLen = 0; + vrLoc = 0; }; - 8B44C16F20548F6200B1360B /* PBXTextBookmark */ = { + 8B7928C721F3442D006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* C5RawChannel.cpp */; - name = "C5RawChannel.cpp: 220"; - rLen = 792; - rLoc = 10043; + fRef = 8BC6025B073B072D006C4272 /* C5RawChannel.h */; + name = "C5RawChannel.h: 59"; + rLen = 0; + rLoc = 2944; rType = 0; - vrLen = 1; - vrLoc = 10043; + vrLen = 0; + vrLoc = 0; }; 8BA05A660720730100365D66 /* C5RawChannel.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {677, 3601}}"; - sepNavSelRange = "{10043, 792}"; - sepNavVisRange = "{10043, 1}"; + sepNavIntBoundsRect = "{{0, 0}, {876, 3445}}"; + sepNavSelRange = "{10933, 0}"; + sepNavVisRange = "{6542, 2174}"; sepNavWindowFrame = "{{434, 50}, {923, 828}}"; }; }; @@ -105,9 +112,9 @@ }; 8BC6025B073B072D006C4272 /* C5RawChannel.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1638}}"; + sepNavIntBoundsRect = "{{0, 0}, {335, 1833}}"; sepNavSelRange = "{2944, 0}"; - sepNavVisRange = "{2680, 1548}"; + sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{15, 45}, {923, 828}}"; }; }; @@ -125,6 +132,16 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; + 8BE625CC2157ABD800E4E476 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* C5RawChannel.cpp */; + name = "C5RawChannel.cpp: 220"; + rLen = 792; + rLoc = 9891; + rType = 0; + vrLen = 0; + vrLoc = 0; + }; 8D01CCC60486CAD60068D4B7 /* C5RawChannel */ = { activeExec = 0; }; diff --git a/plugins/MacAU/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.perspectivev3 index 54a9bef..ee92352 100755 --- a/plugins/MacAU/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>841</integer> - <integer>841</integer> + <integer>694</integer> + <integer>694</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -302,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>3</integer> + <integer>4</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> @@ -326,7 +324,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>721 122 694 488 0 0 1440 878 </string> + <string>490 149 694 488 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -342,7 +340,7 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274A1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>C5RawChannel.cpp</string> + <string>C5RawChannel.h</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -350,15 +348,16 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274B1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>C5RawChannel.cpp</string> + <string>C5RawChannel.h</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B44C16F20548F6200B1360B</string> + <string>8B7928C721F3442D006E9731</string> <key>history</key> <array> <string>8B44C16D20548F6200B1360B</string> - <string>8B44C16E20548F6200B1360B</string> + <string>8BE625CC2157ABD800E4E476</string> + <string>8B7928C221F3441D006E9731</string> </array> </dict> <key>SplitCount</key> @@ -372,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {384, 45}}</string> + <string>{{0, 0}, {384, 6}}</string> <key>RubberWindowFrame</key> - <string>721 122 694 488 0 0 1440 878 </string> + <string>490 149 694 488 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>45pt</string> + <string>6pt</string> </dict> <dict> <key>Proportion</key> - <string>397pt</string> + <string>436pt</string> <key>Tabs</key> <array> <dict> @@ -397,9 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {384, 370}}</string> - <key>RubberWindowFrame</key> - <string>721 122 694 488 0 0 1440 878 </string> + <string>{{10, 27}, {384, 409}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -453,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 339}}</string> + <string>{{10, 27}, {384, 409}}</string> + <key>RubberWindowFrame</key> + <string>490 149 694 488 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -481,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B44C17020548F6200B1360B</string> + <string>8B7928C821F3442D006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B44C17120548F6200B1360B</string> + <string>8B7928C921F3442D006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B44C17220548F6200B1360B</string> + <string>8B7928CA21F3442D006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -658,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>542412642.174927</real> + <real>569590829.86194801</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -675,11 +674,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B44C17320548F6200B1360B</string> <string>/Users/christopherjohnson/Desktop/MacAU/C5RawChannel/C5RawChannel.xcodeproj</string> </array> <key>WindowString</key> - <string>721 122 694 488 0 0 1440 878 </string> + <string>490 149 694 488 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/CStrip/CStrip.cpp b/plugins/MacAU/CStrip/CStrip.cpp index 78b3c31..494d6b5 100755 --- a/plugins/MacAU/CStrip/CStrip.cpp +++ b/plugins/MacAU/CStrip/CStrip.cpp @@ -257,9 +257,7 @@ ComponentResult CStrip::Initialize() //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void CStrip::CStripKernel::Reset() { - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; lastSample = 0.0; last2Sample = 0.0; @@ -347,9 +345,8 @@ void CStrip::CStripKernel::Process( const Float32 *inSourceP, overallscale = GetSampleRate(); compscale = compscale * overallscale; //compscale is the one that's 1 or something like 2.2 for 96K rates - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; + long double fpOld = 0.618033988749894848204586; //golden ratio! + long double fpNew = 1.0 - fpOld; Float64 inputSample; Float64 highSample = 0.0; @@ -767,19 +764,11 @@ void CStrip::CStripKernel::Process( const Float32 *inSourceP, //built in output trim and dry/wet if desired if (outputgain != 1.0) inputSample *= outputgain; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = not fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/CStrip/CStrip.h b/plugins/MacAU/CStrip/CStrip.h index 750ef35..f12b4c8 100755 --- a/plugins/MacAU/CStrip/CStrip.h +++ b/plugins/MacAU/CStrip/CStrip.h @@ -162,9 +162,7 @@ public: virtual void Reset(); private: - Float64 fpNShapeA; - Float64 fpNShapeB; - bool fpFlip; + Float64 fpNShape; Float64 lastSample; Float64 last2Sample; diff --git a/plugins/MacAU/CStrip/CStrip.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/CStrip/CStrip.xcodeproj/christopherjohnson.pbxuser index 22fd68a..d0297d0 100755 --- a/plugins/MacAU/CStrip/CStrip.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/CStrip/CStrip.xcodeproj/christopherjohnson.pbxuser @@ -49,23 +49,43 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 559506724; - PBXWorkspaceStateSaveDate = 559506724; + PBXPerProjectTemplateStateSaveDate = 569595746; + PBXWorkspaceStateSaveDate = 569595746; }; perUserProjectItems = { - 8BE626742159682E00E4E476 /* PBXTextBookmark */ = 8BE626742159682E00E4E476 /* PBXTextBookmark */; - 8BE626752159682E00E4E476 /* PBXTextBookmark */ = 8BE626752159682E00E4E476 /* PBXTextBookmark */; + 8B792A1221F357B8006E9731 /* PBXTextBookmark */ = 8B792A1221F357B8006E9731 /* PBXTextBookmark */; + 8B792A1C21F357E5006E9731 /* PBXTextBookmark */ = 8B792A1C21F357E5006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B792A1221F357B8006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* CStrip.h */; + name = "CStrip.h: 167"; + rLen = 45; + rLoc = 6671; + rType = 0; + vrLen = 136; + vrLoc = 6648; + }; + 8B792A1C21F357E5006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* CStrip.h */; + name = "CStrip.h: 167"; + rLen = 45; + rLoc = 6671; + rType = 0; + vrLen = 136; + vrLoc = 6648; + }; 8BA05A660720730100365D66 /* CStrip.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {989, 10972}}"; - sepNavSelRange = "{12483, 39}"; - sepNavVisRange = "{16317, 1951}"; - sepNavWindowFrame = "{{618, 70}, {1036, 808}}"; + sepNavIntBoundsRect = "{{0, 0}, {989, 10543}}"; + sepNavSelRange = "{14732, 0}"; + sepNavVisRange = "{13582, 1981}"; + sepNavWindowFrame = "{{305, 65}, {1036, 808}}"; }; }; 8BA05A680720730100365D66 /* CStrip.r */ = { @@ -86,9 +106,9 @@ }; 8BC6025B073B072D006C4272 /* CStrip.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {803, 3445}}"; - sepNavSelRange = "{6708, 45}"; - sepNavVisRange = "{6648, 121}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 3289}}"; + sepNavSelRange = "{6671, 45}"; + sepNavVisRange = "{6648, 136}"; sepNavWindowFrame = "{{686, 40}, {754, 805}}"; }; }; @@ -106,26 +126,6 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8BE626742159682E00E4E476 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* CStrip.h */; - name = "CStrip.h: 169"; - rLen = 45; - rLoc = 6708; - rType = 0; - vrLen = 121; - vrLoc = 6648; - }; - 8BE626752159682E00E4E476 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* CStrip.h */; - name = "CStrip.h: 169"; - rLen = 45; - rLoc = 6708; - rType = 0; - vrLen = 121; - vrLoc = 6648; - }; 8D01CCC60486CAD60068D4B7 /* CStrip */ = { activeExec = 0; }; diff --git a/plugins/MacAU/CStrip/CStrip.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/CStrip/CStrip.xcodeproj/christopherjohnson.perspectivev3 index 02abfef..045b469 100755 --- a/plugins/MacAU/CStrip/CStrip.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/CStrip/CStrip.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>619 317 810 487 0 0 1440 878 </string> + <string>471 312 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,10 +350,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BE626752159682E00E4E476</string> + <string>8B792A1C21F357E5006E9731</string> <key>history</key> <array> - <string>8BE626742159682E00E4E476</string> + <string>8B792A1221F357B8006E9731</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +367,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 132}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> - <string>619 317 810 487 0 0 1440 878 </string> + <string>471 312 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +392,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> - <key>RubberWindowFrame</key> - <string>619 317 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 297}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -450,7 +446,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 297}}</string> + <key>RubberWindowFrame</key> + <string>471 312 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -478,11 +476,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BE626762159682E00E4E476</string> + <string>8B792A1D21F357E5006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BE626772159682E00E4E476</string> + <string>8B792A1E21F357E5006E9731</string> <string>8BB5DCD21FBCB6E7008B4570</string> - <string>8BE626782159682E00E4E476</string> + <string>8B792A1F21F357E5006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +633,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>559507502.89647996</real> + <real>569595877.85073602</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,10 +650,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> + <string>8B792A2021F357E5006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/CStrip/CStrip.xcodeproj</string> </array> <key>WindowString</key> - <string>619 317 810 487 0 0 1440 878 </string> + <string>471 312 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Capacitor/Capacitor.cpp b/plugins/MacAU/Capacitor/Capacitor.cpp index f810f0e..bfe38c2 100755 --- a/plugins/MacAU/Capacitor/Capacitor.cpp +++ b/plugins/MacAU/Capacitor/Capacitor.cpp @@ -196,9 +196,7 @@ void Capacitor::CapacitorKernel::Reset() lastLowpass = 1000.0; lastHighpass = 1000.0; lastWet = 1000.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -229,9 +227,6 @@ void Capacitor::CapacitorKernel::Process( const Float32 *inSourceP, Float64 invLowpass; Float64 invHighpass; Float64 dry; - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSample; Float32 drySample; @@ -324,19 +319,11 @@ void Capacitor::CapacitorKernel::Process( const Float32 *inSourceP, inputSample = (drySample * dry) + (inputSample * wet); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/Capacitor/Capacitor.h b/plugins/MacAU/Capacitor/Capacitor.h index 92ca84a..7608462 100755 --- a/plugins/MacAU/Capacitor/Capacitor.h +++ b/plugins/MacAU/Capacitor/Capacitor.h @@ -158,9 +158,7 @@ public: Float64 lastHighpass; Float64 lastWet; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/Capacitor/Capacitor.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Capacitor/Capacitor.xcodeproj/christopherjohnson.pbxuser index 2351b87..3c205e0 100755 --- a/plugins/MacAU/Capacitor/Capacitor.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Capacitor/Capacitor.xcodeproj/christopherjohnson.pbxuser @@ -51,13 +51,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 531742140; - PBXWorkspaceStateSaveDate = 531742140; + PBXPerProjectTemplateStateSaveDate = 569590853; + PBXWorkspaceStateSaveDate = 569590853; }; perUserProjectItems = { 8B558E341E54FD3900D04D0B /* PlistBookmark */ = 8B558E341E54FD3900D04D0B /* PlistBookmark */; - 8B6692B51FB1BDCA007B3434 /* PBXTextBookmark */ = 8B6692B51FB1BDCA007B3434 /* PBXTextBookmark */; - 8B6692B61FB1BDCA007B3434 /* PBXTextBookmark */ = 8B6692B61FB1BDCA007B3434 /* PBXTextBookmark */; + 8B7928D921F344BA006E9731 /* PBXTextBookmark */ = 8B7928D921F344BA006E9731 /* PBXTextBookmark */; + 8B7928DE21F344CC006E9731 /* PBXTextBookmark */ = 8B7928DE21F344CC006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -75,32 +75,32 @@ rLen = 0; rLoc = 9223372036854775808; }; - 8B6692B51FB1BDCA007B3434 /* PBXTextBookmark */ = { + 8B7928D921F344BA006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Capacitor.cpp */; - name = "Capacitor.cpp: 238"; + name = "Capacitor.cpp: 233"; rLen = 0; - rLoc = 10065; + rLoc = 9913; rType = 0; - vrLen = 80; - vrLoc = 10017; + vrLen = 141; + vrLoc = 9914; }; - 8B6692B61FB1BDCA007B3434 /* PBXTextBookmark */ = { + 8B7928DE21F344CC006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Capacitor.cpp */; - name = "Capacitor.cpp: 238"; + name = "Capacitor.cpp: 233"; rLen = 0; - rLoc = 10065; + rLoc = 9913; rType = 0; - vrLen = 80; - vrLoc = 10017; + vrLen = 141; + vrLoc = 9914; }; 8BA05A660720730100365D66 /* Capacitor.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {544, 4628}}"; - sepNavSelRange = "{10065, 0}"; - sepNavVisRange = "{10017, 80}"; - sepNavWindowFrame = "{{512, 39}, {923, 837}}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 4472}}"; + sepNavSelRange = "{9913, 0}"; + sepNavVisRange = "{9914, 141}"; + sepNavWindowFrame = "{{401, 32}, {923, 837}}"; }; }; 8BA05A690720730100365D66 /* CapacitorVersion.h */ = { @@ -113,9 +113,9 @@ }; 8BC6025B073B072D006C4272 /* Capacitor.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 2158}}"; - sepNavSelRange = "{5829, 65}"; - sepNavVisRange = "{3949, 1667}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 2353}}"; + sepNavSelRange = "{5854, 0}"; + sepNavVisRange = "{4764, 1192}"; sepNavWindowFrame = "{{517, 41}, {923, 837}}"; }; }; diff --git a/plugins/MacAU/Capacitor/Capacitor.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Capacitor/Capacitor.xcodeproj/christopherjohnson.perspectivev3 index 53f7a19..079d4c2 100755 --- a/plugins/MacAU/Capacitor/Capacitor.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Capacitor/Capacitor.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>810</integer> - <integer>810</integer> + <integer>841</integer> + <integer>841</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -301,7 +299,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>4</integer> + <integer>3</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> @@ -325,7 +323,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>573 188 841 654 0 0 1440 878 </string> + <string>493 190 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -353,11 +351,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B6692B61FB1BDCA007B3434</string> + <string>8B7928DE21F344CC006E9731</string> <key>history</key> <array> <string>8B558E341E54FD3900D04D0B</string> - <string>8B6692B51FB1BDCA007B3434</string> + <string>8B7928D921F344BA006E9731</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 92}}</string> + <string>{{0, 0}, {531, 74}}</string> <key>RubberWindowFrame</key> - <string>573 188 841 654 0 0 1440 878 </string> + <string>493 190 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>92pt</string> + <string>74pt</string> </dict> <dict> <key>Proportion</key> - <string>516pt</string> + <string>534pt</string> <key>Tabs</key> <array> <dict> @@ -396,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 489}}</string> - <key>RubberWindowFrame</key> - <string>573 188 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 507}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -452,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {531, 507}}</string> + <key>RubberWindowFrame</key> + <string>493 190 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -480,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B6692B71FB1BDCA007B3434</string> + <string>8B7928DF21F344CC006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B6692B81FB1BDCA007B3434</string> + <string>8B7928E021F344CC006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B6692B91FB1BDCA007B3434</string> + <string>8B7928E121F344CC006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -657,7 +655,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>531742154.04575902</real> + <real>569590988.98670805</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -674,11 +672,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B6692BA1FB1BDCA007B3434</string> <string>/Users/christopherjohnson/Desktop/MacAU/Capacitor/Capacitor.xcodeproj</string> </array> <key>WindowString</key> - <string>573 188 841 654 0 0 1440 878 </string> + <string>493 190 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Channel6/Channel6.cpp b/plugins/MacAU/Channel6/Channel6.cpp index a0e543c..160b961 100755 --- a/plugins/MacAU/Channel6/Channel6.cpp +++ b/plugins/MacAU/Channel6/Channel6.cpp @@ -284,22 +284,15 @@ void Channel6::Channel6Kernel::Process( const Float32 *inSourceP, { inputSample *= output; } - //noise shaping to 32-bit floating point - Float32 fpTemp = inputSample; - fpNShape += (inputSample-fpTemp); - inputSample += fpNShape; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; } - fpNShape *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. -}
\ No newline at end of file +} diff --git a/plugins/MacAU/Channel6/Channel6.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Channel6/Channel6.xcodeproj/christopherjohnson.pbxuser index 108e0b5..46650ee 100755 --- a/plugins/MacAU/Channel6/Channel6.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Channel6/Channel6.xcodeproj/christopherjohnson.pbxuser @@ -49,19 +49,39 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 553993498; - PBXWorkspaceStateSaveDate = 553993498; + PBXPerProjectTemplateStateSaveDate = 569591253; + PBXWorkspaceStateSaveDate = 569591253; }; perUserProjectItems = { + 8B79290F21F3460C006E9731 /* PBXTextBookmark */ = 8B79290F21F3460C006E9731 /* PBXTextBookmark */; + 8B79291421F3461E006E9731 /* PBXTextBookmark */ = 8B79291421F3461E006E9731 /* PBXTextBookmark */; 8B97541F2103D42D00A4FFA3 /* PBXTextBookmark */ = 8B97541F2103D42D00A4FFA3 /* PBXTextBookmark */; 8BB8B7512103B13800751000 /* PlistBookmark */ = 8BB8B7512103B13800751000 /* PlistBookmark */; - 8BBD18BF2105439F0015A233 /* PBXTextBookmark */ = 8BBD18BF2105439F0015A233 /* PBXTextBookmark */; - 8BBD18F5210547560015A233 /* PBXTextBookmark */ = 8BBD18F5210547560015A233 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B79290F21F3460C006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Channel6.cpp */; + name = "Channel6.cpp: 216"; + rLen = 0; + rLoc = 9427; + rType = 0; + vrLen = 338; + vrLoc = 9262; + }; + 8B79291421F3461E006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Channel6.cpp */; + name = "Channel6.cpp: 216"; + rLen = 0; + rLoc = 9427; + rType = 0; + vrLen = 338; + vrLoc = 9262; + }; 8B97541F2103D42D00A4FFA3 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* Channel6.h */; @@ -74,10 +94,10 @@ }; 8BA05A660720730100365D66 /* Channel6.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {656, 4030}}"; + sepNavIntBoundsRect = "{{0, 0}, {656, 3874}}"; sepNavSelRange = "{9427, 0}"; - sepNavVisRange = "{9225, 393}"; - sepNavWindowFrame = "{{659, 57}, {850, 821}}"; + sepNavVisRange = "{9262, 338}"; + sepNavWindowFrame = "{{442, 57}, {850, 821}}"; }; }; 8BA05A670720730100365D66 /* Channel6.exp */ = { @@ -108,32 +128,12 @@ rLen = 0; rLoc = 9223372036854775808; }; - 8BBD18BF2105439F0015A233 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* Channel6.cpp */; - name = "Channel6.cpp: 216"; - rLen = 0; - rLoc = 9427; - rType = 0; - vrLen = 439; - vrLoc = 9182; - }; - 8BBD18F5210547560015A233 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* Channel6.cpp */; - name = "Channel6.cpp: 216"; - rLen = 0; - rLoc = 9427; - rType = 0; - vrLen = 393; - vrLoc = 9225; - }; 8BC6025B073B072D006C4272 /* Channel6.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 2015}}"; - sepNavSelRange = "{5615, 0}"; - sepNavVisRange = "{2424, 1290}"; - sepNavWindowFrame = "{{600, 57}, {850, 821}}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 1989}}"; + sepNavSelRange = "{5497, 0}"; + sepNavVisRange = "{4141, 1596}"; + sepNavWindowFrame = "{{590, 57}, {850, 821}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/Channel6/Channel6.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Channel6/Channel6.xcodeproj/christopherjohnson.perspectivev3 index 42ecf8f..ffc3590 100755 --- a/plugins/MacAU/Channel6/Channel6.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Channel6/Channel6.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -326,7 +324,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>592 182 841 654 0 0 1440 878 </string> + <string>463 218 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -354,12 +352,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BBD18F5210547560015A233</string> + <string>8B79291421F3461E006E9731</string> <key>history</key> <array> <string>8BB8B7512103B13800751000</string> <string>8B97541F2103D42D00A4FFA3</string> - <string>8BBD18BF2105439F0015A233</string> + <string>8B79290F21F3460C006E9731</string> </array> </dict> <key>SplitCount</key> @@ -373,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 173}}</string> + <string>{{0, 0}, {531, 142}}</string> <key>RubberWindowFrame</key> - <string>592 182 841 654 0 0 1440 878 </string> + <string>463 218 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>173pt</string> + <string>142pt</string> </dict> <dict> <key>Proportion</key> - <string>435pt</string> + <string>466pt</string> <key>Tabs</key> <array> <dict> @@ -398,9 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 408}}</string> - <key>RubberWindowFrame</key> - <string>592 182 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 439}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -454,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 339}}</string> + <string>{{10, 27}, {531, 439}}</string> + <key>RubberWindowFrame</key> + <string>463 218 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -482,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBD18F6210547560015A233</string> + <string>8B79291521F3461E006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBD18F7210547560015A233</string> + <string>8B79291621F3461E006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8BBD18F8210547560015A233</string> + <string>8B79291721F3461E006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -659,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>553994070.73831797</real> + <real>569591326.09985697</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -676,11 +674,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BBD18F9210547560015A233</string> <string>/Users/christopherjohnson/Desktop/MacAU/Channel6/Channel6.xcodeproj</string> </array> <key>WindowString</key> - <string>592 182 841 654 0 0 1440 878 </string> + <string>463 218 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Chorus/Chorus.cpp b/plugins/MacAU/Chorus/Chorus.cpp index c82a9f8..6a4eb69 100755 --- a/plugins/MacAU/Chorus/Chorus.cpp +++ b/plugins/MacAU/Chorus/Chorus.cpp @@ -181,9 +181,8 @@ void Chorus::ChorusKernel::Reset() airEven = 0.0; airOdd = 0.0; airFactor = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; + fpFlip = false; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -214,10 +213,6 @@ void Chorus::ChorusKernel::Process( const Float32 *inSourceP, Float64 tupi = 3.141592653589793238 * 2.0; Float64 offset; //this is a double buffer so we will be splitting it in two - - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSample; Float64 drySample; @@ -282,19 +277,11 @@ void Chorus::ChorusKernel::Process( const Float32 *inSourceP, inputSample = (inputSample * wet) + (drySample * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; destP += inNumChannels; diff --git a/plugins/MacAU/Chorus/Chorus.h b/plugins/MacAU/Chorus/Chorus.h index e25e995..ff1fdf2 100755 --- a/plugins/MacAU/Chorus/Chorus.h +++ b/plugins/MacAU/Chorus/Chorus.h @@ -139,9 +139,8 @@ public: Float64 airEven; Float64 airOdd; Float64 airFactor; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; + bool fpFlip; }; }; diff --git a/plugins/MacAU/Chorus/Chorus.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Chorus/Chorus.xcodeproj/christopherjohnson.pbxuser index 3cae981..f61c3d3 100755 --- a/plugins/MacAU/Chorus/Chorus.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Chorus/Chorus.xcodeproj/christopherjohnson.pbxuser @@ -49,44 +49,44 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 529841844; - PBXWorkspaceStateSaveDate = 529841844; + PBXPerProjectTemplateStateSaveDate = 569591348; + PBXWorkspaceStateSaveDate = 569591348; }; perUserProjectItems = { - 8B36C9E21F94D13C003BE0C9 /* PBXTextBookmark */ = 8B36C9E21F94D13C003BE0C9 /* PBXTextBookmark */; - 8B9D733F1F7F1245007AB60F /* PBXTextBookmark */ = 8B9D733F1F7F1245007AB60F /* PBXTextBookmark */; + 8B79292521F34676006E9731 /* PBXTextBookmark */ = 8B79292521F34676006E9731 /* PBXTextBookmark */; + 8B79293221F346AC006E9731 /* PBXTextBookmark */ = 8B79293221F346AC006E9731 /* PBXTextBookmark */; 8BCF321C1F4E492C00632CB6 /* PBXTextBookmark */ = 8BCF321C1F4E492C00632CB6 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B36C9E21F94D13C003BE0C9 /* PBXTextBookmark */ = { + 8B79292521F34676006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Chorus.cpp */; - name = "Chorus.cpp: 269"; + name = "Chorus.cpp: 263"; rLen = 0; - rLoc = 11881; + rLoc = 11745; rType = 0; vrLen = 0; vrLoc = 0; }; - 8B9D733F1F7F1245007AB60F /* PBXTextBookmark */ = { + 8B79293221F346AC006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Chorus.cpp */; - name = "Chorus.cpp: 269"; + name = "Chorus.cpp: 264"; rLen = 0; - rLoc = 11881; + rLoc = 11745; rType = 0; - vrLen = 65; - vrLoc = 10659; + vrLen = 0; + vrLoc = 0; }; 8BA05A660720730100365D66 /* Chorus.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 4004}}"; - sepNavSelRange = "{11881, 0}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 3887}}"; + sepNavSelRange = "{11745, 0}"; sepNavVisRange = "{0, 0}"; - sepNavWindowFrame = "{{784, 39}, {1024, 839}}"; + sepNavWindowFrame = "{{257, 39}, {1024, 839}}"; }; }; 8BA05A670720730100365D66 /* Chorus.exp */ = { @@ -107,9 +107,9 @@ }; 8BC6025B073B072D006C4272 /* Chorus.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {958, 1963}}"; - sepNavSelRange = "{5229, 0}"; - sepNavVisRange = "{4125, 1457}"; + sepNavIntBoundsRect = "{{0, 0}, {958, 1937}}"; + sepNavSelRange = "{5444, 0}"; + sepNavVisRange = "{4046, 1502}"; sepNavWindowFrame = "{{435, 39}, {1005, 839}}"; }; }; diff --git a/plugins/MacAU/Chorus/Chorus.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Chorus/Chorus.xcodeproj/christopherjohnson.perspectivev3 index ecf0b5a..4dc6f92 100755 --- a/plugins/MacAU/Chorus/Chorus.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Chorus/Chorus.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>4</integer> + <integer>3</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> @@ -324,7 +324,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>630 329 810 487 0 0 1440 878 </string> + <string>473 332 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,11 +352,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B36C9E21F94D13C003BE0C9</string> + <string>8B79293221F346AC006E9731</string> <key>history</key> <array> <string>8BCF321C1F4E492C00632CB6</string> - <string>8B9D733F1F7F1245007AB60F</string> + <string>8B79292521F34676006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 32}}</string> + <string>{{0, 0}, {603, 13}}</string> <key>RubberWindowFrame</key> - <string>630 329 810 487 0 0 1440 878 </string> + <string>473 332 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>32pt</string> + <string>13pt</string> </dict> <dict> <key>Proportion</key> - <string>409pt</string> + <string>428pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 382}}</string> - <key>RubberWindowFrame</key> - <string>630 329 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 401}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {603, 401}}</string> + <key>RubberWindowFrame</key> + <string>473 332 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B36C9E31F94D13C003BE0C9</string> + <string>8B79293321F346AC006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B36C9E41F94D13C003BE0C9</string> + <string>8B79293421F346AC006E9731</string> <string>8BCFBD371E6DE48D0046F93B</string> - <string>8B36C9E51F94D13C003BE0C9</string> + <string>8B79293521F346AC006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>529846588.24690598</real> + <real>569591468.25551903</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,11 +653,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B36C9E61F94D13C003BE0C9</string> <string>/Users/christopherjohnson/Desktop/MacAU/Chorus/Chorus.xcodeproj</string> </array> <key>WindowString</key> - <string>630 329 810 487 0 0 1440 878 </string> + <string>473 332 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.cpp b/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.cpp index 8caed8c..4cc8f36 100755 --- a/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.cpp +++ b/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.cpp @@ -181,9 +181,8 @@ void ChorusEnsemble::ChorusEnsembleKernel::Reset() airEven = 0.0; airOdd = 0.0; airFactor = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; + fpFlip = false; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -215,10 +214,6 @@ void ChorusEnsemble::ChorusEnsembleKernel::Process( const Float32 *inSourceP, Float64 offset; Float64 start[4]; - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - long double inputSample; Float64 drySample; //now we'll precalculate some stuff that needn't be in every sample @@ -312,19 +307,11 @@ void ChorusEnsemble::ChorusEnsembleKernel::Process( const Float32 *inSourceP, inputSample = (inputSample * wet) + (drySample * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; destP += inNumChannels; diff --git a/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.h b/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.h index 6b2b8ed..7012d58 100755 --- a/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.h +++ b/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.h @@ -139,9 +139,8 @@ public: Float64 airEven; Float64 airOdd; Float64 airFactor; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; + bool fpFlip; }; }; diff --git a/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.pbxuser index 338f1c0..6b1f825 100755 --- a/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.pbxuser @@ -49,61 +49,50 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528421453; - PBXWorkspaceStateSaveDate = 528421453; + PBXPerProjectTemplateStateSaveDate = 569591494; + PBXWorkspaceStateSaveDate = 569591494; }; perUserProjectItems = { + 8B79294D21F34765006E9731 /* PBXTextBookmark */ = 8B79294D21F34765006E9731 /* PBXTextBookmark */; 8B8847291F206D6800E13453 /* PBXTextBookmark */ = 8B8847291F206D6800E13453 /* PBXTextBookmark */; - 8B88472A1F206D6800E13453 /* PBXTextBookmark */ = 8B88472A1F206D6800E13453 /* PBXTextBookmark */; - 8B9D734E1F7F1296007AB60F /* PBXTextBookmark */ = 8B9D734E1F7F1296007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B8847291F206D6800E13453 /* PBXTextBookmark */ = { + 8B79294D21F34765006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A670720730100365D66 /* ChorusEnsemble.exp */; name = "ChorusEnsemble.exp: 2"; rLen = 0; rLoc = 21; rType = 0; - vrLen = 21; + vrLen = 0; vrLoc = 0; }; - 8B88472A1F206D6800E13453 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* ChorusEnsemble.h */; - name = "ChorusEnsemble.h: 58"; - rLen = 0; - rLoc = 2939; - rType = 0; - vrLen = 239; - vrLoc = 2754; - }; - 8B9D734E1F7F1296007AB60F /* PBXTextBookmark */ = { + 8B8847291F206D6800E13453 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* ChorusEnsemble.h */; - name = "ChorusEnsemble.h: 58"; + fRef = 8BA05A670720730100365D66 /* ChorusEnsemble.exp */; + name = "ChorusEnsemble.exp: 2"; rLen = 0; - rLoc = 2939; + rLoc = 21; rType = 0; - vrLen = 0; + vrLen = 21; vrLoc = 0; }; 8BA05A660720730100365D66 /* ChorusEnsemble.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {521, 4407}}"; - sepNavSelRange = "{11914, 0}"; - sepNavVisRange = "{0, 0}"; - sepNavWindowFrame = "{{295, 65}, {1145, 812}}"; + sepNavIntBoundsRect = "{{0, 0}, {1098, 4368}}"; + sepNavSelRange = "{8495, 0}"; + sepNavVisRange = "{7989, 1986}"; + sepNavWindowFrame = "{{147, 42}, {1145, 812}}"; }; }; 8BA05A670720730100365D66 /* ChorusEnsemble.exp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 100}}"; + sepNavIntBoundsRect = "{{0, 0}, {521, 26}}"; sepNavSelRange = "{21, 0}"; - sepNavVisRange = "{0, 21}"; + sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{15, 39}, {1005, 839}}"; }; }; @@ -117,7 +106,7 @@ }; 8BC6025B073B072D006C4272 /* ChorusEnsemble.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {719, 2197}}"; + sepNavIntBoundsRect = "{{0, 0}, {521, 1937}}"; sepNavSelRange = "{2939, 0}"; sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{435, 39}, {1005, 839}}"; diff --git a/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.perspectivev3 index 71d07ef..d35aa7f 100755 --- a/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.perspectivev3 @@ -326,7 +326,7 @@ <real>218</real> </array> <key>RubberWindowFrame</key> - <string>616 217 810 487 0 0 1440 878 </string> + <string>457 305 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -342,7 +342,7 @@ <key>PBXProjectModuleGUID</key> <string>8B8847271F206D6800E13453</string> <key>PBXProjectModuleLabel</key> - <string>ChorusEnsemble.h</string> + <string>ChorusEnsemble.exp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -350,15 +350,14 @@ <key>PBXProjectModuleGUID</key> <string>8B8847281F206D6800E13453</string> <key>PBXProjectModuleLabel</key> - <string>ChorusEnsemble.h</string> + <string>ChorusEnsemble.exp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D734E1F7F1296007AB60F</string> + <string>8B79294D21F34765006E9731</string> <key>history</key> <array> <string>8B8847291F206D6800E13453</string> - <string>8B88472A1F206D6800E13453</string> </array> </dict> <key>SplitCount</key> @@ -374,7 +373,7 @@ <key>Frame</key> <string>{{0, 0}, {570, 0}}</string> <key>RubberWindowFrame</key> - <string>616 217 810 487 0 0 1440 878 </string> + <string>457 305 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -398,8 +397,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {570, 414}}</string> - <key>RubberWindowFrame</key> - <string>616 217 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -453,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {570, 312}}</string> + <string>{{10, 27}, {570, 414}}</string> + <key>RubberWindowFrame</key> + <string>457 305 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -481,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D734F1F7F1296007AB60F</string> + <string>8B79294E21F34765006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D73501F7F1296007AB60F</string> + <string>8B79294F21F34765006E9731</string> <string>8B8847271F206D6800E13453</string> - <string>8B9D73511F7F1296007AB60F</string> + <string>8B79295021F34765006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -638,7 +637,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528421526.378672</real> + <real>569591653.62024701</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -655,11 +654,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D73521F7F1296007AB60F</string> + <string>8B79295121F34765006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/ChorusEnsemble/ChorusEnsemble.xcodeproj</string> </array> <key>WindowString</key> - <string>616 217 810 487 0 0 1440 878 </string> + <string>457 305 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.pbxuser index a51396a..6f6145c 100755 --- a/plugins/MacAU/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.pbxuser @@ -51,13 +51,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 529441914; - PBXWorkspaceStateSaveDate = 529441914; + PBXPerProjectTemplateStateSaveDate = 569591684; + PBXWorkspaceStateSaveDate = 569591684; }; perUserProjectItems = { 8B1E10641D87858F0016BF5B /* PBXTextBookmark */ = 8B1E10641D87858F0016BF5B /* PBXTextBookmark */; 8B1E10651D87858F0016BF5B /* PBXTextBookmark */ = 8B1E10651D87858F0016BF5B /* PBXTextBookmark */; - 8B9D735D1F7F9736007AB60F /* PBXTextBookmark */ = 8B9D735D1F7F9736007AB60F /* PBXTextBookmark */; + 8B79296121F347C4006E9731 /* PBXTextBookmark */ = 8B79296121F347C4006E9731 /* PBXTextBookmark */; 8BCA0F671D87688800A4EFAF /* PlistBookmark */ = 8BCA0F671D87688800A4EFAF /* PlistBookmark */; 8BE9F8701F8EA4A0009702A4 /* PBXTextBookmark */ = 8BE9F8701F8EA4A0009702A4 /* PBXTextBookmark */; }; @@ -85,21 +85,21 @@ vrLen = 354; vrLoc = 2596; }; - 8B9D735D1F7F9736007AB60F /* PBXTextBookmark */ = { + 8B79296121F347C4006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* ClipOnly.h */; name = "ClipOnly.h: 125"; rLen = 60; rLoc = 4934; rType = 0; - vrLen = 402; + vrLen = 308; vrLoc = 4693; }; 8BA05A660720730100365D66 /* ClipOnly.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 3354}}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 3250}}"; sepNavSelRange = "{10288, 28}"; - sepNavVisRange = "{8363, 2011}"; + sepNavVisRange = "{8312, 2062}"; sepNavWindowFrame = "{{545, 59}, {895, 819}}"; }; }; @@ -115,7 +115,7 @@ uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {894, 1911}}"; sepNavSelRange = "{4934, 60}"; - sepNavVisRange = "{4693, 309}"; + sepNavVisRange = "{4693, 308}"; sepNavWindowFrame = "{{15, 54}, {895, 819}}"; }; }; diff --git a/plugins/MacAU/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.perspectivev3 index 567a3d2..1b24ce5 100755 --- a/plugins/MacAU/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.perspectivev3 @@ -325,7 +325,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>586 185 841 654 0 0 1440 878 </string> + <string>513 205 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -353,13 +353,13 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BE9F8701F8EA4A0009702A4</string> + <string>8B79296121F347C4006E9731</string> <key>history</key> <array> <string>8BCA0F671D87688800A4EFAF</string> <string>8B1E10641D87858F0016BF5B</string> <string>8B1E10651D87858F0016BF5B</string> - <string>8B9D735D1F7F9736007AB60F</string> + <string>8BE9F8701F8EA4A0009702A4</string> </array> </dict> <key>SplitCount</key> @@ -373,18 +373,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 216}}</string> + <string>{{0, 0}, {531, 202}}</string> <key>RubberWindowFrame</key> - <string>586 185 841 654 0 0 1440 878 </string> + <string>513 205 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>216pt</string> + <string>202pt</string> </dict> <dict> <key>Proportion</key> - <string>392pt</string> + <string>406pt</string> <key>Tabs</key> <array> <dict> @@ -398,9 +398,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 365}}</string> + <string>{{10, 27}, {531, 379}}</string> <key>RubberWindowFrame</key> - <string>586 185 841 654 0 0 1440 878 </string> + <string>513 205 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -482,11 +482,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BE9F8711F8EA4A0009702A4</string> + <string>8B79296221F347C4006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BE9F8721F8EA4A0009702A4</string> + <string>8B79296321F347C4006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8BE9F8731F8EA4A0009702A4</string> + <string>8B79296421F347C4006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -659,7 +659,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>529441952.39161801</real> + <real>569591748.91110599</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -676,11 +676,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BE9F8741F8EA4A0009702A4</string> + <string>8B79296521F347C4006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/ClipOnly/ClipOnly.xcodeproj</string> </array> <key>WindowString</key> - <string>586 185 841 654 0 0 1440 878 </string> + <string>513 205 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Console4Buss/Console4Buss.cpp b/plugins/MacAU/Console4Buss/Console4Buss.cpp index d263fe8..a37a7c5 100755 --- a/plugins/MacAU/Console4Buss/Console4Buss.cpp +++ b/plugins/MacAU/Console4Buss/Console4Buss.cpp @@ -162,10 +162,7 @@ void Console4Buss::Console4BussKernel::Reset() gainchase = -90.0; settingchase = -90.0; chasespeed = 350.0; - demotimer = 0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -187,9 +184,6 @@ void Console4Buss::Console4BussKernel::Process( const Float32 *inSourceP, overallscale /= 44100.0; // 1 for CD rate, more if it's a high sample rate - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; long double inputSample; long double half; long double falf; @@ -264,19 +258,11 @@ void Console4Buss::Console4BussKernel::Process( const Float32 *inSourceP, //this is the inverse processing for Console: boosts but not so much if there's slew. //is this too subtle an effect? - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = not fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/Console4Buss/Console4Buss.h b/plugins/MacAU/Console4Buss/Console4Buss.h index 87b1a17..dc7e15f 100755 --- a/plugins/MacAU/Console4Buss/Console4Buss.h +++ b/plugins/MacAU/Console4Buss/Console4Buss.h @@ -131,10 +131,7 @@ public: Float64 gainchase; Float64 settingchase; Float64 chasespeed; - int demotimer; - Float64 fpNShapeA; - Float64 fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.pbxuser index 8a1c58c..0ed4251 100755 --- a/plugins/MacAU/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.pbxuser @@ -49,48 +49,54 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 533150868; - PBXWorkspaceStateSaveDate = 533150868; + PBXPerProjectTemplateStateSaveDate = 569592284; + PBXWorkspaceStateSaveDate = 569592284; }; perUserProjectItems = { - 8B484E281FC73D0300977397 /* PBXTextBookmark */ = 8B484E281FC73D0300977397 /* PBXTextBookmark */; - 8B484E291FC73D0300977397 /* PBXBookmark */ = 8B484E291FC73D0300977397 /* PBXBookmark */; - 8B484E2A1FC73D0300977397 /* PBXTextBookmark */ = 8B484E2A1FC73D0300977397 /* PBXTextBookmark */; + 8B79297721F34A6E006E9731 /* PBXTextBookmark */ = 8B79297721F34A6E006E9731 /* PBXTextBookmark */; + 8B79297821F34A6E006E9731 /* PBXTextBookmark */ = 8B79297821F34A6E006E9731 /* PBXTextBookmark */; + 8B79297D21F34A7F006E9731 /* PBXTextBookmark */ = 8B79297D21F34A7F006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B484E281FC73D0300977397 /* PBXTextBookmark */ = { + 8B79297721F34A6E006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* Console4Buss.h */; - name = "Console4Buss.h: 138"; + fRef = 8BA05A660720730100365D66 /* Console4Buss.cpp */; + name = "Console4Buss.cpp: 213"; rLen = 0; - rLoc = 5276; + rLoc = 9086; rType = 0; - vrLen = 85; - vrLoc = 48; + vrLen = 173; + vrLoc = 10045; }; - 8B484E291FC73D0300977397 /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 8BA05A660720730100365D66 /* Console4Buss.cpp */; + 8B79297821F34A6E006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* Console4Buss.h */; + name = "Console4Buss.h: 135"; + rLen = 0; + rLoc = 5226; + rType = 0; + vrLen = 66; + vrLoc = 67; }; - 8B484E2A1FC73D0300977397 /* PBXTextBookmark */ = { + 8B79297D21F34A7F006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* Console4Buss.cpp */; - name = "Console4Buss.cpp: 213"; + fRef = 8BC6025B073B072D006C4272 /* Console4Buss.h */; + name = "Console4Buss.h: 135"; rLen = 0; - rLoc = 9245; + rLoc = 5226; rType = 0; - vrLen = 232; - vrLoc = 10045; + vrLen = 66; + vrLoc = 67; }; 8BA05A660720730100365D66 /* Console4Buss.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {691, 3913}}"; - sepNavSelRange = "{9245, 0}"; - sepNavVisRange = "{10045, 232}"; - sepNavWindowFrame = "{{545, 39}, {895, 831}}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 3783}}"; + sepNavSelRange = "{11405, 0}"; + sepNavVisRange = "{9653, 1840}"; + sepNavWindowFrame = "{{183, 47}, {895, 831}}"; }; }; 8BA05A690720730100365D66 /* Console4BussVersion.h */ = { @@ -103,10 +109,10 @@ }; 8BC6025B073B072D006C4272 /* Console4Buss.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1872}}"; - sepNavSelRange = "{5135, 67}"; - sepNavVisRange = "{3839, 1546}"; - sepNavWindowFrame = "{{621, 47}, {895, 831}}"; + sepNavIntBoundsRect = "{{0, 0}, {803, 1885}}"; + sepNavSelRange = "{5226, 0}"; + sepNavVisRange = "{67, 66}"; + sepNavWindowFrame = "{{545, 47}, {895, 831}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.perspectivev3 index 3a90e01..d66b6f6 100755 --- a/plugins/MacAU/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>631 363 810 487 0 0 1440 878 </string> + <string>470 336 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -340,7 +338,7 @@ <key>PBXProjectModuleGUID</key> <string>8B049F931D109A8900F78DCA</string> <key>PBXProjectModuleLabel</key> - <string>Console4Buss.cpp</string> + <string>Console4Buss.h</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -348,15 +346,15 @@ <key>PBXProjectModuleGUID</key> <string>8B049F941D109A8900F78DCA</string> <key>PBXProjectModuleLabel</key> - <string>Console4Buss.cpp</string> + <string>Console4Buss.h</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B484E2A1FC73D0300977397</string> + <string>8B79297D21F34A7F006E9731</string> <key>history</key> <array> - <string>8B484E281FC73D0300977397</string> - <string>8B484E291FC73D0300977397</string> + <string>8B79297721F34A6E006E9731</string> + <string>8B79297821F34A6E006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 69}}</string> + <string>{{0, 0}, {603, 51}}</string> <key>RubberWindowFrame</key> - <string>631 363 810 487 0 0 1440 878 </string> + <string>470 336 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>69pt</string> + <string>51pt</string> </dict> <dict> <key>Proportion</key> - <string>372pt</string> + <string>390pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 345}}</string> - <key>RubberWindowFrame</key> - <string>631 363 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 363}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {603, 363}}</string> + <key>RubberWindowFrame</key> + <string>470 336 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B484E2B1FC73D0300977397</string> + <string>8B79296E21F349E0006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B484E2C1FC73D0300977397</string> + <string>8B79296F21F349E0006E9731</string> <string>8B049F931D109A8900F78DCA</string> - <string>8B484E2D1FC73D0300977397</string> + <string>8B79297021F349E0006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>533150979.70890802</real> + <real>569592447.53790605</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -656,7 +654,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/Console4Buss/Console4Buss.xcodeproj</string> </array> <key>WindowString</key> - <string>631 363 810 487 0 0 1440 878 </string> + <string>470 336 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Console4Channel/Console4Channel.cpp b/plugins/MacAU/Console4Channel/Console4Channel.cpp index a357629..865b3b0 100755 --- a/plugins/MacAU/Console4Channel/Console4Channel.cpp +++ b/plugins/MacAU/Console4Channel/Console4Channel.cpp @@ -161,10 +161,7 @@ void Console4Channel::Console4ChannelKernel::Reset() gainchase = -90.0; settingchase = -90.0; chasespeed = 350.0; - demotimer = 0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -182,9 +179,6 @@ void Console4Channel::Console4ChannelKernel::Process( const Float32 *inSourceP long double inputSample; long double half; long double falf; - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; Float64 inputgain = GetParameter( kParam_One ); if (settingchase != inputgain) { chasespeed *= 2.0; @@ -243,19 +237,11 @@ void Console4Channel::Console4ChannelKernel::Process( const Float32 *inSourceP //this is part of the Purest line: stuff that is on every track //needs to be DAMN LOW ON MATH srsly guys - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = not fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; //force 80 bit into 32 bit output diff --git a/plugins/MacAU/Console4Channel/Console4Channel.h b/plugins/MacAU/Console4Channel/Console4Channel.h index 0d447d4..665d892 100755 --- a/plugins/MacAU/Console4Channel/Console4Channel.h +++ b/plugins/MacAU/Console4Channel/Console4Channel.h @@ -129,10 +129,7 @@ public: Float64 gainchase; Float64 settingchase; Float64 chasespeed; - int demotimer; - Float64 fpNShapeA; - Float64 fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.pbxuser index 038b3b3..3aa3959 100755 --- a/plugins/MacAU/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.pbxuser @@ -49,15 +49,15 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 533424844; - PBXWorkspaceStateSaveDate = 533424844; + PBXPerProjectTemplateStateSaveDate = 569592470; + PBXWorkspaceStateSaveDate = 569592470; }; perUserProjectItems = { 8B484F0F1FCB69BE00977397 /* PBXTextBookmark */ = 8B484F0F1FCB69BE00977397 /* PBXTextBookmark */; 8B484F1F1FCB6ADC00977397 /* PBXTextBookmark */ = 8B484F1F1FCB6ADC00977397 /* PBXTextBookmark */; - 8B484F201FCB6ADC00977397 /* PBXTextBookmark */ = 8B484F201FCB6ADC00977397 /* PBXTextBookmark */; - 8B6F9B891D4A8A2400B449D5 /* PBXTextBookmark */ = 8B6F9B891D4A8A2400B449D5 /* PBXTextBookmark */; 8B6F9BCA1D4A913400B449D5 /* PBXTextBookmark */ = 8B6F9BCA1D4A913400B449D5 /* PBXTextBookmark */; + 8B79298C21F34AE6006E9731 /* PBXTextBookmark */ = 8B79298C21F34AE6006E9731 /* PBXTextBookmark */; + 8B79299121F34AF7006E9731 /* PBXTextBookmark */ = 8B79299121F34AF7006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -83,42 +83,42 @@ vrLen = 43; vrLoc = 32; }; - 8B484F201FCB6ADC00977397 /* PBXTextBookmark */ = { + 8B6F9BCA1D4A913400B449D5 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* Console4Channel.h */; - name = "Console4Channel.h: 1"; + fRef = 8BA05A680720730100365D66 /* Console4Channel.r */; + name = "Console4Channel.r: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 106; - vrLoc = 30; + vrLen = 0; + vrLoc = 0; }; - 8B6F9B891D4A8A2400B449D5 /* PBXTextBookmark */ = { + 8B79298C21F34AE6006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* Console4Channel.h */; name = "Console4Channel.h: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 22; - vrLoc = 48; + vrLen = 40; + vrLoc = 30; }; - 8B6F9BCA1D4A913400B449D5 /* PBXTextBookmark */ = { + 8B79299121F34AF7006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BA05A680720730100365D66 /* Console4Channel.r */; - name = "Console4Channel.r: 1"; + fRef = 8BC6025B073B072D006C4272 /* Console4Channel.h */; + name = "Console4Channel.h: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 0; - vrLoc = 0; + vrLen = 40; + vrLoc = 30; }; 8BA05A660720730100365D66 /* Console4Channel.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 3289}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{7711, 2420}"; - sepNavWindowFrame = "{{545, 47}, {895, 831}}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 3380}}"; + sepNavSelRange = "{8218, 0}"; + sepNavVisRange = "{7422, 2528}"; + sepNavWindowFrame = "{{384, 47}, {895, 831}}"; }; }; 8BA05A680720730100365D66 /* Console4Channel.r */ = { @@ -138,9 +138,9 @@ }; 8BC6025B073B072D006C4272 /* Console4Channel.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {824, 1924}}"; + sepNavIntBoundsRect = "{{0, 0}, {740, 1885}}"; sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{30, 106}"; + sepNavVisRange = "{30, 40}"; sepNavWindowFrame = "{{545, 39}, {895, 831}}"; }; }; diff --git a/plugins/MacAU/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.perspectivev3 index 39bab7a..cde33b3 100755 --- a/plugins/MacAU/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +322,7 @@ <real>199</real> </array> <key>RubberWindowFrame</key> - <string>629 366 810 487 0 0 1440 878 </string> + <string>484 362 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,13 +350,13 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B484F201FCB6ADC00977397</string> + <string>8B79299121F34AF7006E9731</string> <key>history</key> <array> <string>8B6F9BCA1D4A913400B449D5</string> <string>8B484F0F1FCB69BE00977397</string> <string>8B484F1F1FCB6ADC00977397</string> - <string>8B6F9B891D4A8A2400B449D5</string> + <string>8B79298C21F34AE6006E9731</string> </array> </dict> <key>SplitCount</key> @@ -372,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {589, 96}}</string> + <string>{{0, 0}, {589, 80}}</string> <key>RubberWindowFrame</key> - <string>629 366 810 487 0 0 1440 878 </string> + <string>484 362 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>96pt</string> + <string>80pt</string> </dict> <dict> <key>Proportion</key> - <string>345pt</string> + <string>361pt</string> <key>Tabs</key> <array> <dict> @@ -397,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {589, 318}}</string> - <key>RubberWindowFrame</key> - <string>629 366 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {589, 334}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -453,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {589, 334}}</string> + <key>RubberWindowFrame</key> + <string>484 362 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -481,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B484F211FCB6ADC00977397</string> + <string>8B79299221F34AF7006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B484F221FCB6ADC00977397</string> + <string>8B79299321F34AF7006E9731</string> <string>8B049F641D108FA800F78DCA</string> - <string>8B484F231FCB6ADC00977397</string> + <string>8B79299421F34AF7006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -638,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>533424860.76372099</real> + <real>569592567.96526098</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -658,7 +656,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/Console4Channel/Console4Channel.xcodeproj</string> </array> <key>WindowString</key> - <string>629 366 810 487 0 0 1440 878 </string> + <string>484 362 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Console5Buss/Console5Buss.cpp b/plugins/MacAU/Console5Buss/Console5Buss.cpp index 13008f9..3c1c845 100755 --- a/plugins/MacAU/Console5Buss/Console5Buss.cpp +++ b/plugins/MacAU/Console5Buss/Console5Buss.cpp @@ -165,9 +165,7 @@ void Console5Buss::Console5BussKernel::Reset() settingchase = -90.0; chasespeed = 350.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -185,9 +183,6 @@ void Console5Buss::Console5BussKernel::Process( const Float32 *inSourceP, long double overallscale = 1.0; overallscale /= 44100.0; overallscale *= GetSampleRate(); - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; Float64 inputgain = GetParameter( kParam_One ); Float64 difference; @@ -278,19 +273,11 @@ void Console5Buss::Console5BussKernel::Process( const Float32 *inSourceP, lastFXBuss *= (1.0 - (nearZero * bassTrim)); //this cuts back the DC offset directly, relative to how near zero we are - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/Console5Buss/Console5Buss.h b/plugins/MacAU/Console5Buss/Console5Buss.h index 51cd70c..c7f1638 100755 --- a/plugins/MacAU/Console5Buss/Console5Buss.h +++ b/plugins/MacAU/Console5Buss/Console5Buss.h @@ -132,9 +132,7 @@ public: Float64 settingchase; Float64 chasespeed; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.pbxuser index 77bac7c..d93ee0d 100755 --- a/plugins/MacAU/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.pbxuser @@ -49,55 +49,55 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 538690007; - PBXWorkspaceStateSaveDate = 538690007; + PBXPerProjectTemplateStateSaveDate = 569593643; + PBXWorkspaceStateSaveDate = 569593643; }; perUserProjectItems = { - 8B4E5566201BC09200B5DC2A /* PBXTextBookmark */ = 8B4E5566201BC09200B5DC2A /* PBXTextBookmark */; - 8B4E5591201BC43400B5DC2A /* PBXTextBookmark */ = 8B4E5591201BC43400B5DC2A /* PBXTextBookmark */; - 8B95A7D820006AC3007183A2 /* PBXTextBookmark */ = 8B95A7D820006AC3007183A2 /* PBXTextBookmark */; + 8B7929A221F34F6F006E9731 /* PBXTextBookmark */ = 8B7929A221F34F6F006E9731 /* PBXTextBookmark */; + 8B7929A321F34F6F006E9731 /* PBXTextBookmark */ = 8B7929A321F34F6F006E9731 /* PBXTextBookmark */; + 8B7929A821F34F7F006E9731 /* PBXTextBookmark */ = 8B7929A821F34F7F006E9731 /* PBXTextBookmark */; 8BBE44D71FE5EAC70022E6F7 /* PlistBookmark */ = 8BBE44D71FE5EAC70022E6F7 /* PlistBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B4E5566201BC09200B5DC2A /* PBXTextBookmark */ = { + 8B7929A221F34F6F006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Console5Buss.cpp */; name = "Console5Buss.cpp: 197"; rLen = 0; - rLoc = 8561; + rLoc = 8409; rType = 0; - vrLen = 0; - vrLoc = 0; + vrLen = 272; + vrLoc = 3; }; - 8B4E5591201BC43400B5DC2A /* PBXTextBookmark */ = { + 8B7929A321F34F6F006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* Console5Buss.cpp */; - name = "Console5Buss.cpp: 197"; + fRef = 8BC6025B073B072D006C4272 /* Console5Buss.h */; + name = "Console5Buss.h: 128"; rLen = 0; - rLoc = 8561; + rLoc = 5111; rType = 0; - vrLen = 0; - vrLoc = 0; + vrLen = 149; + vrLoc = 5032; }; - 8B95A7D820006AC3007183A2 /* PBXTextBookmark */ = { + 8B7929A821F34F7F006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* Console5Buss.h */; name = "Console5Buss.h: 128"; rLen = 0; rLoc = 5111; rType = 0; - vrLen = 63; - vrLoc = 5096; + vrLen = 149; + vrLoc = 5032; }; 8BA05A660720730100365D66 /* Console5Buss.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {346, 3991}}"; - sepNavSelRange = "{8561, 0}"; - sepNavVisRange = "{0, 0}"; - sepNavWindowFrame = "{{519, 39}, {895, 839}}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 4043}}"; + sepNavSelRange = "{12118, 0}"; + sepNavVisRange = "{10187, 2019}"; + sepNavWindowFrame = "{{422, 39}, {895, 839}}"; }; }; 8BA05A690720730100365D66 /* Console5BussVersion.h */ = { @@ -122,9 +122,9 @@ }; 8BC6025B073B072D006C4272 /* Console5Buss.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1872}}"; - sepNavSelRange = "{2819, 272}"; - sepNavVisRange = "{1789, 1938}"; + sepNavIntBoundsRect = "{{0, 0}, {656, 2002}}"; + sepNavSelRange = "{5111, 0}"; + sepNavVisRange = "{5032, 149}"; sepNavWindowFrame = "{{545, 39}, {895, 839}}"; }; }; diff --git a/plugins/MacAU/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.perspectivev3 index 71675a6..9aef77c 100755 --- a/plugins/MacAU/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>841</integer> - <integer>841</integer> + <integer>705</integer> + <integer>705</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -325,7 +323,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>710 433 705 445 0 0 1440 878 </string> + <string>539 403 705 445 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -341,7 +339,7 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274A1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>Console5Buss.cpp</string> + <string>Console5Buss.h</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -349,16 +347,16 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274B1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>Console5Buss.cpp</string> + <string>Console5Buss.h</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B4E5591201BC43400B5DC2A</string> + <string>8B7929A821F34F7F006E9731</string> <key>history</key> <array> <string>8BBE44D71FE5EAC70022E6F7</string> - <string>8B95A7D820006AC3007183A2</string> - <string>8B4E5566201BC09200B5DC2A</string> + <string>8B7929A221F34F6F006E9731</string> + <string>8B7929A321F34F6F006E9731</string> </array> </dict> <key>SplitCount</key> @@ -372,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {395, 0}}</string> + <string>{{0, 0}, {395, 120}}</string> <key>RubberWindowFrame</key> - <string>710 433 705 445 0 0 1440 878 </string> + <string>539 403 705 445 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>0pt</string> + <string>120pt</string> </dict> <dict> <key>Proportion</key> - <string>399pt</string> + <string>279pt</string> <key>Tabs</key> <array> <dict> @@ -397,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {395, 372}}</string> - <key>RubberWindowFrame</key> - <string>710 433 705 445 0 0 1440 878 </string> + <string>{{10, 27}, {395, 252}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -453,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 315}}</string> + <string>{{10, 27}, {395, 252}}</string> + <key>RubberWindowFrame</key> + <string>539 403 705 445 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -481,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B4E5592201BC43400B5DC2A</string> + <string>8B7929A921F34F7F006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B4E5593201BC43400B5DC2A</string> + <string>8B7929AA21F34F7F006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B4E5594201BC43400B5DC2A</string> + <string>8B7929AB21F34F7F006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -658,7 +656,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>538690612.183846</real> + <real>569593727.64458299</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -678,7 +676,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/Console5Buss/Console5Buss.xcodeproj</string> </array> <key>WindowString</key> - <string>710 433 705 445 0 0 1440 878 </string> + <string>539 403 705 445 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Console5Channel/Console5Channel.cpp b/plugins/MacAU/Console5Channel/Console5Channel.cpp index 795c960..356f347 100755 --- a/plugins/MacAU/Console5Channel/Console5Channel.cpp +++ b/plugins/MacAU/Console5Channel/Console5Channel.cpp @@ -165,9 +165,7 @@ void Console5Channel::Console5ChannelKernel::Reset() settingchase = -90.0; chasespeed = 350.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -185,9 +183,6 @@ void Console5Channel::Console5ChannelKernel::Process( const Float32 *inSourceP long double overallscale = 1.0; overallscale /= 44100.0; overallscale *= GetSampleRate(); - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; Float64 inputgain = GetParameter( kParam_One ); Float64 difference; @@ -279,19 +274,11 @@ void Console5Channel::Console5ChannelKernel::Process( const Float32 *inSourceP inputSample = sin(inputSample); //amplitude aspect - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/Console5Channel/Console5Channel.h b/plugins/MacAU/Console5Channel/Console5Channel.h index 8c9f293..3b4104e 100755 --- a/plugins/MacAU/Console5Channel/Console5Channel.h +++ b/plugins/MacAU/Console5Channel/Console5Channel.h @@ -131,9 +131,7 @@ public: Float64 settingchase; Float64 chasespeed; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.pbxuser index b2bdf5a..34f20bd 100755 --- a/plugins/MacAU/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.pbxuser @@ -49,13 +49,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 544914744; - PBXWorkspaceStateSaveDate = 544914744; + PBXPerProjectTemplateStateSaveDate = 569594770; + PBXWorkspaceStateSaveDate = 569594770; }; perUserProjectItems = { 8B050BAA206487EB00700365 /* PlistBookmark */ = 8B050BAA206487EB00700365 /* PlistBookmark */; - 8B8D6A18207ABF300029B7B0 /* PBXTextBookmark */ = 8B8D6A18207ABF300029B7B0 /* PBXTextBookmark */; - 8B8D6A19207ABF300029B7B0 /* PBXTextBookmark */ = 8B8D6A19207ABF300029B7B0 /* PBXTextBookmark */; + 8B7929B921F353D1006E9731 /* PBXTextBookmark */ = 8B7929B921F353D1006E9731 /* PBXTextBookmark */; + 8B7929BE21F353E2006E9731 /* PBXTextBookmark */ = 8B7929BE21F353E2006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -73,32 +73,32 @@ rLen = 0; rLoc = 9223372036854775808; }; - 8B8D6A18207ABF300029B7B0 /* PBXTextBookmark */ = { + 8B7929B921F353D1006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Console5Channel.cpp */; - name = "Console5Channel.cpp: 234"; + name = "Console5Channel.cpp: 229"; rLen = 380; - rLoc = 10265; + rLoc = 10113; rType = 0; - vrLen = 46; - vrLoc = 10265; + vrLen = 66; + vrLoc = 10205; }; - 8B8D6A19207ABF300029B7B0 /* PBXTextBookmark */ = { + 8B7929BE21F353E2006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Console5Channel.cpp */; - name = "Console5Channel.cpp: 234"; + name = "Console5Channel.cpp: 229"; rLen = 380; - rLoc = 10265; + rLoc = 10113; rType = 0; - vrLen = 46; - vrLoc = 10265; + vrLen = 66; + vrLoc = 10205; }; 8BA05A660720730100365D66 /* Console5Channel.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {537, 3978}}"; - sepNavSelRange = "{10265, 380}"; - sepNavVisRange = "{10265, 46}"; - sepNavWindowFrame = "{{484, 39}, {895, 839}}"; + sepNavIntBoundsRect = "{{0, 0}, {509, 3874}}"; + sepNavSelRange = "{10113, 380}"; + sepNavVisRange = "{10205, 66}"; + sepNavWindowFrame = "{{459, 39}, {895, 839}}"; }; }; 8BA05A690720730100365D66 /* Console5ChannelVersion.h */ = { @@ -111,9 +111,9 @@ }; 8BC6025B073B072D006C4272 /* Console5Channel.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1859}}"; - sepNavSelRange = "{5229, 65}"; - sepNavVisRange = "{3844, 1559}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 1833}}"; + sepNavSelRange = "{5254, 0}"; + sepNavVisRange = "{3765, 1597}"; sepNavWindowFrame = "{{479, 39}, {895, 839}}"; }; }; diff --git a/plugins/MacAU/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.perspectivev3 index 37dc046..fbe9f3f 100755 --- a/plugins/MacAU/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>841</integer> - <integer>841</integer> + <integer>817</integer> + <integer>817</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -325,7 +323,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>596 381 817 431 0 0 1440 878 </string> + <string>533 389 817 431 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -353,11 +351,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B8D6A19207ABF300029B7B0</string> + <string>8B7929BE21F353E2006E9731</string> <key>history</key> <array> <string>8B050BAA206487EB00700365</string> - <string>8B8D6A18207ABF300029B7B0</string> + <string>8B7929B921F353D1006E9731</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {507, 53}}</string> + <string>{{0, 0}, {507, 35}}</string> <key>RubberWindowFrame</key> - <string>596 381 817 431 0 0 1440 878 </string> + <string>533 389 817 431 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>53pt</string> + <string>35pt</string> </dict> <dict> <key>Proportion</key> - <string>332pt</string> + <string>350pt</string> <key>Tabs</key> <array> <dict> @@ -396,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {507, 305}}</string> - <key>RubberWindowFrame</key> - <string>596 381 817 431 0 0 1440 878 </string> + <string>{{10, 27}, {507, 323}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -452,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 315}}</string> + <string>{{10, 27}, {507, 323}}</string> + <key>RubberWindowFrame</key> + <string>533 389 817 431 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -480,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B8D6A1A207ABF300029B7B0</string> + <string>8B7929BF21F353E2006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B8D6A1B207ABF300029B7B0</string> + <string>8B7929C021F353E2006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B8D6A1C207ABF300029B7B0</string> + <string>8B7929C121F353E2006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -657,7 +655,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>544915248.23002303</real> + <real>569594850.24200404</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -677,7 +675,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/Console5Channel/Console5Channel.xcodeproj</string> </array> <key>WindowString</key> - <string>596 381 817 431 0 0 1440 878 </string> + <string>533 389 817 431 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Console5DarkCh/Console5DarkCh.cpp b/plugins/MacAU/Console5DarkCh/Console5DarkCh.cpp index 2ad03c3..4b1cefd 100755 --- a/plugins/MacAU/Console5DarkCh/Console5DarkCh.cpp +++ b/plugins/MacAU/Console5DarkCh/Console5DarkCh.cpp @@ -165,9 +165,7 @@ void Console5DarkCh::Console5DarkChKernel::Reset() settingchase = -90.0; chasespeed = 350.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -184,11 +182,7 @@ void Console5DarkCh::Console5DarkChKernel::Process( const Float32 *inSourceP, Float32 *destP = inDestP; long double overallscale = 1.0; overallscale /= 44100.0; - overallscale *= GetSampleRate(); - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + overallscale *= GetSampleRate(); Float64 inputgain = GetParameter( kParam_One ); Float64 difference; Float64 nearZero; @@ -279,19 +273,11 @@ void Console5DarkCh::Console5DarkChKernel::Process( const Float32 *inSourceP, inputSample = sin(inputSample); //amplitude aspect - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/Console5DarkCh/Console5DarkCh.h b/plugins/MacAU/Console5DarkCh/Console5DarkCh.h index 8bb2126..157ad9b 100755 --- a/plugins/MacAU/Console5DarkCh/Console5DarkCh.h +++ b/plugins/MacAU/Console5DarkCh/Console5DarkCh.h @@ -131,9 +131,7 @@ public: Float64 settingchase; Float64 chasespeed; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.pbxuser index 4adcf1e..0562b0f 100755 --- a/plugins/MacAU/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.pbxuser @@ -49,18 +49,18 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 537050873; - PBXWorkspaceStateSaveDate = 537050873; + PBXPerProjectTemplateStateSaveDate = 569594878; + PBXWorkspaceStateSaveDate = 569594878; }; perUserProjectItems = { - 8B4D27592002BF690051360A /* PlistBookmark */ = 8B4D27592002BF690051360A /* PlistBookmark */; - 8B95A7E020006AC9007183A2 /* PlistBookmark */ = 8B95A7E020006AC9007183A2 /* PlistBookmark */; + 8B7929CF21F3543F006E9731 /* PlistBookmark */ = 8B7929CF21F3543F006E9731 /* PlistBookmark */; + 8B7929D421F35450006E9731 /* PlistBookmark */ = 8B7929D421F35450006E9731 /* PlistBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B4D27592002BF690051360A /* PlistBookmark */ = { + 8B7929CF21F3543F006E9731 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; fallbackIsa = PBXBookmark; @@ -72,7 +72,7 @@ rLen = 0; rLoc = 9223372036854775807; }; - 8B95A7E020006AC9007183A2 /* PlistBookmark */ = { + 8B7929D421F35450006E9731 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; fallbackIsa = PBXBookmark; @@ -80,15 +80,15 @@ kPath = ( CFBundleName, ); - name = /Users/christopherjohnson/Desktop/Console5DarkCh/Info.plist; + name = /Users/christopherjohnson/Desktop/MacAU/Console5DarkCh/Info.plist; rLen = 26; rLoc = 0; }; 8BA05A660720730100365D66 /* Console5DarkCh.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 4160}}"; - sepNavSelRange = "{10956, 0}"; - sepNavVisRange = "{10771, 1848}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 3991}}"; + sepNavSelRange = "{12259, 0}"; + sepNavVisRange = "{10314, 2033}"; sepNavWindowFrame = "{{29, 39}, {895, 839}}"; }; }; @@ -102,10 +102,10 @@ }; 8BC6025B073B072D006C4272 /* Console5DarkCh.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1846}}"; - sepNavSelRange = "{5389, 0}"; - sepNavVisRange = "{3832, 1557}"; - sepNavWindowFrame = "{{579, 39}, {895, 839}}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 1833}}"; + sepNavSelRange = "{5240, 0}"; + sepNavVisRange = "{3753, 1595}"; + sepNavWindowFrame = "{{329, 39}, {895, 839}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.perspectivev3 index 91ebb9c..8b9ecd1 100755 --- a/plugins/MacAU/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -326,7 +324,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>20 224 841 654 0 0 1440 878 </string> + <string>55 218 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -354,10 +352,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B4D27592002BF690051360A</string> + <string>8B7929D421F35450006E9731</string> <key>history</key> <array> - <string>8B95A7E020006AC9007183A2</string> + <string>8B7929CF21F3543F006E9731</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 229}}</string> + <string>{{0, 0}, {531, 216}}</string> <key>RubberWindowFrame</key> - <string>20 224 841 654 0 0 1440 878 </string> + <string>55 218 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>229pt</string> + <string>216pt</string> </dict> <dict> <key>Proportion</key> - <string>379pt</string> + <string>392pt</string> <key>Tabs</key> <array> <dict> @@ -396,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 352}}</string> - <key>RubberWindowFrame</key> - <string>20 224 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 365}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -452,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 339}}</string> + <string>{{10, 27}, {531, 365}}</string> + <key>RubberWindowFrame</key> + <string>55 218 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -480,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B4D275A2002BF690051360A</string> + <string>8B7929D521F35450006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B4D275B2002BF690051360A</string> + <string>8B7929D621F35450006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B4D275C2002BF690051360A</string> + <string>8B7929D721F35450006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -657,7 +655,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>537050985.45516396</real> + <real>569594960.15694499</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -674,11 +672,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B4D275D2002BF690051360A</string> <string>/Users/christopherjohnson/Desktop/MacAU/Console5DarkCh/Console5DarkCh.xcodeproj</string> </array> <key>WindowString</key> - <string>20 224 841 654 0 0 1440 878 </string> + <string>55 218 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.cpp b/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.cpp index 847c101..be4cd10 100755 --- a/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.cpp +++ b/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.cpp @@ -177,9 +177,7 @@ void CrunchyGrooveWear::CrunchyGrooveWearKernel::Reset() bMidPrev = 0.0; cMidPrev = 0.0; dMidPrev = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -193,11 +191,7 @@ void CrunchyGrooveWear::CrunchyGrooveWearKernel::Process( const Float32 *inSou { UInt32 nSampleFrames = inFramesToProcess; const Float32 *sourceP = inSourceP; - Float32 *destP = inDestP; - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + Float32 *destP = inDestP; Float64 overallscale = (pow(GetParameter( kParam_One ),2)*19.0)+1.0; Float64 gain = overallscale; //mid groove wear @@ -450,19 +444,11 @@ void CrunchyGrooveWear::CrunchyGrooveWearKernel::Process( const Float32 *inSou inputSample = (inputSample * dWet) + (drySample * dDry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.h b/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.h index a1d9fc8..07db5c7 100755 --- a/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.h +++ b/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.h @@ -138,9 +138,7 @@ public: Float64 cMidPrev; Float64 dMidPrev; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.pbxuser index 3479d30..af3720e 100755 --- a/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.pbxuser @@ -49,13 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 541894646; - PBXWorkspaceStateSaveDate = 541894646; + PBXPerProjectTemplateStateSaveDate = 569595525; + PBXWorkspaceStateSaveDate = 569595525; }; perUserProjectItems = { 8B181BD6204CA7CC00516BEE /* PlistBookmark */ = 8B181BD6204CA7CC00516BEE /* PlistBookmark */; - 8B181BD8204CA7CC00516BEE /* PBXTextBookmark */ = 8B181BD8204CA7CC00516BEE /* PBXTextBookmark */; - 8B1A6DF8204CA7FC009DEEA1 /* PBXTextBookmark */ = 8B1A6DF8204CA7FC009DEEA1 /* PBXTextBookmark */; + 8B7929E621F356D5006E9731 /* PBXTextBookmark */ = 8B7929E621F356D5006E9731 /* PBXTextBookmark */; + 8B7929EB21F356E6006E9731 /* PBXTextBookmark */ = 8B7929EB21F356E6006E9731 /* PBXTextBookmark */; + 8B9D5E35207AB7DF00C332E2 /* PBXTextBookmark */ = 8B9D5E35207AB7DF00C332E2 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -73,32 +74,42 @@ rLen = 0; rLoc = 9223372036854775808; }; - 8B181BD8204CA7CC00516BEE /* PBXTextBookmark */ = { + 8B7929E621F356D5006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* CrunchyGrooveWear.h */; - name = "CrunchyGrooveWear.h: 56"; - rLen = 0; - rLoc = 2856; + fRef = 8BA05A660720730100365D66 /* CrunchyGrooveWear.cpp */; + name = "CrunchyGrooveWear.cpp: 349"; + rLen = 875; + rLoc = 16513; rType = 0; - vrLen = 229; - vrLoc = 2728; + vrLen = 316; + vrLoc = 19570; }; - 8B1A6DF8204CA7FC009DEEA1 /* PBXTextBookmark */ = { + 8B7929EB21F356E6006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* CrunchyGrooveWear.cpp */; + name = "CrunchyGrooveWear.cpp: 349"; + rLen = 875; + rLoc = 16513; + rType = 0; + vrLen = 316; + vrLoc = 19570; + }; + 8B9D5E35207AB7DF00C332E2 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* CrunchyGrooveWear.h */; name = "CrunchyGrooveWear.h: 56"; rLen = 0; rLoc = 2856; rType = 0; - vrLen = 228; - vrLoc = 2729; + vrLen = 178; + vrLoc = 2730; }; 8BA05A660720730100365D66 /* CrunchyGrooveWear.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {769, 6084}}"; - sepNavSelRange = "{12165, 581}"; - sepNavVisRange = "{11798, 2704}"; - sepNavWindowFrame = "{{528, 46}, {816, 832}}"; + sepNavIntBoundsRect = "{{0, 0}, {677, 6058}}"; + sepNavSelRange = "{16513, 875}"; + sepNavVisRange = "{19570, 316}"; + sepNavWindowFrame = "{{500, 44}, {816, 832}}"; }; }; 8BA05A670720730100365D66 /* CrunchyGrooveWear.exp */ = { @@ -119,10 +130,10 @@ }; 8BC6025B073B072D006C4272 /* CrunchyGrooveWear.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {803, 1963}}"; - sepNavSelRange = "{2856, 0}"; - sepNavVisRange = "{2729, 228}"; - sepNavWindowFrame = "{{15, 41}, {816, 832}}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 1898}}"; + sepNavSelRange = "{5501, 0}"; + sepNavVisRange = "{4045, 1558}"; + sepNavWindowFrame = "{{451, 39}, {816, 832}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.perspectivev3 index 5152037..e829e94 100755 --- a/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -326,7 +324,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>476 182 841 654 0 0 1440 878 </string> + <string>398 187 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -342,7 +340,7 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274A1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>CrunchyGrooveWear.h</string> + <string>CrunchyGrooveWear.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -350,15 +348,16 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274B1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>CrunchyGrooveWear.h</string> + <string>CrunchyGrooveWear.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B1A6DF8204CA7FC009DEEA1</string> + <string>8B7929EB21F356E6006E9731</string> <key>history</key> <array> <string>8B181BD6204CA7CC00516BEE</string> - <string>8B181BD8204CA7CC00516BEE</string> + <string>8B9D5E35207AB7DF00C332E2</string> + <string>8B7929E621F356D5006E9731</string> </array> </dict> <key>SplitCount</key> @@ -372,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 158}}</string> + <string>{{0, 0}, {531, 109}}</string> <key>RubberWindowFrame</key> - <string>476 182 841 654 0 0 1440 878 </string> + <string>398 187 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>158pt</string> + <string>109pt</string> </dict> <dict> <key>Proportion</key> - <string>450pt</string> + <string>499pt</string> <key>Tabs</key> <array> <dict> @@ -397,9 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 423}}</string> - <key>RubberWindowFrame</key> - <string>476 182 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 472}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -453,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 365}}</string> + <string>{{10, 27}, {531, 472}}</string> + <key>RubberWindowFrame</key> + <string>398 187 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -481,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B1A6DF5204CA7FC009DEEA1</string> + <string>8B7929EC21F356E6006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B1A6DF6204CA7FC009DEEA1</string> + <string>8B7929ED21F356E6006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B1A6DF7204CA7FC009DEEA1</string> + <string>8B7929EE21F356E6006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -658,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>541894652.77613103</real> + <real>569595622.14955699</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -678,7 +677,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj</string> </array> <key>WindowString</key> - <string>476 182 841 654 0 0 1440 878 </string> + <string>398 187 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Crystal/Crystal.cpp b/plugins/MacAU/Crystal/Crystal.cpp index f57a72e..9ca3fba 100755 --- a/plugins/MacAU/Crystal/Crystal.cpp +++ b/plugins/MacAU/Crystal/Crystal.cpp @@ -302,23 +302,15 @@ void Crystal::CrystalKernel::Process( const Float32 *inSourceP, //when current and old samples are different from each other, otherwise you can't tell it's there. //This is not only during silence but the tops of low frequency waves: it scales down to affect lows more gently. - //noise shaping to 32-bit floating point - Float32 fpTemp = inputSample; - fpNShape += (inputSample-fpTemp); - inputSample += fpNShape; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; } - fpNShape *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacAU/Crystal/Crystal.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Crystal/Crystal.xcodeproj/christopherjohnson.pbxuser index 7ed81d1..9bee97b 100755 --- a/plugins/MacAU/Crystal/Crystal.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Crystal/Crystal.xcodeproj/christopherjohnson.pbxuser @@ -49,34 +49,18 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 566521916; - PBXWorkspaceStateSaveDate = 566521916; + PBXPerProjectTemplateStateSaveDate = 569595657; + PBXWorkspaceStateSaveDate = 569595657; }; perUserProjectItems = { - 8BBB31EA21BDBFE700825986 /* PlistBookmark */ = 8BBB31EA21BDBFE700825986 /* PlistBookmark */; - 8BBB350621C472FB00825986 /* PlistBookmark */ = 8BBB350621C472FB00825986 /* PlistBookmark */; + 8B7929FC21F35738006E9731 /* PlistBookmark */ = 8B7929FC21F35738006E9731 /* PlistBookmark */; + 8B792A0121F35748006E9731 /* PlistBookmark */ = 8B792A0121F35748006E9731 /* PlistBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8BA05A660720730100365D66 /* Crystal.cpp */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1082, 4225}}"; - sepNavSelRange = "{15530, 0}"; - sepNavVisRange = "{9843, 3243}"; - sepNavWindowFrame = "{{457, 44}, {1129, 834}}"; - }; - }; - 8BA05A690720730100365D66 /* CrystalVersion.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1082, 767}}"; - sepNavSelRange = "{2880, 0}"; - sepNavVisRange = "{32, 2911}"; - sepNavWindowFrame = "{{15, 39}, {1129, 834}}"; - }; - }; - 8BBB31EA21BDBFE700825986 /* PlistBookmark */ = { + 8B7929FC21F35738006E9731 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; fallbackIsa = PBXBookmark; @@ -84,11 +68,11 @@ kPath = ( CFBundleName, ); - name = /Users/christopherjohnson/Desktop/Crystal/Info.plist; + name = /Users/christopherjohnson/Desktop/MacAU/Crystal/Info.plist; rLen = 0; - rLoc = 9223372036854775808; + rLoc = 9223372036854775807; }; - 8BBB350621C472FB00825986 /* PlistBookmark */ = { + 8B792A0121F35748006E9731 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; fallbackIsa = PBXBookmark; @@ -97,15 +81,31 @@ CFBundleName, ); name = /Users/christopherjohnson/Desktop/MacAU/Crystal/Info.plist; - rLen = 0; - rLoc = 9223372036854775807; + rLen = 26; + rLoc = 0; + }; + 8BA05A660720730100365D66 /* Crystal.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1082, 3952}}"; + sepNavSelRange = "{15755, 0}"; + sepNavVisRange = "{12294, 3464}"; + sepNavWindowFrame = "{{208, 44}, {1129, 834}}"; + }; + }; + 8BA05A690720730100365D66 /* CrystalVersion.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1082, 767}}"; + sepNavSelRange = "{2880, 0}"; + sepNavVisRange = "{32, 2911}"; + sepNavWindowFrame = "{{15, 39}, {1129, 834}}"; + }; }; 8BC6025B073B072D006C4272 /* Crystal.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {1082, 1911}}"; sepNavSelRange = "{5476, 0}"; - sepNavVisRange = "{2711, 1740}"; - sepNavWindowFrame = "{{731, 44}, {1129, 834}}"; + sepNavVisRange = "{3946, 1714}"; + sepNavWindowFrame = "{{224, 44}, {1129, 834}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/Crystal/Crystal.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Crystal/Crystal.xcodeproj/christopherjohnson.perspectivev3 index 0364ddc..1b41ecc 100755 --- a/plugins/MacAU/Crystal/Crystal.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Crystal/Crystal.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -326,7 +324,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>708 184 841 654 0 0 1440 878 </string> + <string>463 195 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -354,10 +352,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BBB350621C472FB00825986</string> + <string>8B792A0121F35748006E9731</string> <key>history</key> <array> - <string>8BBB31EA21BDBFE700825986</string> + <string>8B7929FC21F35738006E9731</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 229}}</string> + <string>{{0, 0}, {531, 216}}</string> <key>RubberWindowFrame</key> - <string>708 184 841 654 0 0 1440 878 </string> + <string>463 195 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>229pt</string> + <string>216pt</string> </dict> <dict> <key>Proportion</key> - <string>379pt</string> + <string>392pt</string> <key>Tabs</key> <array> <dict> @@ -396,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 352}}</string> - <key>RubberWindowFrame</key> - <string>708 184 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 365}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -452,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 339}}</string> + <string>{{10, 27}, {531, 365}}</string> + <key>RubberWindowFrame</key> + <string>463 195 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -480,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBB350721C472FC00825986</string> + <string>8B792A0221F35748006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBB350821C472FC00825986</string> + <string>8B792A0321F35748006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8BBB350921C472FC00825986</string> + <string>8B792A0421F35748006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -657,7 +655,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>566522619.99816501</real> + <real>569595720.77537096</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -674,11 +672,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BBB350A21C472FC00825986</string> <string>/Users/christopherjohnson/Desktop/MacAU/Crystal/Crystal.xcodeproj</string> </array> <key>WindowString</key> - <string>708 184 841 654 0 0 1440 878 </string> + <string>463 195 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.pbxuser index dcc937e..080021a 100755 --- a/plugins/MacAU/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.pbxuser @@ -49,11 +49,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528455539; - PBXWorkspaceStateSaveDate = 528455539; + PBXPerProjectTemplateStateSaveDate = 569597377; + PBXWorkspaceStateSaveDate = 569597377; }; perUserProjectItems = { - 8B9D64111F7C844B007AB60F /* PBXTextBookmark */ = 8B9D64111F7C844B007AB60F /* PBXTextBookmark */; + 8B792A3021F35DE0006E9731 /* PBXTextBookmark */ = 8B792A3021F35DE0006E9731 /* PBXTextBookmark */; 8B9D738A1F7F978A007AB60F /* PBXTextBookmark */ = 8B9D738A1F7F978A007AB60F /* PBXTextBookmark */; 8BD4F5F01E6E13CD00288155 /* PlistBookmark */ = 8BD4F5F01E6E13CD00288155 /* PlistBookmark */; 8BD4F6011E6E155D00288155 /* PBXTextBookmark */ = 8BD4F6011E6E155D00288155 /* PBXTextBookmark */; @@ -63,14 +63,14 @@ userBuildSettings = { }; }; - 8B9D64111F7C844B007AB60F /* PBXTextBookmark */ = { + 8B792A3021F35DE0006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* DCVoltage.cpp */; name = "DCVoltage.cpp: 178"; rLen = 0; rLoc = 7961; rType = 0; - vrLen = 509; + vrLen = 506; vrLoc = 7573; }; 8B9D738A1F7F978A007AB60F /* PBXTextBookmark */ = { @@ -85,9 +85,9 @@ }; 8BA05A660720730100365D66 /* DCVoltage.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {656, 2535}}"; + sepNavIntBoundsRect = "{{0, 0}, {656, 2548}}"; sepNavSelRange = "{7961, 0}"; - sepNavVisRange = "{7573, 508}"; + sepNavVisRange = "{7573, 506}"; sepNavWindowFrame = "{{194, 39}, {1024, 839}}"; }; }; @@ -101,9 +101,9 @@ }; 8BC6025B073B072D006C4272 /* DCVoltage.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1807}}"; + sepNavIntBoundsRect = "{{0, 0}, {977, 1742}}"; sepNavSelRange = "{5068, 0}"; - sepNavVisRange = "{2673, 325}"; + sepNavVisRange = "{3419, 1758}"; sepNavWindowFrame = "{{15, 39}, {1024, 839}}"; }; }; diff --git a/plugins/MacAU/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.perspectivev3 index 7d3cd83..49602fc 100755 --- a/plugins/MacAU/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.perspectivev3 @@ -325,7 +325,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>592 163 841 654 0 0 1440 878 </string> + <string>481 181 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -353,13 +353,13 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D738A1F7F978A007AB60F</string> + <string>8B792A3021F35DE0006E9731</string> <key>history</key> <array> <string>8BD4F5F01E6E13CD00288155</string> <string>8BD4F6011E6E155D00288155</string> <string>8BD4F6021E6E155D00288155</string> - <string>8B9D64111F7C844B007AB60F</string> + <string>8B9D738A1F7F978A007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -373,18 +373,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 216}}</string> + <string>{{0, 0}, {531, 202}}</string> <key>RubberWindowFrame</key> - <string>592 163 841 654 0 0 1440 878 </string> + <string>481 181 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>216pt</string> + <string>202pt</string> </dict> <dict> <key>Proportion</key> - <string>392pt</string> + <string>406pt</string> <key>Tabs</key> <array> <dict> @@ -398,9 +398,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 365}}</string> + <string>{{10, 27}, {531, 379}}</string> <key>RubberWindowFrame</key> - <string>592 163 841 654 0 0 1440 878 </string> + <string>481 181 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -482,11 +482,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D738B1F7F978A007AB60F</string> + <string>8B792A3121F35DE0006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D738C1F7F978A007AB60F</string> + <string>8B792A3221F35DE0006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D738D1F7F978A007AB60F</string> + <string>8B792A3321F35DE0006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -659,7 +659,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528455562.74837202</real> + <real>569597408.43308794</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -676,11 +676,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D738E1F7F978A007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/DCVoltage/DCVoltage.xcodeproj</string> </array> <key>WindowString</key> - <string>592 163 841 654 0 0 1440 878 </string> + <string>481 181 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/DeEss/DeEss.cpp b/plugins/MacAU/DeEss/DeEss.cpp index 1858308..bf85e76 100755 --- a/plugins/MacAU/DeEss/DeEss.cpp +++ b/plugins/MacAU/DeEss/DeEss.cpp @@ -276,23 +276,15 @@ void DeEss::DeEssKernel::Process( const Float32 *inSourceP, flip = !flip; - //noise shaping to 32-bit floating point - Float32 fpTemp = inputSample; - fpNShape += (inputSample-fpTemp); - inputSample += fpNShape; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; } - fpNShape *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacAU/DeEss/DeEss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/DeEss/DeEss.xcodeproj/christopherjohnson.pbxuser index e135353..fe46618 100755 --- a/plugins/MacAU/DeEss/DeEss.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/DeEss/DeEss.xcodeproj/christopherjohnson.pbxuser @@ -51,18 +51,18 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 561683701; - PBXWorkspaceStateSaveDate = 561683701; + PBXPerProjectTemplateStateSaveDate = 569597430; + PBXWorkspaceStateSaveDate = 569597430; }; perUserProjectItems = { - 8B15DCF1217AA138007AD769 /* PlistBookmark */ = 8B15DCF1217AA138007AD769 /* PlistBookmark */; - 8B42FC5121604F050092969A /* PlistBookmark */ = 8B42FC5121604F050092969A /* PlistBookmark */; + 8B792A4121F35E2C006E9731 /* PlistBookmark */ = 8B792A4121F35E2C006E9731 /* PlistBookmark */; + 8B792A4621F35E3B006E9731 /* PlistBookmark */ = 8B792A4621F35E3B006E9731 /* PlistBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B15DCF1217AA138007AD769 /* PlistBookmark */ = { + 8B792A4121F35E2C006E9731 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; fallbackIsa = PBXBookmark; @@ -74,7 +74,7 @@ rLen = 0; rLoc = 9223372036854775807; }; - 8B42FC5121604F050092969A /* PlistBookmark */ = { + 8B792A4621F35E3B006E9731 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; fallbackIsa = PBXBookmark; @@ -83,15 +83,15 @@ CFBundleName, ); name = /Users/christopherjohnson/Desktop/MacAU/DeEss/Info.plist; - rLen = 0; - rLoc = 9223372036854775808; + rLen = 26; + rLoc = 0; }; 8BA05A660720730100365D66 /* DeEss.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {843, 4056}}"; - sepNavSelRange = "{10679, 1381}"; - sepNavVisRange = "{10978, 1915}"; - sepNavWindowFrame = "{{550, 67}, {890, 810}}"; + sepNavIntBoundsRect = "{{0, 0}, {843, 3900}}"; + sepNavSelRange = "{12395, 0}"; + sepNavVisRange = "{8626, 2352}"; + sepNavWindowFrame = "{{356, 68}, {890, 810}}"; }; }; 8BA05A670720730100365D66 /* DeEss.exp */ = { @@ -114,8 +114,8 @@ uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {894, 2145}}"; sepNavSelRange = "{5669, 0}"; - sepNavVisRange = "{2589, 1459}"; - sepNavWindowFrame = "{{843, 68}, {890, 810}}"; + sepNavVisRange = "{4790, 1025}"; + sepNavWindowFrame = "{{550, 68}, {890, 810}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/DeEss/DeEss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/DeEss/DeEss.xcodeproj/christopherjohnson.perspectivev3 index 83b64e1..3c8c7b4 100755 --- a/plugins/MacAU/DeEss/DeEss.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/DeEss/DeEss.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>841</integer> - <integer>841</integer> + <integer>700</integer> + <integer>700</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -326,7 +324,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>807 197 700 649 0 0 1440 878 </string> + <string>562 202 700 649 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -354,10 +352,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B15DCF1217AA138007AD769</string> + <string>8B792A4621F35E3B006E9731</string> <key>history</key> <array> - <string>8B42FC5121604F050092969A</string> + <string>8B792A4121F35E2C006E9731</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {390, 197}}</string> + <string>{{0, 0}, {390, 183}}</string> <key>RubberWindowFrame</key> - <string>807 197 700 649 0 0 1440 878 </string> + <string>562 202 700 649 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>197pt</string> + <string>183pt</string> </dict> <dict> <key>Proportion</key> - <string>406pt</string> + <string>420pt</string> <key>Tabs</key> <array> <dict> @@ -396,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {390, 379}}</string> - <key>RubberWindowFrame</key> - <string>807 197 700 649 0 0 1440 878 </string> + <string>{{10, 27}, {390, 393}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -452,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 352}}</string> + <string>{{10, 27}, {390, 393}}</string> + <key>RubberWindowFrame</key> + <string>562 202 700 649 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -480,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B15DCC9217A9CFD007AD769</string> + <string>8B792A4721F35E3B006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B15DCCA217A9CFD007AD769</string> + <string>8B792A4821F35E3B006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B15DCCB217A9CFD007AD769</string> + <string>8B792A4921F35E3B006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -657,7 +655,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>561684792.65047503</real> + <real>569597499.49246502</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -677,7 +675,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/DeEss/DeEss.xcodeproj</string> </array> <key>WindowString</key> - <string>807 197 700 649 0 0 1440 878 </string> + <string>562 202 700 649 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/DeRez/DeRez.cpp b/plugins/MacAU/DeRez/DeRez.cpp index 4bc3ee4..e2f3829 100755 --- a/plugins/MacAU/DeRez/DeRez.cpp +++ b/plugins/MacAU/DeRez/DeRez.cpp @@ -171,9 +171,7 @@ void DeRez::DeRezKernel::Reset() position = 0.0; incrementA = 0.0; incrementB = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -200,10 +198,7 @@ void DeRez::DeRezKernel::Process( const Float32 *inSourceP, Float64 overallscale = 1.0; overallscale /= 44100.0; overallscale *= GetSampleRate(); - targetA /= overallscale; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + targetA /= overallscale; while (nSampleFrames-- > 0) { long double inputSample = *sourceP; @@ -265,18 +260,11 @@ void DeRez::DeRezKernel::Process( const Float32 *inSourceP, inputSample *= (1.0 - incrementB); } - //noise shaping to 32-bit floating point - Float32 fpTemp = inputSample; - if (fpFlip) { - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; lastSample = drySample; diff --git a/plugins/MacAU/DeRez/DeRez.h b/plugins/MacAU/DeRez/DeRez.h index 55cc562..e592bcb 100755 --- a/plugins/MacAU/DeRez/DeRez.h +++ b/plugins/MacAU/DeRez/DeRez.h @@ -133,9 +133,7 @@ public: Float64 position; Float64 incrementA; Float64 incrementB; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/DeRez/DeRez.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/DeRez/DeRez.xcodeproj/christopherjohnson.pbxuser index 78a1751..359639f 100755 --- a/plugins/MacAU/DeRez/DeRez.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/DeRez/DeRez.xcodeproj/christopherjohnson.pbxuser @@ -49,18 +49,38 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 553899071; - PBXWorkspaceStateSaveDate = 553899071; + PBXPerProjectTemplateStateSaveDate = 569597675; + PBXWorkspaceStateSaveDate = 569597675; }; perUserProjectItems = { + 8B792A7321F35F66006E9731 /* PBXTextBookmark */ = 8B792A7321F35F66006E9731 /* PBXTextBookmark */; + 8B792A7821F35F77006E9731 /* PBXTextBookmark */ = 8B792A7821F35F77006E9731 /* PBXTextBookmark */; 8B7E3E4320A68C5B00482CB5 /* PBXTextBookmark */ = 8B7E3E4320A68C5B00482CB5 /* PBXTextBookmark */; - 8B9754332103D44500A4FFA3 /* PBXTextBookmark */ = 8B9754332103D44500A4FFA3 /* PBXTextBookmark */; - 8BB8B6DD21039A3300751000 /* PBXTextBookmark */ = 8BB8B6DD21039A3300751000 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B792A7321F35F66006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* DeRez.cpp */; + name = "DeRez.cpp: 199"; + rLen = 0; + rLoc = 8817; + rType = 0; + vrLen = 87; + vrLoc = 8817; + }; + 8B792A7821F35F77006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* DeRez.cpp */; + name = "DeRez.cpp: 199"; + rLen = 0; + rLoc = 8817; + rType = 0; + vrLen = 87; + vrLoc = 8817; + }; 8B7E3E4320A68C5B00482CB5 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A690720730100365D66 /* DeRezVersion.h */; @@ -71,22 +91,12 @@ vrLen = 166; vrLoc = 3288; }; - 8B9754332103D44500A4FFA3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* DeRez.cpp */; - name = "DeRez.cpp: 201"; - rLen = 0; - rLoc = 8852; - rType = 0; - vrLen = 177; - vrLoc = 8761; - }; 8BA05A660720730100365D66 /* DeRez.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 3861}}"; - sepNavSelRange = "{8852, 0}"; - sepNavVisRange = "{8761, 177}"; - sepNavWindowFrame = "{{433, 59}, {1007, 819}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 3783}}"; + sepNavSelRange = "{8817, 0}"; + sepNavVisRange = "{8817, 87}"; + sepNavWindowFrame = "{{303, 48}, {1007, 819}}"; }; }; 8BA05A670720730100365D66 /* DeRez.exp */ = { @@ -104,21 +114,11 @@ sepNavVisRange = "{3288, 166}"; }; }; - 8BB8B6DD21039A3300751000 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* DeRez.cpp */; - name = "DeRez.cpp: 201"; - rLen = 0; - rLoc = 8852; - rType = 0; - vrLen = 277; - vrLoc = 8761; - }; 8BC6025B073B072D006C4272 /* DeRez.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1062, 1677}}"; - sepNavSelRange = "{3000, 0}"; - sepNavVisRange = "{1247, 2041}"; + sepNavIntBoundsRect = "{{0, 0}, {1062, 1807}}"; + sepNavSelRange = "{5245, 0}"; + sepNavVisRange = "{3769, 1578}"; sepNavWindowFrame = "{{433, 48}, {1007, 819}}"; }; }; diff --git a/plugins/MacAU/DeRez/DeRez.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/DeRez/DeRez.xcodeproj/christopherjohnson.perspectivev3 index 78a77d9..a77fdf8 100755 --- a/plugins/MacAU/DeRez/DeRez.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/DeRez/DeRez.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>614 318 810 487 0 0 1440 878 </string> + <string>516 329 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,11 +350,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9754332103D44500A4FFA3</string> + <string>8B792A7821F35F77006E9731</string> <key>history</key> <array> <string>8B7E3E4320A68C5B00482CB5</string> - <string>8BB8B6DD21039A3300751000</string> + <string>8B792A7321F35F66006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 86}}</string> + <string>{{0, 0}, {603, 69}}</string> <key>RubberWindowFrame</key> - <string>614 318 810 487 0 0 1440 878 </string> + <string>516 329 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>86pt</string> + <string>69pt</string> </dict> <dict> <key>Proportion</key> - <string>355pt</string> + <string>372pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 328}}</string> - <key>RubberWindowFrame</key> - <string>614 318 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 345}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 312}}</string> + <string>{{10, 27}, {603, 345}}</string> + <key>RubberWindowFrame</key> + <string>516 329 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9754342103D44500A4FFA3</string> + <string>8B792A7921F35F77006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9754352103D44500A4FFA3</string> + <string>8B792A7A21F35F77006E9731</string> <string>8B8D69E4207ABD0F0029B7B0</string> - <string>8B9754362103D44500A4FFA3</string> + <string>8B792A7B21F35F77006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>553899077.362046</real> + <real>569597815.38705599</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,11 +651,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9754372103D44500A4FFA3</string> <string>/Users/christopherjohnson/Desktop/MacAU/DeRez/DeRez.xcodeproj</string> </array> <key>WindowString</key> - <string>614 318 810 487 0 0 1440 878 </string> + <string>516 329 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Density/Density.cpp b/plugins/MacAU/Density/Density.cpp index 68c3828..7edf12b 100755 --- a/plugins/MacAU/Density/Density.cpp +++ b/plugins/MacAU/Density/Density.cpp @@ -184,8 +184,7 @@ void Density::DensityKernel::Reset() { iirSampleA = 0.0; iirSampleB = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; + fpNShape = 0.0; fpFlip = true; } @@ -220,9 +219,6 @@ void Density::DensityKernel::Process( const Float32 *inSourceP, Float64 out = fabs(density); density = density * fabs(density); Float64 count; - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; while (nSampleFrames-- > 0) { inputSample = *sourceP; @@ -291,20 +287,13 @@ void Density::DensityKernel::Process( const Float32 *inSourceP, if (wet < 1.0) inputSample = (drySample * dry)+(inputSample*wet); //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/Density/Density.exp b/plugins/MacAU/Density/Density.exp index 8d6e23b..85300f6 100755 --- a/plugins/MacAU/Density/Density.exp +++ b/plugins/MacAU/Density/Density.exp @@ -1 +1 @@ -_DensityEntry
\ No newline at end of file +_DensityEntry diff --git a/plugins/MacAU/Density/Density.h b/plugins/MacAU/Density/Density.h index ac8d445..0d9af29 100755 --- a/plugins/MacAU/Density/Density.h +++ b/plugins/MacAU/Density/Density.h @@ -138,8 +138,7 @@ public: private: Float64 iirSampleA; Float64 iirSampleB; - Float64 fpNShapeA; - Float64 fpNShapeB; + long double fpNShape; bool fpFlip; }; }; diff --git a/plugins/MacAU/Density/Density.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Density/Density.xcodeproj/christopherjohnson.pbxuser index bbb10da..76445ad 100755 --- a/plugins/MacAU/Density/Density.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Density/Density.xcodeproj/christopherjohnson.pbxuser @@ -49,33 +49,51 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 553737317; - PBXWorkspaceStateSaveDate = 553737317; + PBXPerProjectTemplateStateSaveDate = 569597523; + PBXWorkspaceStateSaveDate = 569597523; }; perUserProjectItems = { - 8B241C8921015F29001BBF7E /* PBXTextBookmark */ = 8B241C8921015F29001BBF7E /* PBXTextBookmark */; - 8BC5CD4B208D59FB0058B257 /* PBXTextBookmark */ = 8BC5CD4B208D59FB0058B257 /* PBXTextBookmark */; + 8B792A5721F35EBB006E9731 /* PBXTextBookmark */ = 8B792A5721F35EBB006E9731 /* PBXTextBookmark */; + 8B792A5D21F35ED5006E9731 /* PBXTextBookmark */ = 8B792A5D21F35ED5006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B241C8921015F29001BBF7E /* PBXTextBookmark */ = { + 8B792A5721F35EBB006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Density.cpp */; - name = "Density.cpp: 290"; + name = "Density.cpp: 286"; rLen = 68; - rLoc = 12813; + rLoc = 12685; rType = 0; - vrLen = 106; - vrLoc = 27; + vrLen = 91; + vrLoc = 42; + }; + 8B792A5D21F35ED5006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Density.cpp */; + name = "Density.cpp: 286"; + rLen = 68; + rLoc = 12685; + rType = 0; + vrLen = 91; + vrLoc = 42; }; 8BA05A660720730100365D66 /* Density.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {803, 4108}}"; - sepNavSelRange = "{12813, 68}"; - sepNavVisRange = "{27, 106}"; - sepNavWindowFrame = "{{545, 59}, {895, 819}}"; + sepNavIntBoundsRect = "{{0, 0}, {803, 4069}}"; + sepNavSelRange = "{12685, 68}"; + sepNavVisRange = "{42, 91}"; + sepNavWindowFrame = "{{414, 59}, {895, 819}}"; + }; + }; + 8BA05A670720730100365D66 /* Density.exp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1253, 694}}"; + sepNavSelRange = "{14, 0}"; + sepNavVisRange = "{0, 14}"; + sepNavWindowFrame = "{{15, 51}, {1300, 822}}"; }; }; 8BA05A690720730100365D66 /* DensityVersion.h */ = { @@ -86,21 +104,11 @@ sepNavWindowFrame = "{{15, 38}, {731, 835}}"; }; }; - 8BC5CD4B208D59FB0058B257 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* Density.cpp */; - name = "Density.cpp: 290"; - rLen = 68; - rLoc = 12813; - rType = 0; - vrLen = 109; - vrLoc = 24; - }; 8BC6025B073B072D006C4272 /* Density.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {856, 1950}}"; - sepNavSelRange = "{5537, 44}"; - sepNavVisRange = "{4519, 1228}"; + sepNavIntBoundsRect = "{{0, 0}, {856, 2158}}"; + sepNavSelRange = "{5604, 0}"; + sepNavVisRange = "{4448, 1275}"; sepNavWindowFrame = "{{537, 146}, {903, 692}}"; }; }; diff --git a/plugins/MacAU/Density/Density.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Density/Density.xcodeproj/christopherjohnson.perspectivev3 index 8c57043..affa75d 100755 --- a/plugins/MacAU/Density/Density.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Density/Density.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>810</integer> + <integer>810</integer> </array> <key>Perspectives</key> <array> @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>4</integer> + <integer>5</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> @@ -324,7 +324,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>619 361 810 487 0 0 1440 878 </string> + <string>482 370 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,10 +352,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B241C8921015F29001BBF7E</string> + <string>8B792A5D21F35ED5006E9731</string> <key>history</key> <array> - <string>8BC5CD4B208D59FB0058B257</string> + <string>8B792A5721F35EBB006E9731</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 102}}</string> + <string>{{0, 0}, {603, 86}}</string> <key>RubberWindowFrame</key> - <string>619 361 810 487 0 0 1440 878 </string> + <string>482 370 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>102pt</string> + <string>86pt</string> </dict> <dict> <key>Proportion</key> - <string>339pt</string> + <string>355pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 312}}</string> - <key>RubberWindowFrame</key> - <string>619 361 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 328}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -450,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {603, 328}}</string> + <key>RubberWindowFrame</key> + <string>482 370 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -478,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B241C8A21015F29001BBF7E</string> + <string>8B792A5E21F35ED5006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B241C8B21015F29001BBF7E</string> + <string>8B792A5F21F35ED5006E9731</string> <string>8BE3FF9D1DAAD40200A5AAF5</string> - <string>8B241C8C21015F29001BBF7E</string> + <string>8B792A6021F35ED5006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>553738025.40924096</real> + <real>569597652.99950302</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,10 +652,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> + <string>8B792A6121F35ED5006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/Density/Density.xcodeproj</string> </array> <key>WindowString</key> - <string>619 361 810 487 0 0 1440 878 </string> + <string>482 370 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Desk/Desk.cpp b/plugins/MacAU/Desk/Desk.cpp index d9bdb53..69dcf98 100755 --- a/plugins/MacAU/Desk/Desk.cpp +++ b/plugins/MacAU/Desk/Desk.cpp @@ -152,9 +152,7 @@ void Desk::DeskKernel::Reset() lastSample = 0.0; lastOutSample = 0.0; lastSlew = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -184,11 +182,7 @@ void Desk::DeskKernel::Process( const Float32 *inSourceP, Float64 bridgerectifier; Float64 combSample; long double inputSample; - long double drySample; - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; - + long double drySample; while (nSampleFrames-- > 0) { inputSample = *sourceP; @@ -251,19 +245,11 @@ void Desk::DeskKernel::Process( const Float32 *inSourceP, //drive section inputSample /= gain; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; diff --git a/plugins/MacAU/Desk/Desk.h b/plugins/MacAU/Desk/Desk.h index de63d97..1193995 100755 --- a/plugins/MacAU/Desk/Desk.h +++ b/plugins/MacAU/Desk/Desk.h @@ -120,9 +120,7 @@ public: long double lastSample; long double lastOutSample; Float64 lastSlew; - Float64 fpNShapeA; - Float64 fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/Desk/Desk.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Desk/Desk.xcodeproj/christopherjohnson.pbxuser index 88a6471..de343e4 100755 --- a/plugins/MacAU/Desk/Desk.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Desk/Desk.xcodeproj/christopherjohnson.pbxuser @@ -49,42 +49,42 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528455712; - PBXWorkspaceStateSaveDate = 528455712; + PBXPerProjectTemplateStateSaveDate = 569597840; + PBXWorkspaceStateSaveDate = 569597840; }; perUserProjectItems = { - 8B9D64341F7C8495007AB60F /* PBXTextBookmark */ = 8B9D64341F7C8495007AB60F /* PBXTextBookmark */; - 8B9D73AA1F7F984A007AB60F /* PBXTextBookmark */ = 8B9D73AA1F7F984A007AB60F /* PBXTextBookmark */; + 8B792A8921F35FDB006E9731 /* PBXTextBookmark */ = 8B792A8921F35FDB006E9731 /* PBXTextBookmark */; + 8B792A8E21F35FEC006E9731 /* PBXTextBookmark */ = 8B792A8E21F35FEC006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B9D64341F7C8495007AB60F /* PBXTextBookmark */ = { + 8B792A8921F35FDB006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Desk.cpp */; - name = "Desk.cpp: 252"; + name = "Desk.cpp: 247"; rLen = 0; - rLoc = 10568; + rLoc = 10424; rType = 0; - vrLen = 149; - vrLoc = 7870; + vrLen = 57; + vrLoc = 7909; }; - 8B9D73AA1F7F984A007AB60F /* PBXTextBookmark */ = { + 8B792A8E21F35FEC006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Desk.cpp */; - name = "Desk.cpp: 253"; + name = "Desk.cpp: 247"; rLen = 0; - rLoc = 10568; + rLoc = 10424; rType = 0; - vrLen = 102; - vrLoc = 7917; + vrLen = 57; + vrLoc = 7909; }; 8BA05A660720730100365D66 /* Desk.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 3692}}"; - sepNavSelRange = "{10568, 0}"; - sepNavVisRange = "{7917, 102}"; + sepNavIntBoundsRect = "{{0, 0}, {684, 3536}}"; + sepNavSelRange = "{10424, 0}"; + sepNavVisRange = "{7909, 57}"; sepNavWindowFrame = "{{244, 43}, {932, 815}}"; }; }; @@ -106,9 +106,9 @@ }; 8BC6025B073B072D006C4272 /* Desk.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {885, 1716}}"; - sepNavSelRange = "{4798, 57}"; - sepNavVisRange = "{3480, 1484}"; + sepNavIntBoundsRect = "{{0, 0}, {885, 1690}}"; + sepNavSelRange = "{4821, 0}"; + sepNavVisRange = "{3419, 1512}"; sepNavWindowFrame = "{{508, 59}, {932, 815}}"; }; }; diff --git a/plugins/MacAU/Desk/Desk.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Desk/Desk.xcodeproj/christopherjohnson.perspectivev3 index d3824ff..f7cdd23 100755 --- a/plugins/MacAU/Desk/Desk.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Desk/Desk.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>810</integer> + <integer>810</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>531 308 810 487 0 0 1440 878 </string> + <string>516 308 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,10 +350,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D73AA1F7F984A007AB60F</string> + <string>8B792A8E21F35FEC006E9731</string> <key>history</key> <array> - <string>8B9D64341F7C8495007AB60F</string> + <string>8B792A8921F35FDB006E9731</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +367,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 69}}</string> + <string>{{0, 0}, {603, 51}}</string> <key>RubberWindowFrame</key> - <string>531 308 810 487 0 0 1440 878 </string> + <string>516 308 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>69pt</string> + <string>51pt</string> </dict> <dict> <key>Proportion</key> - <string>372pt</string> + <string>390pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +392,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 345}}</string> - <key>RubberWindowFrame</key> - <string>531 308 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 363}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -450,7 +446,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {603, 363}}</string> + <key>RubberWindowFrame</key> + <string>516 308 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -478,11 +476,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D73AB1F7F984A007AB60F</string> + <string>8B792A8F21F35FEC006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D73AC1F7F984A007AB60F</string> + <string>8B792A9021F35FEC006E9731</string> <string>8B3ED5371DDE6344004F9D64</string> - <string>8B9D73AD1F7F984A007AB60F</string> + <string>8B792A9121F35FEC006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +633,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528455754.98853803</real> + <real>569597932.88541305</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,11 +650,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D73AE1F7F984A007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/Desk/Desk.xcodeproj</string> </array> <key>WindowString</key> - <string>531 308 810 487 0 0 1440 878 </string> + <string>516 308 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Desk4/Desk4.cpp b/plugins/MacAU/Desk4/Desk4.cpp index 58dc36f..1fbdca1 100755 --- a/plugins/MacAU/Desk4/Desk4.cpp +++ b/plugins/MacAU/Desk4/Desk4.cpp @@ -204,9 +204,7 @@ void Desk4::Desk4Kernel::Reset() lastSample = 0.0; lastOutSample = 0.0; lastSlew = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -224,9 +222,6 @@ void Desk4::Desk4Kernel::Process( const Float32 *inSourceP, long double overallscale = 1.0; overallscale /= 44100.0; overallscale *= GetSampleRate(); - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; Float64 gain = (pow(GetParameter( kParam_One ),2)*10)+0.0001; Float64 gaintrim = (pow(GetParameter( kParam_One ),2)*2)+1.0; @@ -354,20 +349,11 @@ void Desk4::Desk4Kernel::Process( const Float32 *inSourceP, inputSample = (inputSample * wet) + (drySample * dry); } - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/Desk4/Desk4.h b/plugins/MacAU/Desk4/Desk4.h index a9cc924..8cd0193 100755 --- a/plugins/MacAU/Desk4/Desk4.h +++ b/plugins/MacAU/Desk4/Desk4.h @@ -146,9 +146,7 @@ public: Float64 lastSample; Float64 lastOutSample; Float64 lastSlew; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/Desk4/Desk4.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Desk4/Desk4.xcodeproj/christopherjohnson.pbxuser index 298344e..6ee8f8f 100755 --- a/plugins/MacAU/Desk4/Desk4.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Desk4/Desk4.xcodeproj/christopherjohnson.pbxuser @@ -49,18 +49,18 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528455766; - PBXWorkspaceStateSaveDate = 528455766; + PBXPerProjectTemplateStateSaveDate = 569597965; + PBXWorkspaceStateSaveDate = 569597965; }; perUserProjectItems = { - 8B9D64451F7C84BA007AB60F /* PlistBookmark */ = 8B9D64451F7C84BA007AB60F /* PlistBookmark */; - 8B9D73B91F7F9867007AB60F /* PlistBookmark */ = 8B9D73B91F7F9867007AB60F /* PlistBookmark */; + 8B792A9F21F36063006E9731 /* PlistBookmark */ = 8B792A9F21F36063006E9731 /* PlistBookmark */; + 8B792AA421F36073006E9731 /* PlistBookmark */ = 8B792AA421F36073006E9731 /* PlistBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B9D64451F7C84BA007AB60F /* PlistBookmark */ = { + 8B792A9F21F36063006E9731 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; fallbackIsa = PBXBookmark; @@ -70,9 +70,9 @@ ); name = /Users/christopherjohnson/Desktop/MacAU/Desk4/Info.plist; rLen = 0; - rLoc = 9223372036854775808; + rLoc = 9223372036854775807; }; - 8B9D73B91F7F9867007AB60F /* PlistBookmark */ = { + 8B792AA421F36073006E9731 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; fallbackIsa = PBXBookmark; @@ -81,15 +81,15 @@ CFBundleName, ); name = /Users/christopherjohnson/Desktop/MacAU/Desk4/Info.plist; - rLen = 0; - rLoc = 9223372036854775807; + rLen = 26; + rLoc = 0; }; 8BA05A660720730100365D66 /* Desk4.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {958, 5005}}"; - sepNavSelRange = "{11418, 0}"; - sepNavVisRange = "{11164, 2245}"; - sepNavWindowFrame = "{{435, 39}, {1005, 839}}"; + sepNavIntBoundsRect = "{{0, 0}, {958, 5057}}"; + sepNavSelRange = "{14871, 0}"; + sepNavVisRange = "{13633, 1574}"; + sepNavWindowFrame = "{{330, 39}, {1005, 839}}"; }; }; 8BA05A690720730100365D66 /* Desk4Version.h */ = { @@ -103,9 +103,9 @@ 8BC6025B073B072D006C4272 /* Desk4.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {958, 2054}}"; - sepNavSelRange = "{5655, 120}"; - sepNavVisRange = "{1885, 1865}"; - sepNavWindowFrame = "{{725, 39}, {1005, 839}}"; + sepNavSelRange = "{5798, 0}"; + sepNavVisRange = "{4297, 1611}"; + sepNavWindowFrame = "{{435, 39}, {1005, 839}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/Desk4/Desk4.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Desk4/Desk4.xcodeproj/christopherjohnson.perspectivev3 index e8d84b4..b050245 100755 --- a/plugins/MacAU/Desk4/Desk4.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Desk4/Desk4.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -325,7 +323,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>599 190 841 654 0 0 1440 878 </string> + <string>487 206 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -353,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D73B91F7F9867007AB60F</string> + <string>8B792AA421F36073006E9731</string> <key>history</key> <array> - <string>8B9D64451F7C84BA007AB60F</string> + <string>8B792A9F21F36063006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 188}}</string> + <string>{{0, 0}, {531, 173}}</string> <key>RubberWindowFrame</key> - <string>599 190 841 654 0 0 1440 878 </string> + <string>487 206 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>188pt</string> + <string>173pt</string> </dict> <dict> <key>Proportion</key> - <string>420pt</string> + <string>435pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 393}}</string> - <key>RubberWindowFrame</key> - <string>599 190 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 408}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 315}}</string> + <string>{{10, 27}, {531, 408}}</string> + <key>RubberWindowFrame</key> + <string>487 206 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D73BA1F7F9867007AB60F</string> + <string>8B792AA521F36073006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D73BB1F7F9867007AB60F</string> + <string>8B792AA621F36073006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D73BC1F7F9867007AB60F</string> + <string>8B792AA721F36073006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -656,7 +654,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528455783.26185501</real> + <real>569598067.29641104</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -673,11 +671,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D73BD1F7F9867007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/Desk4/Desk4.xcodeproj</string> </array> <key>WindowString</key> - <string>599 190 841 654 0 0 1440 878 </string> + <string>487 206 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Distance/Distance.cpp b/plugins/MacAU/Distance/Distance.cpp index 72c9e27..35c0a22 100755 --- a/plugins/MacAU/Distance/Distance.cpp +++ b/plugins/MacAU/Distance/Distance.cpp @@ -169,9 +169,7 @@ void Distance::DistanceKernel::Reset() { thirdresult = prevresult = lastclamp = clamp = change = last = 0.0; //just an example - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -204,10 +202,6 @@ void Distance::DistanceKernel::Process( const Float32 *inSourceP, Float64 wet = GetParameter( kParam_Two ); Float64 dry = 1.0-wet; Float64 bridgerectifier; - - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; Float64 inputSample; Float64 drySample; @@ -262,19 +256,11 @@ void Distance::DistanceKernel::Process( const Float32 *inSourceP, if (wet < 1.0) inputSample = (drySample * dry)+(inputSample*wet); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; diff --git a/plugins/MacAU/Distance/Distance.exp b/plugins/MacAU/Distance/Distance.exp index d74c02c..f4b0e52 100755 --- a/plugins/MacAU/Distance/Distance.exp +++ b/plugins/MacAU/Distance/Distance.exp @@ -1 +1 @@ -_DistanceEntry
\ No newline at end of file +_DistanceEntry diff --git a/plugins/MacAU/Distance/Distance.h b/plugins/MacAU/Distance/Distance.h index e1c5af3..cade7a5 100755 --- a/plugins/MacAU/Distance/Distance.h +++ b/plugins/MacAU/Distance/Distance.h @@ -137,10 +137,7 @@ public: Float64 thirdresult; Float64 prevresult; Float64 last; - Float64 fpNShapeA; - Float64 fpNShapeB; - bool fpFlip; - + long double fpNShape; }; }; diff --git a/plugins/MacAU/Distance/Distance.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Distance/Distance.xcodeproj/christopherjohnson.pbxuser index bb0c98b..1979f1e 100755 --- a/plugins/MacAU/Distance/Distance.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Distance/Distance.xcodeproj/christopherjohnson.pbxuser @@ -49,54 +49,62 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 547638606; - PBXWorkspaceStateSaveDate = 547638606; + PBXPerProjectTemplateStateSaveDate = 569598091; + PBXWorkspaceStateSaveDate = 569598091; }; perUserProjectItems = { + 8B792AB521F360EC006E9731 /* PBXTextBookmark */ = 8B792AB521F360EC006E9731 /* PBXTextBookmark */; + 8B792ABB21F36103006E9731 /* PBXTextBookmark */ = 8B792ABB21F36103006E9731 /* PBXTextBookmark */; 8B904CF820A44C4B008CBAD8 /* PBXTextBookmark */ = 8B904CF820A44C4B008CBAD8 /* PBXTextBookmark */; - 8B904D1020A44D87008CBAD8 /* PBXTextBookmark */ = 8B904D1020A44D87008CBAD8 /* PBXTextBookmark */; - 8B904D1120A44D87008CBAD8 /* PBXTextBookmark */ = 8B904D1120A44D87008CBAD8 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B904CF820A44C4B008CBAD8 /* PBXTextBookmark */ = { + 8B792AB521F360EC006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* Distance.h */; - name = "Distance.h: 134"; + fRef = 8BA05A660720730100365D66 /* Distance.cpp */; + name = "Distance.cpp: 255"; rLen = 0; - rLoc = 5367; + rLoc = 11375; rType = 0; - vrLen = 50; - vrLoc = 5335; + vrLen = 0; + vrLoc = 0; }; - 8B904D1020A44D87008CBAD8 /* PBXTextBookmark */ = { + 8B792ABB21F36103006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Distance.cpp */; - name = "Distance.cpp: 261"; + name = "Distance.cpp: 255"; rLen = 0; - rLoc = 11520; + rLoc = 11375; rType = 0; - vrLen = 97; - vrLoc = 10123; + vrLen = 0; + vrLoc = 0; }; - 8B904D1120A44D87008CBAD8 /* PBXTextBookmark */ = { + 8B904CF820A44C4B008CBAD8 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* Distance.cpp */; - name = "Distance.cpp: 261"; + fRef = 8BC6025B073B072D006C4272 /* Distance.h */; + name = "Distance.h: 134"; rLen = 0; - rLoc = 11520; + rLoc = 5367; rType = 0; - vrLen = 97; - vrLoc = 10123; + vrLen = 50; + vrLoc = 5335; }; 8BA05A660720730100365D66 /* Distance.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 3783}}"; - sepNavSelRange = "{11520, 0}"; - sepNavVisRange = "{10123, 97}"; - sepNavWindowFrame = "{{492, 53}, {948, 825}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 3705}}"; + sepNavSelRange = "{11375, 0}"; + sepNavVisRange = "{0, 0}"; + sepNavWindowFrame = "{{394, 53}, {948, 825}}"; + }; + }; + 8BA05A670720730100365D66 /* Distance.exp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1253, 694}}"; + sepNavSelRange = "{15, 0}"; + sepNavVisRange = "{0, 15}"; + sepNavWindowFrame = "{{15, 51}, {1300, 822}}"; }; }; 8BA05A690720730100365D66 /* DistanceVersion.h */ = { @@ -109,9 +117,9 @@ }; 8BC6025B073B072D006C4272 /* Distance.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1098, 1950}}"; - sepNavSelRange = "{5367, 0}"; - sepNavVisRange = "{2035, 1667}"; + sepNavIntBoundsRect = "{{0, 0}, {1098, 1937}}"; + sepNavSelRange = "{5487, 0}"; + sepNavVisRange = "{4077, 1522}"; sepNavWindowFrame = "{{295, 66}, {1145, 812}}"; }; }; diff --git a/plugins/MacAU/Distance/Distance.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Distance/Distance.xcodeproj/christopherjohnson.perspectivev3 index d80f812..2054453 100755 --- a/plugins/MacAU/Distance/Distance.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Distance/Distance.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>4</integer> + <integer>5</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> @@ -324,7 +324,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>630 345 810 487 0 0 1440 878 </string> + <string>493 340 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,11 +352,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B904D1120A44D87008CBAD8</string> + <string>8B792ABB21F36103006E9731</string> <key>history</key> <array> <string>8B904CF820A44C4B008CBAD8</string> - <string>8B904D1020A44D87008CBAD8</string> + <string>8B792AB521F360EC006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 51}}</string> + <string>{{0, 0}, {603, 32}}</string> <key>RubberWindowFrame</key> - <string>630 345 810 487 0 0 1440 878 </string> + <string>493 340 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>51pt</string> + <string>32pt</string> </dict> <dict> <key>Proportion</key> - <string>390pt</string> + <string>409pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 363}}</string> - <key>RubberWindowFrame</key> - <string>630 345 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 382}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {603, 382}}</string> + <key>RubberWindowFrame</key> + <string>493 340 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B904D1220A44D87008CBAD8</string> + <string>8B792ABC21F36103006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B904D1320A44D87008CBAD8</string> + <string>8B792ABD21F36103006E9731</string> <string>8BC5212E1DB3E2E500E72CD6</string> - <string>8B904D1420A44D87008CBAD8</string> + <string>8B792ABE21F36103006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>547638663.51005495</real> + <real>569598211.72343302</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,11 +653,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B904D1520A44D87008CBAD8</string> + <string>8B792ABF21F36103006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/Distance/Distance.xcodeproj</string> </array> <key>WindowString</key> - <string>630 345 810 487 0 0 1440 878 </string> + <string>493 340 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Distance2/Distance2.cpp b/plugins/MacAU/Distance2/Distance2.cpp index d9101d7..ddafb82 100755 --- a/plugins/MacAU/Distance2/Distance2.cpp +++ b/plugins/MacAU/Distance2/Distance2.cpp @@ -359,23 +359,15 @@ void Distance2::Distance2Kernel::Process( const Float32 *inSourceP, } //Dry/Wet control, defaults to the last slider - //noise shaping to 32-bit floating point - Float32 fpTemp = inputSample; - fpNShape += (inputSample-fpTemp); - inputSample += fpNShape; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; } - fpNShape *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacAU/Distance2/Distance2.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Distance2/Distance2.xcodeproj/christopherjohnson.pbxuser index 3d24615..6b4a4a7 100755 --- a/plugins/MacAU/Distance2/Distance2.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Distance2/Distance2.xcodeproj/christopherjohnson.pbxuser @@ -49,20 +49,40 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 547768382; - PBXWorkspaceStateSaveDate = 547768382; + PBXPerProjectTemplateStateSaveDate = 569598233; + PBXWorkspaceStateSaveDate = 569598233; }; perUserProjectItems = { + 8B792ACD21F3615C006E9731 /* PBXTextBookmark */ = 8B792ACD21F3615C006E9731 /* PBXTextBookmark */; + 8B792AD221F3616C006E9731 /* PBXTextBookmark */ = 8B792AD221F3616C006E9731 /* PBXTextBookmark */; 8B7E3D4220A64FFD00482CB5 /* PBXTextBookmark */ = 8B7E3D4220A64FFD00482CB5 /* PBXTextBookmark */; 8B7E3D4320A64FFD00482CB5 /* PBXTextBookmark */ = 8B7E3D4320A64FFD00482CB5 /* PBXTextBookmark */; - 8B7E3D4420A64FFD00482CB5 /* PBXBookmark */ = 8B7E3D4420A64FFD00482CB5 /* PBXBookmark */; - 8B7E3D4520A64FFD00482CB5 /* PBXTextBookmark */ = 8B7E3D4520A64FFD00482CB5 /* PBXTextBookmark */; 8B904DA120A465EC008CBAD8 /* PlistBookmark */ = 8B904DA120A465EC008CBAD8 /* PlistBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B792ACD21F3615C006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Distance2.cpp */; + name = "Distance2.cpp: 176"; + rLen = 0; + rLoc = 8084; + rType = 0; + vrLen = 420; + vrLoc = 10855; + }; + 8B792AD221F3616C006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Distance2.cpp */; + name = "Distance2.cpp: 176"; + rLen = 0; + rLoc = 8084; + rType = 0; + vrLen = 420; + vrLoc = 10855; + }; 8B7E3D4220A64FFD00482CB5 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A690720730100365D66 /* Distance2Version.h */; @@ -83,20 +103,6 @@ vrLen = 375; vrLoc = 2714; }; - 8B7E3D4420A64FFD00482CB5 /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 8BA05A660720730100365D66 /* Distance2.cpp */; - }; - 8B7E3D4520A64FFD00482CB5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* Distance2.cpp */; - name = "Distance2.cpp: 176"; - rLen = 0; - rLoc = 8084; - rType = 0; - vrLen = 476; - vrLoc = 10855; - }; 8B904DA120A465EC008CBAD8 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; @@ -111,10 +117,10 @@ }; 8BA05A660720730100365D66 /* Distance2.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {642, 4979}}"; + sepNavIntBoundsRect = "{{0, 0}, {572, 4875}}"; sepNavSelRange = "{8084, 0}"; - sepNavVisRange = "{10855, 476}"; - sepNavWindowFrame = "{{561, 47}, {877, 831}}"; + sepNavVisRange = "{10855, 420}"; + sepNavWindowFrame = "{{432, 47}, {877, 831}}"; }; }; 8BA05A670720730100365D66 /* Distance2.exp */ = { @@ -135,10 +141,10 @@ }; 8BC6025B073B072D006C4272 /* Distance2.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {824, 2210}}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 2223}}"; sepNavSelRange = "{2966, 0}"; - sepNavVisRange = "{2714, 375}"; - sepNavWindowFrame = "{{786, 47}, {877, 831}}"; + sepNavVisRange = "{4877, 1321}"; + sepNavWindowFrame = "{{563, 47}, {877, 831}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/Distance2/Distance2.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Distance2/Distance2.xcodeproj/christopherjohnson.perspectivev3 index 5d06e6f..deed33a 100755 --- a/plugins/MacAU/Distance2/Distance2.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Distance2/Distance2.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -326,7 +324,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>576 144 841 654 0 0 1440 878 </string> + <string>487 174 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -354,13 +352,13 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B7E3D4520A64FFD00482CB5</string> + <string>8B792AD221F3616C006E9731</string> <key>history</key> <array> <string>8B904DA120A465EC008CBAD8</string> <string>8B7E3D4220A64FFD00482CB5</string> <string>8B7E3D4320A64FFD00482CB5</string> - <string>8B7E3D4420A64FFD00482CB5</string> + <string>8B792ACD21F3615C006E9731</string> </array> </dict> <key>SplitCount</key> @@ -374,18 +372,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 202}}</string> + <string>{{0, 0}, {531, 188}}</string> <key>RubberWindowFrame</key> - <string>576 144 841 654 0 0 1440 878 </string> + <string>487 174 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>202pt</string> + <string>188pt</string> </dict> <dict> <key>Proportion</key> - <string>406pt</string> + <string>420pt</string> <key>Tabs</key> <array> <dict> @@ -399,9 +397,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 379}}</string> - <key>RubberWindowFrame</key> - <string>576 144 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 393}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -455,7 +451,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 339}}</string> + <string>{{10, 27}, {531, 393}}</string> + <key>RubberWindowFrame</key> + <string>487 174 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -483,11 +481,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B7E3D4620A64FFD00482CB5</string> + <string>8B792AD321F3616C006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B7E3D4720A64FFD00482CB5</string> + <string>8B792AD421F3616C006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B7E3D4820A64FFD00482CB5</string> + <string>8B792AD521F3616C006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -660,7 +658,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>547770365.68357301</real> + <real>569598316.742221</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -680,7 +678,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/Distance2/Distance2.xcodeproj</string> </array> <key>WindowString</key> - <string>576 144 841 654 0 0 1440 878 </string> + <string>487 174 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/DitherFloat/DitherFloat.cpp b/plugins/MacAU/DitherFloat/DitherFloat.cpp new file mode 100755 index 0000000..7939fbe --- /dev/null +++ b/plugins/MacAU/DitherFloat/DitherFloat.cpp @@ -0,0 +1,255 @@ +/* +* File: DitherFloat.cpp +* +* Version: 1.0 +* +* Created: 1/11/19 +* +* Copyright: Copyright © 2019 Airwindows, All Rights Reserved +* +* Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in +* consideration of your agreement to the following terms, and your use, installation, modification +* or redistribution of this Apple software constitutes acceptance of these terms. If you do +* not agree with these terms, please do not use, install, modify or redistribute this Apple +* software. +* +* In consideration of your agreement to abide by the following terms, and subject to these terms, +* Apple grants you a personal, non-exclusive license, under Apple's copyrights in this +* original Apple software (the "Apple Software"), to use, reproduce, modify and redistribute the +* Apple Software, with or without modifications, in source and/or binary forms; provided that if you +* redistribute the Apple Software in its entirety and without modifications, you must retain this +* notice and the following text and disclaimers in all such redistributions of the Apple Software. +* Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to +* endorse or promote products derived from the Apple Software without specific prior written +* permission from Apple. Except as expressly stated in this notice, no other rights or +* licenses, express or implied, are granted by Apple herein, including but not limited to any +* patent rights that may be infringed by your derivative works or by other works in which the +* Apple Software may be incorporated. +* +* The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR +* IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY +* AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE +* OR IN COMBINATION WITH YOUR PRODUCTS. +* +* IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, +* REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER +* UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN +* IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +*/ +/*============================================================================= + DitherFloat.cpp + +=============================================================================*/ +#include "DitherFloat.h" + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +COMPONENT_ENTRY(DitherFloat) + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// DitherFloat::DitherFloat +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +DitherFloat::DitherFloat(AudioUnit component) + : AUEffectBase(component) +{ + CreateElements(); + Globals()->UseIndexedParameters(kNumberOfParameters); + SetParameter(kParam_One, kDefaultValue_ParamOne ); + SetParameter(kParam_Two, kDefaultValue_ParamTwo ); + +#if AU_DEBUG_DISPATCHER + mDebugDispatcher = new AUDebugDispatcher (this); +#endif + +} + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// DitherFloat::GetParameterValueStrings +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +ComponentResult DitherFloat::GetParameterValueStrings(AudioUnitScope inScope, + AudioUnitParameterID inParameterID, + CFArrayRef * outStrings) +{ + + return kAudioUnitErr_InvalidProperty; +} + + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// DitherFloat::GetParameterInfo +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +ComponentResult DitherFloat::GetParameterInfo(AudioUnitScope inScope, + AudioUnitParameterID inParameterID, + AudioUnitParameterInfo &outParameterInfo ) +{ + ComponentResult result = noErr; + + outParameterInfo.flags = kAudioUnitParameterFlag_IsWritable + | kAudioUnitParameterFlag_IsReadable; + + if (inScope == kAudioUnitScope_Global) { + switch(inParameterID) + { + case kParam_One: + AUBase::FillInParameterName (outParameterInfo, kParameterOneName, false); + outParameterInfo.unit = kAudioUnitParameterUnit_Indexed; + outParameterInfo.minValue = 0.0; + outParameterInfo.maxValue = 32.0; + outParameterInfo.defaultValue = kDefaultValue_ParamOne; + break; + case kParam_Two: + AUBase::FillInParameterName (outParameterInfo, kParameterTwoName, false); + outParameterInfo.unit = kAudioUnitParameterUnit_Generic; + outParameterInfo.minValue = 0.0; + outParameterInfo.maxValue = 1.0; + outParameterInfo.defaultValue = kDefaultValue_ParamTwo; + break; + default: + result = kAudioUnitErr_InvalidParameter; + break; + } + } else { + result = kAudioUnitErr_InvalidParameter; + } + + + + return result; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// DitherFloat::GetPropertyInfo +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +ComponentResult DitherFloat::GetPropertyInfo (AudioUnitPropertyID inID, + AudioUnitScope inScope, + AudioUnitElement inElement, + UInt32 & outDataSize, + Boolean & outWritable) +{ + return AUEffectBase::GetPropertyInfo (inID, inScope, inElement, outDataSize, outWritable); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// DitherFloat::GetProperty +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +ComponentResult DitherFloat::GetProperty( AudioUnitPropertyID inID, + AudioUnitScope inScope, + AudioUnitElement inElement, + void * outData ) +{ + return AUEffectBase::GetProperty (inID, inScope, inElement, outData); +} + +// DitherFloat::Initialize +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +ComponentResult DitherFloat::Initialize() +{ + ComponentResult result = AUEffectBase::Initialize(); + if (result == noErr) + Reset(kAudioUnitScope_Global, 0); + return result; +} + +#pragma mark ____DitherFloatEffectKernel + + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// DitherFloat::DitherFloatKernel::Reset() +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +void DitherFloat::DitherFloatKernel::Reset() +{ + fpNShape = 0.0; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// DitherFloat::DitherFloatKernel::Process +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +void DitherFloat::DitherFloatKernel::Process( const Float32 *inSourceP, + Float32 *inDestP, + UInt32 inFramesToProcess, + UInt32 inNumChannels, + bool &ioSilence ) +{ + UInt32 nSampleFrames = inFramesToProcess; + const Float32 *sourceP = inSourceP; + Float32 *destP = inDestP; + long double overallscale = 1.0; + overallscale /= 44100.0; + overallscale *= GetSampleRate(); + + int floatOffset = GetParameter( kParam_One ); + long double blend = GetParameter( kParam_Two ); + + long double gain = 0; + + switch (floatOffset) + { + case 0: gain = 1.0; break; + case 1: gain = 2.0; break; + case 2: gain = 4.0; break; + case 3: gain = 8.0; break; + case 4: gain = 16.0; break; + case 5: gain = 32.0; break; + case 6: gain = 64.0; break; + case 7: gain = 128.0; break; + case 8: gain = 256.0; break; + case 9: gain = 512.0; break; + case 10: gain = 1024.0; break; + case 11: gain = 2048.0; break; + case 12: gain = 4096.0; break; + case 13: gain = 8192.0; break; + case 14: gain = 16384.0; break; + case 15: gain = 32768.0; break; + case 16: gain = 65536.0; break; + case 17: gain = 131072.0; break; + case 18: gain = 262144.0; break; + case 19: gain = 524288.0; break; + case 20: gain = 1048576.0; break; + case 21: gain = 2097152.0; break; + case 22: gain = 4194304.0; break; + case 23: gain = 8388608.0; break; + case 24: gain = 16777216.0; break; + case 25: gain = 33554432.0; break; + case 26: gain = 67108864.0; break; + case 27: gain = 134217728.0; break; + case 28: gain = 268435456.0; break; + case 29: gain = 536870912.0; break; + case 30: gain = 1073741824.0; break; + case 31: gain = 2147483648.0; break; + case 32: gain = 4294967296.0; break; + } + //we are directly punching in the gain values rather than calculating them + + while (nSampleFrames-- > 0) { + long double inputSample = *sourceP + (gain-1); //this offsets the float into total truncation-land. + + + + + + + //begin 32 bit floating point dither + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit floating point dither + + + + + + inputSample = (Float32)inputSample; //equivalent of 'floor' for 32 bit floating point + //We do that separately, we're truncating to floating point WHILE heavily offset. + + *destP = inputSample - (gain-1); //this de-offsets the float. + sourceP += inNumChannels; destP += inNumChannels; + } +} + diff --git a/plugins/MacAU/DitherFloat/DitherFloat.exp b/plugins/MacAU/DitherFloat/DitherFloat.exp new file mode 100755 index 0000000..3dcb049 --- /dev/null +++ b/plugins/MacAU/DitherFloat/DitherFloat.exp @@ -0,0 +1 @@ +_DitherFloatEntry diff --git a/plugins/MacAU/DitherFloat/DitherFloat.h b/plugins/MacAU/DitherFloat/DitherFloat.h new file mode 100755 index 0000000..0eea62e --- /dev/null +++ b/plugins/MacAU/DitherFloat/DitherFloat.h @@ -0,0 +1,138 @@ +/* +* File: DitherFloat.h +* +* Version: 1.0 +* +* Created: 1/11/19 +* +* Copyright: Copyright © 2019 Airwindows, All Rights Reserved +* +* Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in +* consideration of your agreement to the following terms, and your use, installation, modification +* or redistribution of this Apple software constitutes acceptance of these terms. If you do +* not agree with these terms, please do not use, install, modify or redistribute this Apple +* software. +* +* In consideration of your agreement to abide by the following terms, and subject to these terms, +* Apple grants you a personal, non-exclusive license, under Apple's copyrights in this +* original Apple software (the "Apple Software"), to use, reproduce, modify and redistribute the +* Apple Software, with or without modifications, in source and/or binary forms; provided that if you +* redistribute the Apple Software in its entirety and without modifications, you must retain this +* notice and the following text and disclaimers in all such redistributions of the Apple Software. +* Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to +* endorse or promote products derived from the Apple Software without specific prior written +* permission from Apple. Except as expressly stated in this notice, no other rights or +* licenses, express or implied, are granted by Apple herein, including but not limited to any +* patent rights that may be infringed by your derivative works or by other works in which the +* Apple Software may be incorporated. +* +* The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR +* IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY +* AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE +* OR IN COMBINATION WITH YOUR PRODUCTS. +* +* IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, +* REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER +* UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN +* IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +*/ +#include "AUEffectBase.h" +#include "DitherFloatVersion.h" + +#if AU_DEBUG_DISPATCHER + #include "AUDebugDispatcher.h" +#endif + + +#ifndef __DitherFloat_h__ +#define __DitherFloat_h__ + + +#pragma mark ____DitherFloat Parameters + +// parameters +static const float kDefaultValue_ParamOne = 0.0; +static const float kDefaultValue_ParamTwo = 1.0; + +static CFStringRef kParameterOneName = CFSTR("Float Offset"); +static CFStringRef kParameterTwoName = CFSTR("Dither Engage"); +//Alter the name if desired, but using the plugin name is a start + +enum { + kParam_One =0, + kParam_Two =1, + //Add your parameters here... + kNumberOfParameters=2 +}; + +#pragma mark ____DitherFloat +class DitherFloat : public AUEffectBase +{ +public: + DitherFloat(AudioUnit component); +#if AU_DEBUG_DISPATCHER + virtual ~DitherFloat () { delete mDebugDispatcher; } +#endif + + virtual AUKernelBase * NewKernel() { return new DitherFloatKernel(this); } + + virtual ComponentResult GetParameterValueStrings(AudioUnitScope inScope, + AudioUnitParameterID inParameterID, + CFArrayRef * outStrings); + + virtual ComponentResult GetParameterInfo(AudioUnitScope inScope, + AudioUnitParameterID inParameterID, + AudioUnitParameterInfo &outParameterInfo); + + virtual ComponentResult GetPropertyInfo(AudioUnitPropertyID inID, + AudioUnitScope inScope, + AudioUnitElement inElement, + UInt32 & outDataSize, + Boolean & outWritable ); + + virtual ComponentResult GetProperty(AudioUnitPropertyID inID, + AudioUnitScope inScope, + AudioUnitElement inElement, + void * outData); + + virtual ComponentResult Initialize(); + virtual bool SupportsTail () { return true; } + virtual Float64 GetTailTime() {return (1.0/GetSampleRate())*0.0;} //in SECONDS! gsr * a number = in samples + virtual Float64 GetLatency() {return (1.0/GetSampleRate())*0.0;} // in SECONDS! gsr * a number = in samples + + /*! @method Version */ + virtual ComponentResult Version() { return kDitherFloatVersion; } + + + +protected: + class DitherFloatKernel : public AUKernelBase // most of the real work happens here + { +public: + DitherFloatKernel(AUEffectBase *inAudioUnit ) + : AUKernelBase(inAudioUnit) + { + } + + // *Required* overides for the process method for this effect + // processes one channel of interleaved samples + virtual void Process( const Float32 *inSourceP, + Float32 *inDestP, + UInt32 inFramesToProcess, + UInt32 inNumChannels, + bool &ioSilence); + + virtual void Reset(); + + private: + long double fpNShape; + }; +}; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +#endif
\ No newline at end of file diff --git a/plugins/MacAU/DitherFloat/DitherFloat.r b/plugins/MacAU/DitherFloat/DitherFloat.r new file mode 100755 index 0000000..89170e0 --- /dev/null +++ b/plugins/MacAU/DitherFloat/DitherFloat.r @@ -0,0 +1,61 @@ +/* +* File: DitherFloat.r +* +* Version: 1.0 +* +* Created: 1/11/19 +* +* Copyright: Copyright © 2019 Airwindows, All Rights Reserved +* +* Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in +* consideration of your agreement to the following terms, and your use, installation, modification +* or redistribution of this Apple software constitutes acceptance of these terms. If you do +* not agree with these terms, please do not use, install, modify or redistribute this Apple +* software. +* +* In consideration of your agreement to abide by the following terms, and subject to these terms, +* Apple grants you a personal, non-exclusive license, under Apple's copyrights in this +* original Apple software (the "Apple Software"), to use, reproduce, modify and redistribute the +* Apple Software, with or without modifications, in source and/or binary forms; provided that if you +* redistribute the Apple Software in its entirety and without modifications, you must retain this +* notice and the following text and disclaimers in all such redistributions of the Apple Software. +* Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to +* endorse or promote products derived from the Apple Software without specific prior written +* permission from Apple. Except as expressly stated in this notice, no other rights or +* licenses, express or implied, are granted by Apple herein, including but not limited to any +* patent rights that may be infringed by your derivative works or by other works in which the +* Apple Software may be incorporated. +* +* The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR +* IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY +* AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE +* OR IN COMBINATION WITH YOUR PRODUCTS. +* +* IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, +* REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER +* UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN +* IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +*/ +#include <AudioUnit/AudioUnit.r> + +#include "DitherFloatVersion.h" + +// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description +#define kAudioUnitResID_DitherFloat 1000 + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DitherFloat~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +#define RES_ID kAudioUnitResID_DitherFloat +#define COMP_TYPE kAudioUnitType_Effect +#define COMP_SUBTYPE DitherFloat_COMP_SUBTYPE +#define COMP_MANUF DitherFloat_COMP_MANF + +#define VERSION kDitherFloatVersion +#define NAME "Airwindows: DitherFloat" +#define DESCRIPTION "DitherFloat AU" +#define ENTRY_POINT "DitherFloatEntry" + +#include "AUResources.r"
\ No newline at end of file diff --git a/plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.mode1v3 b/plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.mode1v3 new file mode 100755 index 0000000..f301be9 --- /dev/null +++ b/plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.mode1v3 @@ -0,0 +1,1358 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>ActivePerspectiveName</key> + <string>Project</string> + <key>AllowedModules</key> + <array> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXSmartGroupTreeModule</string> + <key>Name</key> + <string>Groups and Files Outline View</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Name</key> + <string>Editor</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>XCTaskListModule</string> + <key>Name</key> + <string>Task List</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>XCDetailModule</string> + <key>Name</key> + <string>File and Smart Group Detail Viewer</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>1</string> + <key>Module</key> + <string>PBXBuildResultsModule</string> + <key>Name</key> + <string>Detailed Build Results Viewer</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>1</string> + <key>Module</key> + <string>PBXProjectFindModule</string> + <key>Name</key> + <string>Project Batch Find Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>XCProjectFormatConflictsModule</string> + <key>Name</key> + <string>Project Format Conflicts List</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXBookmarksModule</string> + <key>Name</key> + <string>Bookmarks Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXClassBrowserModule</string> + <key>Name</key> + <string>Class Browser</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXCVSModule</string> + <key>Name</key> + <string>Source Code Control Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXDebugBreakpointsModule</string> + <key>Name</key> + <string>Debug Breakpoints Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>XCDockableInspector</string> + <key>Name</key> + <string>Inspector</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXOpenQuicklyModule</string> + <key>Name</key> + <string>Open Quickly Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>1</string> + <key>Module</key> + <string>PBXDebugSessionModule</string> + <key>Name</key> + <string>Debugger</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>1</string> + <key>Module</key> + <string>PBXDebugCLIModule</string> + <key>Name</key> + <string>Debug Console</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>XCSnapshotModule</string> + <key>Name</key> + <string>Snapshots Tool</string> + </dict> + </array> + <key>BundlePath</key> + <string>/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources</string> + <key>Description</key> + <string>DefaultDescriptionKey</string> + <key>DockingSystemVisible</key> + <false/> + <key>Extension</key> + <string>mode1v3</string> + <key>FavBarConfig</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>8BD3CCBC148831C90062E48C</string> + <key>XCBarModuleItemNames</key> + <dict/> + <key>XCBarModuleItems</key> + <array/> + </dict> + <key>FirstTimeWindowDisplayed</key> + <false/> + <key>Identifier</key> + <string>com.apple.perspectives.project.mode1v3</string> + <key>MajorVersion</key> + <integer>33</integer> + <key>MinorVersion</key> + <integer>0</integer> + <key>Name</key> + <string>Default</string> + <key>Notifications</key> + <array/> + <key>OpenEditors</key> + <array/> + <key>PerspectiveWidths</key> + <array> + <integer>-1</integer> + <integer>-1</integer> + </array> + <key>Perspectives</key> + <array> + <dict> + <key>ChosenToolbarItems</key> + <array> + <string>active-combo-popup</string> + <string>action</string> + <string>build</string> + <string>debugger-enable-breakpoints</string> + <string>get-info</string> + <string>com.apple.pbx.toolbar.searchfield</string> + </array> + <key>ControllerClassBaseName</key> + <string></string> + <key>IconName</key> + <string>WindowOfProjectWithEditor</string> + <key>Identifier</key> + <string>perspective.project</string> + <key>IsVertical</key> + <false/> + <key>Layout</key> + <array> + <dict> + <key>BecomeActive</key> + <true/> + <key>ContentConfiguration</key> + <dict> + <key>PBXBottomSmartGroupGIDs</key> + <array> + <string>1C37FBAC04509CD000000102</string> + <string>1C37FAAC04509CD000000102</string> + <string>1C37FABC05509CD000000102</string> + <string>1C37FABC05539CD112110102</string> + <string>E2644B35053B69B200211256</string> + <string>1C37FABC04509CD000100104</string> + <string>1CC0EA4004350EF90044410B</string> + <string>1CC0EA4004350EF90041110B</string> + </array> + <key>PBXProjectModuleGUID</key> + <string>1CE0B1FE06471DED0097A5F4</string> + <key>PBXProjectModuleLabel</key> + <string>Files</string> + <key>PBXProjectStructureProvided</key> + <string>yes</string> + <key>PBXSmartGroupTreeModuleColumnData</key> + <dict> + <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> + <array> + <real>186</real> + </array> + <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> + <array> + <string>MainColumn</string> + </array> + </dict> + <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> + <dict> + <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> + <array> + <string>089C166AFE841209C02AAC07</string> + <string>08FB77ADFE841716C02AAC07</string> + <string>8BA05AEB0720742700365D66</string> + <string>1C37FBAC04509CD000000102</string> + <string>1C37FABC05509CD000000102</string> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> + <array> + <array> + <integer>20</integer> + <integer>19</integer> + </array> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> + <string>{{0, 0}, {186, 445}}</string> + </dict> + <key>PBXTopSmartGroupGIDs</key> + <array/> + <key>XCIncludePerspectivesSwitch</key> + <true/> + <key>XCSharingToken</key> + <string>com.apple.Xcode.GFSharingToken</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {203, 463}}</string> + <key>GroupTreeTableConfiguration</key> + <array> + <string>MainColumn</string> + <real>186</real> + </array> + <key>RubberWindowFrame</key> + <string>203 321 788 504 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXSmartGroupTreeModule</string> + <key>Proportion</key> + <string>203pt</string> + </dict> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CE0B20306471E060097A5F4</string> + <key>PBXProjectModuleLabel</key> + <string>MyNewFile14.java</string> + <key>PBXSplitModuleInNavigatorKey</key> + <dict> + <key>Split0</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CE0B20406471E060097A5F4</string> + <key>PBXProjectModuleLabel</key> + <string>MyNewFile14.java</string> + </dict> + <key>SplitCount</key> + <string>1</string> + </dict> + <key>StatusBarVisibility</key> + <true/> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {580, 269}}</string> + <key>RubberWindowFrame</key> + <string>203 321 788 504 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>269pt</string> + </dict> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CE0B20506471E060097A5F4</string> + <key>PBXProjectModuleLabel</key> + <string>Detail</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 274}, {580, 189}}</string> + <key>RubberWindowFrame</key> + <string>203 321 788 504 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>XCDetailModule</string> + <key>Proportion</key> + <string>189pt</string> + </dict> + </array> + <key>Proportion</key> + <string>580pt</string> + </dict> + </array> + <key>Name</key> + <string>Project</string> + <key>ServiceClasses</key> + <array> + <string>XCModuleDock</string> + <string>PBXSmartGroupTreeModule</string> + <string>XCModuleDock</string> + <string>PBXNavigatorGroup</string> + <string>XCDetailModule</string> + </array> + <key>TableOfContents</key> + <array> + <string>8B563EC9161B5E170067FE32</string> + <string>1CE0B1FE06471DED0097A5F4</string> + <string>8B563ECA161B5E170067FE32</string> + <string>1CE0B20306471E060097A5F4</string> + <string>1CE0B20506471E060097A5F4</string> + </array> + <key>ToolbarConfigUserDefaultsMinorVersion</key> + <string>2</string> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.defaultV3</string> + </dict> + <dict> + <key>ControllerClassBaseName</key> + <string></string> + <key>IconName</key> + <string>WindowOfProject</string> + <key>Identifier</key> + <string>perspective.morph</string> + <key>IsVertical</key> + <integer>0</integer> + <key>Layout</key> + <array> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>PBXBottomSmartGroupGIDs</key> + <array> + <string>1C37FBAC04509CD000000102</string> + <string>1C37FAAC04509CD000000102</string> + <string>1C08E77C0454961000C914BD</string> + <string>1C37FABC05509CD000000102</string> + <string>1C37FABC05539CD112110102</string> + <string>E2644B35053B69B200211256</string> + <string>1C37FABC04509CD000100104</string> + <string>1CC0EA4004350EF90044410B</string> + <string>1CC0EA4004350EF90041110B</string> + </array> + <key>PBXProjectModuleGUID</key> + <string>11E0B1FE06471DED0097A5F4</string> + <key>PBXProjectModuleLabel</key> + <string>Files</string> + <key>PBXProjectStructureProvided</key> + <string>yes</string> + <key>PBXSmartGroupTreeModuleColumnData</key> + <dict> + <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> + <array> + <real>186</real> + </array> + <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> + <array> + <string>MainColumn</string> + </array> + </dict> + <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> + <dict> + <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> + <array> + <string>29B97314FDCFA39411CA2CEA</string> + <string>1C37FABC05509CD000000102</string> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> + <array> + <array> + <integer>0</integer> + </array> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> + <string>{{0, 0}, {186, 337}}</string> + </dict> + <key>PBXTopSmartGroupGIDs</key> + <array/> + <key>XCIncludePerspectivesSwitch</key> + <integer>1</integer> + <key>XCSharingToken</key> + <string>com.apple.Xcode.GFSharingToken</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {203, 355}}</string> + <key>GroupTreeTableConfiguration</key> + <array> + <string>MainColumn</string> + <real>186</real> + </array> + <key>RubberWindowFrame</key> + <string>373 269 690 397 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXSmartGroupTreeModule</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Morph</string> + <key>PreferredWidth</key> + <integer>300</integer> + <key>ServiceClasses</key> + <array> + <string>XCModuleDock</string> + <string>PBXSmartGroupTreeModule</string> + </array> + <key>TableOfContents</key> + <array> + <string>11E0B1FE06471DED0097A5F4</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.default.shortV3</string> + </dict> + </array> + <key>PerspectivesBarVisible</key> + <false/> + <key>ShelfIsVisible</key> + <false/> + <key>SourceDescription</key> + <string>file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec'</string> + <key>StatusbarIsVisible</key> + <true/> + <key>TimeStamp</key> + <real>0.0</real> + <key>ToolbarConfigUserDefaultsMinorVersion</key> + <string>2</string> + <key>ToolbarDisplayMode</key> + <integer>1</integer> + <key>ToolbarIsVisible</key> + <true/> + <key>ToolbarSizeMode</key> + <integer>2</integer> + <key>Type</key> + <string>Perspectives</string> + <key>UpdateMessage</key> + <string>The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'?</string> + <key>WindowJustification</key> + <integer>5</integer> + <key>WindowOrderList</key> + <array> + <string>8BD3CCBD148831C90062E48C</string> + <string>/Developer/Library/Xcode/Project Templates/System Plug-in/Audio Unit Effect/Audio Unit Effect/StarterAU.xcodeproj</string> + </array> + <key>WindowString</key> + <string>203 321 788 504 0 0 1440 878 </string> + <key>WindowToolsV3</key> + <array> + <dict> + <key>FirstTimeWindowDisplayed</key> + <false/> + <key>Identifier</key> + <string>windowTool.build</string> + <key>IsVertical</key> + <true/> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CD0528F0623707200166675</string> + <key>PBXProjectModuleLabel</key> + <string></string> + <key>StatusBarVisibility</key> + <true/> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {500, 218}}</string> + <key>RubberWindowFrame</key> + <string>668 222 500 500 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>218pt</string> + </dict> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>XCMainBuildResultsModuleGUID</string> + <key>PBXProjectModuleLabel</key> + <string>Build Results</string> + <key>XCBuildResultsTrigger_Collapse</key> + <integer>1021</integer> + <key>XCBuildResultsTrigger_Open</key> + <integer>1011</integer> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 223}, {500, 236}}</string> + <key>RubberWindowFrame</key> + <string>668 222 500 500 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXBuildResultsModule</string> + <key>Proportion</key> + <string>236pt</string> + </dict> + </array> + <key>Proportion</key> + <string>459pt</string> + </dict> + </array> + <key>Name</key> + <string>Build Results</string> + <key>ServiceClasses</key> + <array> + <string>PBXBuildResultsModule</string> + </array> + <key>StatusbarIsVisible</key> + <true/> + <key>TableOfContents</key> + <array> + <string>8BD3CCBD148831C90062E48C</string> + <string>8B563ECB161B5E170067FE32</string> + <string>1CD0528F0623707200166675</string> + <string>XCMainBuildResultsModuleGUID</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.buildV3</string> + <key>WindowContentMinSize</key> + <string>486 300</string> + <key>WindowString</key> + <string>668 222 500 500 0 0 1440 878 </string> + <key>WindowToolGUID</key> + <string>8BD3CCBD148831C90062E48C</string> + <key>WindowToolIsVisible</key> + <false/> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.debugger</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>Debugger</key> + <dict> + <key>HorizontalSplitView</key> + <dict> + <key>_collapsingFrameDimension</key> + <real>0.0</real> + <key>_indexOfCollapsedView</key> + <integer>0</integer> + <key>_percentageOfCollapsedView</key> + <real>0.0</real> + <key>isCollapsed</key> + <string>yes</string> + <key>sizes</key> + <array> + <string>{{0, 0}, {317, 164}}</string> + <string>{{317, 0}, {377, 164}}</string> + </array> + </dict> + <key>VerticalSplitView</key> + <dict> + <key>_collapsingFrameDimension</key> + <real>0.0</real> + <key>_indexOfCollapsedView</key> + <integer>0</integer> + <key>_percentageOfCollapsedView</key> + <real>0.0</real> + <key>isCollapsed</key> + <string>yes</string> + <key>sizes</key> + <array> + <string>{{0, 0}, {694, 164}}</string> + <string>{{0, 164}, {694, 216}}</string> + </array> + </dict> + </dict> + <key>LauncherConfigVersion</key> + <string>8</string> + <key>PBXProjectModuleGUID</key> + <string>1C162984064C10D400B95A72</string> + <key>PBXProjectModuleLabel</key> + <string>Debug - GLUTExamples (Underwater)</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>DebugConsoleDrawerSize</key> + <string>{100, 120}</string> + <key>DebugConsoleVisible</key> + <string>None</string> + <key>DebugConsoleWindowFrame</key> + <string>{{200, 200}, {500, 300}}</string> + <key>DebugSTDIOWindowFrame</key> + <string>{{200, 200}, {500, 300}}</string> + <key>Frame</key> + <string>{{0, 0}, {694, 380}}</string> + <key>RubberWindowFrame</key> + <string>321 238 694 422 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXDebugSessionModule</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Debugger</string> + <key>ServiceClasses</key> + <array> + <string>PBXDebugSessionModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1CD10A99069EF8BA00B06720</string> + <string>1C0AD2AB069F1E9B00FABCE6</string> + <string>1C162984064C10D400B95A72</string> + <string>1C0AD2AC069F1E9B00FABCE6</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.debugV3</string> + <key>WindowString</key> + <string>321 238 694 422 0 0 1440 878 </string> + <key>WindowToolGUID</key> + <string>1CD10A99069EF8BA00B06720</string> + <key>WindowToolIsVisible</key> + <integer>0</integer> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.find</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CDD528C0622207200134675</string> + <key>PBXProjectModuleLabel</key> + <string><No Editor></string> + <key>PBXSplitModuleInNavigatorKey</key> + <dict> + <key>Split0</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CD0528D0623707200166675</string> + </dict> + <key>SplitCount</key> + <string>1</string> + </dict> + <key>StatusBarVisibility</key> + <integer>1</integer> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {781, 167}}</string> + <key>RubberWindowFrame</key> + <string>62 385 781 470 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>781pt</string> + </dict> + </array> + <key>Proportion</key> + <string>50%</string> + </dict> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CD0528E0623707200166675</string> + <key>PBXProjectModuleLabel</key> + <string>Project Find</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{8, 0}, {773, 254}}</string> + <key>RubberWindowFrame</key> + <string>62 385 781 470 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXProjectFindModule</string> + <key>Proportion</key> + <string>50%</string> + </dict> + </array> + <key>Proportion</key> + <string>428pt</string> + </dict> + </array> + <key>Name</key> + <string>Project Find</string> + <key>ServiceClasses</key> + <array> + <string>PBXProjectFindModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1C530D57069F1CE1000CFCEE</string> + <string>1C530D58069F1CE1000CFCEE</string> + <string>1C530D59069F1CE1000CFCEE</string> + <string>1CDD528C0622207200134675</string> + <string>1C530D5A069F1CE1000CFCEE</string> + <string>1CE0B1FE06471DED0097A5F4</string> + <string>1CD0528E0623707200166675</string> + </array> + <key>WindowString</key> + <string>62 385 781 470 0 0 1440 878 </string> + <key>WindowToolGUID</key> + <string>1C530D57069F1CE1000CFCEE</string> + <key>WindowToolIsVisible</key> + <integer>0</integer> + </dict> + <dict> + <key>Identifier</key> + <string>MENUSEPARATOR</string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.debuggerConsole</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1C78EAAC065D492600B07095</string> + <key>PBXProjectModuleLabel</key> + <string>Debugger Console</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {650, 250}}</string> + <key>RubberWindowFrame</key> + <string>516 632 650 250 0 0 1680 1027 </string> + </dict> + <key>Module</key> + <string>PBXDebugCLIModule</string> + <key>Proportion</key> + <string>209pt</string> + </dict> + </array> + <key>Proportion</key> + <string>209pt</string> + </dict> + </array> + <key>Name</key> + <string>Debugger Console</string> + <key>ServiceClasses</key> + <array> + <string>PBXDebugCLIModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1C78EAAD065D492600B07095</string> + <string>1C78EAAE065D492600B07095</string> + <string>1C78EAAC065D492600B07095</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.consoleV3</string> + <key>WindowString</key> + <string>650 41 650 250 0 0 1280 1002 </string> + <key>WindowToolGUID</key> + <string>1C78EAAD065D492600B07095</string> + <key>WindowToolIsVisible</key> + <integer>0</integer> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.snapshots</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>Module</key> + <string>XCSnapshotModule</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Snapshots</string> + <key>ServiceClasses</key> + <array> + <string>XCSnapshotModule</string> + </array> + <key>StatusbarIsVisible</key> + <string>Yes</string> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.snapshots</string> + <key>WindowString</key> + <string>315 824 300 550 0 0 1440 878 </string> + <key>WindowToolIsVisible</key> + <string>Yes</string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.scm</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1C78EAB2065D492600B07095</string> + <key>PBXProjectModuleLabel</key> + <string><No Editor></string> + <key>PBXSplitModuleInNavigatorKey</key> + <dict> + <key>Split0</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1C78EAB3065D492600B07095</string> + </dict> + <key>SplitCount</key> + <string>1</string> + </dict> + <key>StatusBarVisibility</key> + <integer>1</integer> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {452, 0}}</string> + <key>RubberWindowFrame</key> + <string>743 379 452 308 0 0 1280 1002 </string> + </dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>0pt</string> + </dict> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CD052920623707200166675</string> + <key>PBXProjectModuleLabel</key> + <string>SCM</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>ConsoleFrame</key> + <string>{{0, 259}, {452, 0}}</string> + <key>Frame</key> + <string>{{0, 7}, {452, 259}}</string> + <key>RubberWindowFrame</key> + <string>743 379 452 308 0 0 1280 1002 </string> + <key>TableConfiguration</key> + <array> + <string>Status</string> + <real>30</real> + <string>FileName</string> + <real>199</real> + <string>Path</string> + <real>197.0950012207031</real> + </array> + <key>TableFrame</key> + <string>{{0, 0}, {452, 250}}</string> + </dict> + <key>Module</key> + <string>PBXCVSModule</string> + <key>Proportion</key> + <string>262pt</string> + </dict> + </array> + <key>Proportion</key> + <string>266pt</string> + </dict> + </array> + <key>Name</key> + <string>SCM</string> + <key>ServiceClasses</key> + <array> + <string>PBXCVSModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1C78EAB4065D492600B07095</string> + <string>1C78EAB5065D492600B07095</string> + <string>1C78EAB2065D492600B07095</string> + <string>1CD052920623707200166675</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.scm</string> + <key>WindowString</key> + <string>743 379 452 308 0 0 1280 1002 </string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.breakpoints</string> + <key>IsVertical</key> + <integer>0</integer> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>PBXBottomSmartGroupGIDs</key> + <array> + <string>1C77FABC04509CD000000102</string> + </array> + <key>PBXProjectModuleGUID</key> + <string>1CE0B1FE06471DED0097A5F4</string> + <key>PBXProjectModuleLabel</key> + <string>Files</string> + <key>PBXProjectStructureProvided</key> + <string>no</string> + <key>PBXSmartGroupTreeModuleColumnData</key> + <dict> + <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> + <array> + <real>168</real> + </array> + <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> + <array> + <string>MainColumn</string> + </array> + </dict> + <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> + <dict> + <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> + <array> + <string>1C77FABC04509CD000000102</string> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> + <array> + <array> + <integer>0</integer> + </array> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> + <string>{{0, 0}, {168, 350}}</string> + </dict> + <key>PBXTopSmartGroupGIDs</key> + <array/> + <key>XCIncludePerspectivesSwitch</key> + <integer>0</integer> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {185, 368}}</string> + <key>GroupTreeTableConfiguration</key> + <array> + <string>MainColumn</string> + <real>168</real> + </array> + <key>RubberWindowFrame</key> + <string>315 424 744 409 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXSmartGroupTreeModule</string> + <key>Proportion</key> + <string>185pt</string> + </dict> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CA1AED706398EBD00589147</string> + <key>PBXProjectModuleLabel</key> + <string>Detail</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{190, 0}, {554, 368}}</string> + <key>RubberWindowFrame</key> + <string>315 424 744 409 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>XCDetailModule</string> + <key>Proportion</key> + <string>554pt</string> + </dict> + </array> + <key>Proportion</key> + <string>368pt</string> + </dict> + </array> + <key>MajorVersion</key> + <integer>3</integer> + <key>MinorVersion</key> + <integer>0</integer> + <key>Name</key> + <string>Breakpoints</string> + <key>ServiceClasses</key> + <array> + <string>PBXSmartGroupTreeModule</string> + <string>XCDetailModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1CDDB66807F98D9800BB5817</string> + <string>1CDDB66907F98D9800BB5817</string> + <string>1CE0B1FE06471DED0097A5F4</string> + <string>1CA1AED706398EBD00589147</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.breakpointsV3</string> + <key>WindowString</key> + <string>315 424 744 409 0 0 1440 878 </string> + <key>WindowToolGUID</key> + <string>1CDDB66807F98D9800BB5817</string> + <key>WindowToolIsVisible</key> + <integer>1</integer> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.debugAnimator</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Debug Visualizer</string> + <key>ServiceClasses</key> + <array> + <string>PBXNavigatorGroup</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.debugAnimatorV3</string> + <key>WindowString</key> + <string>100 100 700 500 0 0 1280 1002 </string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.bookmarks</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>Module</key> + <string>PBXBookmarksModule</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Bookmarks</string> + <key>ServiceClasses</key> + <array> + <string>PBXBookmarksModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>0</integer> + <key>WindowString</key> + <string>538 42 401 187 0 0 1280 1002 </string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.projectFormatConflicts</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>Module</key> + <string>XCProjectFormatConflictsModule</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Project Format Conflicts</string> + <key>ServiceClasses</key> + <array> + <string>XCProjectFormatConflictsModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>0</integer> + <key>WindowContentMinSize</key> + <string>450 300</string> + <key>WindowString</key> + <string>50 850 472 307 0 0 1440 877</string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.classBrowser</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>OptionsSetName</key> + <string>Hierarchy, all classes</string> + <key>PBXProjectModuleGUID</key> + <string>1CA6456E063B45B4001379D8</string> + <key>PBXProjectModuleLabel</key> + <string>Class Browser - NSObject</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>ClassesFrame</key> + <string>{{0, 0}, {374, 96}}</string> + <key>ClassesTreeTableConfiguration</key> + <array> + <string>PBXClassNameColumnIdentifier</string> + <real>208</real> + <string>PBXClassBookColumnIdentifier</string> + <real>22</real> + </array> + <key>Frame</key> + <string>{{0, 0}, {630, 331}}</string> + <key>MembersFrame</key> + <string>{{0, 105}, {374, 395}}</string> + <key>MembersTreeTableConfiguration</key> + <array> + <string>PBXMemberTypeIconColumnIdentifier</string> + <real>22</real> + <string>PBXMemberNameColumnIdentifier</string> + <real>216</real> + <string>PBXMemberTypeColumnIdentifier</string> + <real>97</real> + <string>PBXMemberBookColumnIdentifier</string> + <real>22</real> + </array> + <key>PBXModuleWindowStatusBarHidden2</key> + <integer>1</integer> + <key>RubberWindowFrame</key> + <string>385 179 630 352 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXClassBrowserModule</string> + <key>Proportion</key> + <string>332pt</string> + </dict> + </array> + <key>Proportion</key> + <string>332pt</string> + </dict> + </array> + <key>Name</key> + <string>Class Browser</string> + <key>ServiceClasses</key> + <array> + <string>PBXClassBrowserModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>0</integer> + <key>TableOfContents</key> + <array> + <string>1C0AD2AF069F1E9B00FABCE6</string> + <string>1C0AD2B0069F1E9B00FABCE6</string> + <string>1CA6456E063B45B4001379D8</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.classbrowser</string> + <key>WindowString</key> + <string>385 179 630 352 0 0 1440 878 </string> + <key>WindowToolGUID</key> + <string>1C0AD2AF069F1E9B00FABCE6</string> + <key>WindowToolIsVisible</key> + <integer>0</integer> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.refactoring</string> + <key>IncludeInToolsMenu</key> + <integer>0</integer> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{0, 0}, {500, 335}</string> + <key>RubberWindowFrame</key> + <string>{0, 0}, {500, 335}</string> + </dict> + <key>Module</key> + <string>XCRefactoringModule</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Refactoring</string> + <key>ServiceClasses</key> + <array> + <string>XCRefactoringModule</string> + </array> + <key>WindowString</key> + <string>200 200 500 356 0 0 1920 1200 </string> + </dict> + </array> +</dict> +</plist> diff --git a/plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.pbxuser new file mode 100755 index 0000000..b851c08 --- /dev/null +++ b/plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.pbxuser @@ -0,0 +1,131 @@ +// !$*UTF8*$! +{ + 089C1669FE841209C02AAC07 /* Project object */ = { + activeBuildConfigurationName = Release; + activeTarget = 8D01CCC60486CAD60068D4B7 /* DitherFloat */; + codeSenseManager = 8BD3CCB9148830B20062E48C /* Code sense */; + perUserDictionary = { + PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 292, + 20, + 48, + 43, + 43, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + PBXFileDataSource_Target_ColumnID, + ); + }; + PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 252, + 60, + 20, + 48, + 43, + 43, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXTargetDataSource_PrimaryAttribute, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + ); + }; + PBXPerProjectTemplateStateSaveDate = 569802726; + PBXWorkspaceStateSaveDate = 569802726; + }; + perUserProjectItems = { + 8BEF85AB21F6801300FEF113 /* PlistBookmark */ = 8BEF85AB21F6801300FEF113 /* PlistBookmark */; + 8BEF85AC21F6801300FEF113 /* PBXBookmark */ = 8BEF85AC21F6801300FEF113 /* PBXBookmark */; + 8BEF85AD21F6801300FEF113 /* PBXTextBookmark */ = 8BEF85AD21F6801300FEF113 /* PBXTextBookmark */; + }; + sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; + userBuildSettings = { + }; + }; + 8BA05A660720730100365D66 /* DitherFloat.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1048, 3588}}"; + sepNavSelRange = "{10182, 58}"; + sepNavVisRange = "{9784, 862}"; + sepNavWindowFrame = "{{643, 56}, {1300, 822}}"; + }; + }; + 8BA05A690720730100365D66 /* DitherFloatVersion.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1253, 767}}"; + sepNavSelRange = "{2908, 0}"; + sepNavVisRange = "{54, 2917}"; + sepNavWindowFrame = "{{498, 23}, {1300, 822}}"; + }; + }; + 8BC6025B073B072D006C4272 /* DitherFloat.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1253, 1794}}"; + sepNavSelRange = "{3211, 0}"; + sepNavVisRange = "{2595, 1482}"; + sepNavWindowFrame = "{{717, 56}, {1300, 822}}"; + }; + }; + 8BD3CCB8148830B20062E48C /* Source Control */ = { + isa = PBXSourceControlManager; + fallbackIsa = XCSourceControlManager; + isSCMEnabled = 0; + scmConfiguration = { + repositoryNamesForRoots = { + "" = ""; + }; + }; + }; + 8BD3CCB9148830B20062E48C /* Code sense */ = { + isa = PBXCodeSenseManager; + indexTemplatePath = ""; + }; + 8BEF85AB21F6801300FEF113 /* PlistBookmark */ = { + isa = PlistBookmark; + fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; + fallbackIsa = PBXBookmark; + isK = 0; + kPath = ( + CFBundleName, + ); + name = /Users/christopherjohnson/Desktop/MacAU/DitherFloat/Info.plist; + rLen = 0; + rLoc = 9223372036854775807; + }; + 8BEF85AC21F6801300FEF113 /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 8BA05A660720730100365D66 /* DitherFloat.cpp */; + }; + 8BEF85AD21F6801300FEF113 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* DitherFloat.cpp */; + name = "DitherFloat.cpp: 240"; + rLen = 58; + rLoc = 10182; + rType = 0; + vrLen = 862; + vrLoc = 9784; + }; + 8D01CCC60486CAD60068D4B7 /* DitherFloat */ = { + activeExec = 0; + }; +} diff --git a/plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.perspectivev3 new file mode 100755 index 0000000..c05c55f --- /dev/null +++ b/plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.perspectivev3 @@ -0,0 +1,1506 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>ActivePerspectiveName</key> + <string>Project</string> + <key>AllowedModules</key> + <array> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXSmartGroupTreeModule</string> + <key>Name</key> + <string>Groups and Files Outline View</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Name</key> + <string>Editor</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>XCTaskListModule</string> + <key>Name</key> + <string>Task List</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>XCDetailModule</string> + <key>Name</key> + <string>File and Smart Group Detail Viewer</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>1</string> + <key>Module</key> + <string>PBXBuildResultsModule</string> + <key>Name</key> + <string>Detailed Build Results Viewer</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>1</string> + <key>Module</key> + <string>PBXProjectFindModule</string> + <key>Name</key> + <string>Project Batch Find Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>XCProjectFormatConflictsModule</string> + <key>Name</key> + <string>Project Format Conflicts List</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXBookmarksModule</string> + <key>Name</key> + <string>Bookmarks Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXClassBrowserModule</string> + <key>Name</key> + <string>Class Browser</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXCVSModule</string> + <key>Name</key> + <string>Source Code Control Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXDebugBreakpointsModule</string> + <key>Name</key> + <string>Debug Breakpoints Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>XCDockableInspector</string> + <key>Name</key> + <string>Inspector</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXOpenQuicklyModule</string> + <key>Name</key> + <string>Open Quickly Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>1</string> + <key>Module</key> + <string>PBXDebugSessionModule</string> + <key>Name</key> + <string>Debugger</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>1</string> + <key>Module</key> + <string>PBXDebugCLIModule</string> + <key>Name</key> + <string>Debug Console</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>XCSnapshotModule</string> + <key>Name</key> + <string>Snapshots Tool</string> + </dict> + </array> + <key>BundlePath</key> + <string>/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources</string> + <key>Description</key> + <string>AIODescriptionKey</string> + <key>DockingSystemVisible</key> + <false/> + <key>Extension</key> + <string>perspectivev3</string> + <key>FavBarConfig</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>8BD7274F1D46E5A5000176F0</string> + <key>XCBarModuleItemNames</key> + <dict/> + <key>XCBarModuleItems</key> + <array/> + </dict> + <key>FirstTimeWindowDisplayed</key> + <false/> + <key>Identifier</key> + <string>com.apple.perspectives.project.defaultV3</string> + <key>MajorVersion</key> + <integer>34</integer> + <key>MinorVersion</key> + <integer>0</integer> + <key>Name</key> + <string>All-In-One</string> + <key>Notifications</key> + <array> + <dict> + <key>XCObserverAutoDisconnectKey</key> + <true/> + <key>XCObserverDefintionKey</key> + <dict> + <key>PBXStatusErrorsKey</key> + <integer>0</integer> + </dict> + <key>XCObserverFactoryKey</key> + <string>XCPerspectivesSpecificationIdentifier</string> + <key>XCObserverGUIDKey</key> + <string>XCObserverProjectIdentifier</string> + <key>XCObserverNotificationKey</key> + <string>PBXStatusBuildStateMessageNotification</string> + <key>XCObserverTargetKey</key> + <string>XCMainBuildResultsModuleGUID</string> + <key>XCObserverTriggerKey</key> + <string>awakenModuleWithObserver:</string> + <key>XCObserverValidationKey</key> + <dict> + <key>PBXStatusErrorsKey</key> + <integer>2</integer> + </dict> + </dict> + </array> + <key>OpenEditors</key> + <array/> + <key>PerspectiveWidths</key> + <array> + <integer>841</integer> + <integer>841</integer> + </array> + <key>Perspectives</key> + <array> + <dict> + <key>ChosenToolbarItems</key> + <array> + <string>XCToolbarPerspectiveControl</string> + <string>NSToolbarSeparatorItem</string> + <string>active-combo-popup</string> + <string>action</string> + <string>NSToolbarFlexibleSpaceItem</string> + <string>debugger-enable-breakpoints</string> + <string>build-and-go</string> + <string>com.apple.ide.PBXToolbarStopButton</string> + <string>get-info</string> + <string>NSToolbarFlexibleSpaceItem</string> + <string>com.apple.pbx.toolbar.searchfield</string> + </array> + <key>ControllerClassBaseName</key> + <string></string> + <key>IconName</key> + <string>WindowOfProject</string> + <key>Identifier</key> + <string>perspective.project</string> + <key>IsVertical</key> + <false/> + <key>Layout</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXBottomSmartGroupGIDs</key> + <array> + <string>1C37FBAC04509CD000000102</string> + <string>1C37FAAC04509CD000000102</string> + <string>1C37FABC05509CD000000102</string> + <string>1C37FABC05539CD112110102</string> + <string>E2644B35053B69B200211256</string> + <string>1C37FABC04509CD000100104</string> + <string>1CC0EA4004350EF90044410B</string> + <string>1CC0EA4004350EF90041110B</string> + <string>1C77FABC04509CD000000102</string> + </array> + <key>PBXProjectModuleGUID</key> + <string>1CA23ED40692098700951B8B</string> + <key>PBXProjectModuleLabel</key> + <string>Files</string> + <key>PBXProjectStructureProvided</key> + <string>yes</string> + <key>PBXSmartGroupTreeModuleColumnData</key> + <dict> + <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> + <array> + <real>288</real> + </array> + <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> + <array> + <string>MainColumn</string> + </array> + </dict> + <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> + <dict> + <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> + <array> + <string>089C166AFE841209C02AAC07</string> + <string>08FB77ADFE841716C02AAC07</string> + <string>8BA05A56072072A900365D66</string> + <string>089C167CFE841241C02AAC07</string> + <string>1C37FBAC04509CD000000102</string> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> + <array> + <array> + <integer>4</integer> + <integer>2</integer> + <integer>1</integer> + <integer>0</integer> + </array> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> + <string>{{0, 0}, {288, 595}}</string> + </dict> + <key>PBXTopSmartGroupGIDs</key> + <array/> + <key>XCIncludePerspectivesSwitch</key> + <false/> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {305, 613}}</string> + <key>GroupTreeTableConfiguration</key> + <array> + <string>MainColumn</string> + <real>288</real> + </array> + <key>RubberWindowFrame</key> + <string>566 208 841 654 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXSmartGroupTreeModule</string> + <key>Proportion</key> + <string>305pt</string> + </dict> + <dict> + <key>Dock</key> + <array> + <dict> + <key>BecomeActive</key> + <true/> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>8BD7274A1D46E5A5000176F0</string> + <key>PBXProjectModuleLabel</key> + <string>DitherFloat.cpp</string> + <key>PBXSplitModuleInNavigatorKey</key> + <dict> + <key>Split0</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>8BD7274B1D46E5A5000176F0</string> + <key>PBXProjectModuleLabel</key> + <string>DitherFloat.cpp</string> + <key>_historyCapacity</key> + <integer>0</integer> + <key>bookmark</key> + <string>8BEF85AD21F6801300FEF113</string> + <key>history</key> + <array> + <string>8BEF85AB21F6801300FEF113</string> + <string>8BEF85AC21F6801300FEF113</string> + </array> + </dict> + <key>SplitCount</key> + <string>1</string> + </dict> + <key>StatusBarVisibility</key> + <true/> + <key>XCSharingToken</key> + <string>com.apple.Xcode.CommonNavigatorGroupSharingToken</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {531, 413}}</string> + <key>RubberWindowFrame</key> + <string>566 208 841 654 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>413pt</string> + </dict> + <dict> + <key>Proportion</key> + <string>195pt</string> + <key>Tabs</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CA23EDF0692099D00951B8B</string> + <key>PBXProjectModuleLabel</key> + <string>Detail</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{10, 27}, {531, 168}}</string> + <key>RubberWindowFrame</key> + <string>566 208 841 654 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>XCDetailModule</string> + </dict> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CA23EE00692099D00951B8B</string> + <key>PBXProjectModuleLabel</key> + <string>Project Find</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{10, 31}, {603, 297}}</string> + </dict> + <key>Module</key> + <string>PBXProjectFindModule</string> + </dict> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXCVSModuleFilterTypeKey</key> + <integer>1032</integer> + <key>PBXProjectModuleGUID</key> + <string>1CA23EE10692099D00951B8B</string> + <key>PBXProjectModuleLabel</key> + <string>SCM Results</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{10, 31}, {603, 297}}</string> + </dict> + <key>Module</key> + <string>PBXCVSModule</string> + </dict> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>XCMainBuildResultsModuleGUID</string> + <key>PBXProjectModuleLabel</key> + <string>Build Results</string> + <key>XCBuildResultsTrigger_Collapse</key> + <integer>1023</integer> + <key>XCBuildResultsTrigger_Open</key> + <integer>1012</integer> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{10, 27}, {531, 365}}</string> + </dict> + <key>Module</key> + <string>PBXBuildResultsModule</string> + </dict> + </array> + </dict> + </array> + <key>Proportion</key> + <string>531pt</string> + </dict> + </array> + <key>Name</key> + <string>Project</string> + <key>ServiceClasses</key> + <array> + <string>XCModuleDock</string> + <string>PBXSmartGroupTreeModule</string> + <string>XCModuleDock</string> + <string>PBXNavigatorGroup</string> + <string>XCDockableTabModule</string> + <string>XCDetailModule</string> + <string>PBXProjectFindModule</string> + <string>PBXCVSModule</string> + <string>PBXBuildResultsModule</string> + </array> + <key>TableOfContents</key> + <array> + <string>8BEF85AE21F6801300FEF113</string> + <string>1CA23ED40692098700951B8B</string> + <string>8BEF85AF21F6801300FEF113</string> + <string>8BD7274A1D46E5A5000176F0</string> + <string>8BEF85B021F6801300FEF113</string> + <string>1CA23EDF0692099D00951B8B</string> + <string>1CA23EE00692099D00951B8B</string> + <string>1CA23EE10692099D00951B8B</string> + <string>XCMainBuildResultsModuleGUID</string> + </array> + <key>ToolbarConfigUserDefaultsMinorVersion</key> + <string>2</string> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.defaultV3</string> + </dict> + <dict> + <key>ChosenToolbarItems</key> + <array> + <string>XCToolbarPerspectiveControl</string> + <string>NSToolbarSeparatorItem</string> + <string>active-combo-popup</string> + <string>NSToolbarFlexibleSpaceItem</string> + <string>debugger-enable-breakpoints</string> + <string>build-and-go</string> + <string>com.apple.ide.PBXToolbarStopButton</string> + <string>debugger-restart-executable</string> + <string>debugger-pause</string> + <string>debugger-step-over</string> + <string>debugger-step-into</string> + <string>debugger-step-out</string> + <string>NSToolbarFlexibleSpaceItem</string> + <string>servicesModulebreakpoints</string> + <string>debugger-show-console-window</string> + </array> + <key>ControllerClassBaseName</key> + <string>PBXDebugSessionModule</string> + <key>IconName</key> + <string>DebugTabIcon</string> + <key>Identifier</key> + <string>perspective.debug</string> + <key>IsVertical</key> + <true/> + <key>Layout</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CCC7628064C1048000F2A68</string> + <key>PBXProjectModuleLabel</key> + <string>Debugger Console</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {424, 270}}</string> + </dict> + <key>Module</key> + <string>PBXDebugCLIModule</string> + <key>Proportion</key> + <string>270pt</string> + </dict> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>Debugger</key> + <dict> + <key>HorizontalSplitView</key> + <dict> + <key>_collapsingFrameDimension</key> + <real>0.0</real> + <key>_indexOfCollapsedView</key> + <integer>0</integer> + <key>_percentageOfCollapsedView</key> + <real>0.0</real> + <key>isCollapsed</key> + <string>yes</string> + <key>sizes</key> + <array> + <string>{{0, 0}, {395, 214}}</string> + <string>{{395, 0}, {415, 214}}</string> + </array> + </dict> + <key>VerticalSplitView</key> + <dict> + <key>_collapsingFrameDimension</key> + <real>0.0</real> + <key>_indexOfCollapsedView</key> + <integer>0</integer> + <key>_percentageOfCollapsedView</key> + <real>0.0</real> + <key>isCollapsed</key> + <string>yes</string> + <key>sizes</key> + <array> + <string>{{0, 0}, {810, 214}}</string> + <string>{{0, 214}, {810, 227}}</string> + </array> + </dict> + </dict> + <key>LauncherConfigVersion</key> + <string>8</string> + <key>PBXProjectModuleGUID</key> + <string>1CCC7629064C1048000F2A68</string> + <key>PBXProjectModuleLabel</key> + <string>Debug</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>DebugConsoleVisible</key> + <string>None</string> + <key>DebugConsoleWindowFrame</key> + <string>{{200, 200}, {500, 300}}</string> + <key>DebugSTDIOWindowFrame</key> + <string>{{200, 200}, {500, 300}}</string> + <key>Frame</key> + <string>{{0, 5}, {810, 441}}</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, 214}}</string> + </dict> + </dict> + <key>Module</key> + <string>PBXDebugSessionModule</string> + <key>Proportion</key> + <string>441pt</string> + </dict> + </array> + <key>Name</key> + <string>Debug</string> + <key>ServiceClasses</key> + <array> + <string>XCModuleDock</string> + <string>PBXDebugCLIModule</string> + <string>PBXDebugSessionModule</string> + <string>PBXDebugProcessAndThreadModule</string> + <string>PBXDebugProcessViewModule</string> + <string>PBXDebugThreadViewModule</string> + <string>PBXDebugStackFrameViewModule</string> + <string>PBXNavigatorGroup</string> + </array> + <key>TableOfContents</key> + <array> + <string>8B79259B21F28381006E9731</string> + <string>1CCC7628064C1048000F2A68</string> + <string>1CCC7629064C1048000F2A68</string> + <string>8B79259C21F28381006E9731</string> + <string>8B79259D21F28381006E9731</string> + <string>8B79259E21F28381006E9731</string> + <string>8B79259F21F28381006E9731</string> + <string>8B7925A021F28381006E9731</string> + </array> + <key>ToolbarConfigUserDefaultsMinorVersion</key> + <string>2</string> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.debugV3</string> + </dict> + </array> + <key>PerspectivesBarVisible</key> + <true/> + <key>ShelfIsVisible</key> + <false/> + <key>SourceDescription</key> + <string>file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecification.xcperspec'</string> + <key>StatusbarIsVisible</key> + <true/> + <key>TimeStamp</key> + <real>569802771.16773605</real> + <key>ToolbarConfigUserDefaultsMinorVersion</key> + <string>2</string> + <key>ToolbarDisplayMode</key> + <integer>1</integer> + <key>ToolbarIsVisible</key> + <true/> + <key>ToolbarSizeMode</key> + <integer>2</integer> + <key>Type</key> + <string>Perspectives</string> + <key>UpdateMessage</key> + <string></string> + <key>WindowJustification</key> + <integer>5</integer> + <key>WindowOrderList</key> + <array> + <string>/Users/christopherjohnson/Desktop/MacAU/DitherFloat/DitherFloat.xcodeproj</string> + </array> + <key>WindowString</key> + <string>566 208 841 654 0 0 1440 878 </string> + <key>WindowToolsV3</key> + <array> + <dict> + <key>Identifier</key> + <string>windowTool.debugger</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>Debugger</key> + <dict> + <key>HorizontalSplitView</key> + <dict> + <key>_collapsingFrameDimension</key> + <real>0.0</real> + <key>_indexOfCollapsedView</key> + <integer>0</integer> + <key>_percentageOfCollapsedView</key> + <real>0.0</real> + <key>isCollapsed</key> + <string>yes</string> + <key>sizes</key> + <array> + <string>{{0, 0}, {317, 164}}</string> + <string>{{317, 0}, {377, 164}}</string> + </array> + </dict> + <key>VerticalSplitView</key> + <dict> + <key>_collapsingFrameDimension</key> + <real>0.0</real> + <key>_indexOfCollapsedView</key> + <integer>0</integer> + <key>_percentageOfCollapsedView</key> + <real>0.0</real> + <key>isCollapsed</key> + <string>yes</string> + <key>sizes</key> + <array> + <string>{{0, 0}, {694, 164}}</string> + <string>{{0, 164}, {694, 216}}</string> + </array> + </dict> + </dict> + <key>LauncherConfigVersion</key> + <string>8</string> + <key>PBXProjectModuleGUID</key> + <string>1C162984064C10D400B95A72</string> + <key>PBXProjectModuleLabel</key> + <string>Debug - GLUTExamples (Underwater)</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>DebugConsoleDrawerSize</key> + <string>{100, 120}</string> + <key>DebugConsoleVisible</key> + <string>None</string> + <key>DebugConsoleWindowFrame</key> + <string>{{200, 200}, {500, 300}}</string> + <key>DebugSTDIOWindowFrame</key> + <string>{{200, 200}, {500, 300}}</string> + <key>Frame</key> + <string>{{0, 0}, {694, 380}}</string> + <key>RubberWindowFrame</key> + <string>321 238 694 422 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXDebugSessionModule</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Debugger</string> + <key>ServiceClasses</key> + <array> + <string>PBXDebugSessionModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1CD10A99069EF8BA00B06720</string> + <string>1C0AD2AB069F1E9B00FABCE6</string> + <string>1C162984064C10D400B95A72</string> + <string>1C0AD2AC069F1E9B00FABCE6</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.debugV3</string> + <key>WindowString</key> + <string>321 238 694 422 0 0 1440 878 </string> + <key>WindowToolGUID</key> + <string>1CD10A99069EF8BA00B06720</string> + <key>WindowToolIsVisible</key> + <integer>0</integer> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.build</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CD0528F0623707200166675</string> + <key>PBXProjectModuleLabel</key> + <string><No Editor></string> + <key>PBXSplitModuleInNavigatorKey</key> + <dict> + <key>Split0</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CD052900623707200166675</string> + </dict> + <key>SplitCount</key> + <string>1</string> + </dict> + <key>StatusBarVisibility</key> + <integer>1</integer> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {500, 215}}</string> + <key>RubberWindowFrame</key> + <string>192 257 500 500 0 0 1280 1002 </string> + </dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>218pt</string> + </dict> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>XCMainBuildResultsModuleGUID</string> + <key>PBXProjectModuleLabel</key> + <string>Build Results</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 222}, {500, 236}}</string> + <key>RubberWindowFrame</key> + <string>192 257 500 500 0 0 1280 1002 </string> + </dict> + <key>Module</key> + <string>PBXBuildResultsModule</string> + <key>Proportion</key> + <string>236pt</string> + </dict> + </array> + <key>Proportion</key> + <string>458pt</string> + </dict> + </array> + <key>Name</key> + <string>Build Results</string> + <key>ServiceClasses</key> + <array> + <string>PBXBuildResultsModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1C78EAA5065D492600B07095</string> + <string>1C78EAA6065D492600B07095</string> + <string>1CD0528F0623707200166675</string> + <string>XCMainBuildResultsModuleGUID</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.buildV3</string> + <key>WindowString</key> + <string>192 257 500 500 0 0 1280 1002 </string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.find</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CDD528C0622207200134675</string> + <key>PBXProjectModuleLabel</key> + <string><No Editor></string> + <key>PBXSplitModuleInNavigatorKey</key> + <dict> + <key>Split0</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CD0528D0623707200166675</string> + </dict> + <key>SplitCount</key> + <string>1</string> + </dict> + <key>StatusBarVisibility</key> + <integer>1</integer> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {781, 167}}</string> + <key>RubberWindowFrame</key> + <string>62 385 781 470 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>781pt</string> + </dict> + </array> + <key>Proportion</key> + <string>50%</string> + </dict> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CD0528E0623707200166675</string> + <key>PBXProjectModuleLabel</key> + <string>Project Find</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{8, 0}, {773, 254}}</string> + <key>RubberWindowFrame</key> + <string>62 385 781 470 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXProjectFindModule</string> + <key>Proportion</key> + <string>50%</string> + </dict> + </array> + <key>Proportion</key> + <string>428pt</string> + </dict> + </array> + <key>Name</key> + <string>Project Find</string> + <key>ServiceClasses</key> + <array> + <string>PBXProjectFindModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1C530D57069F1CE1000CFCEE</string> + <string>1C530D58069F1CE1000CFCEE</string> + <string>1C530D59069F1CE1000CFCEE</string> + <string>1CDD528C0622207200134675</string> + <string>1C530D5A069F1CE1000CFCEE</string> + <string>1CE0B1FE06471DED0097A5F4</string> + <string>1CD0528E0623707200166675</string> + </array> + <key>WindowString</key> + <string>62 385 781 470 0 0 1440 878 </string> + <key>WindowToolGUID</key> + <string>1C530D57069F1CE1000CFCEE</string> + <key>WindowToolIsVisible</key> + <integer>0</integer> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.snapshots</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>Module</key> + <string>XCSnapshotModule</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Snapshots</string> + <key>ServiceClasses</key> + <array> + <string>XCSnapshotModule</string> + </array> + <key>StatusbarIsVisible</key> + <string>Yes</string> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.snapshots</string> + <key>WindowString</key> + <string>315 824 300 550 0 0 1440 878 </string> + <key>WindowToolIsVisible</key> + <string>Yes</string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.debuggerConsole</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1C78EAAC065D492600B07095</string> + <key>PBXProjectModuleLabel</key> + <string>Debugger Console</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {700, 358}}</string> + <key>RubberWindowFrame</key> + <string>149 87 700 400 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXDebugCLIModule</string> + <key>Proportion</key> + <string>358pt</string> + </dict> + </array> + <key>Proportion</key> + <string>358pt</string> + </dict> + </array> + <key>Name</key> + <string>Debugger Console</string> + <key>ServiceClasses</key> + <array> + <string>PBXDebugCLIModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1C530D5B069F1CE1000CFCEE</string> + <string>1C530D5C069F1CE1000CFCEE</string> + <string>1C78EAAC065D492600B07095</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.consoleV3</string> + <key>WindowString</key> + <string>149 87 440 400 0 0 1440 878 </string> + <key>WindowToolGUID</key> + <string>1C530D5B069F1CE1000CFCEE</string> + <key>WindowToolIsVisible</key> + <integer>0</integer> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.scm</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1C78EAB2065D492600B07095</string> + <key>PBXProjectModuleLabel</key> + <string><No Editor></string> + <key>PBXSplitModuleInNavigatorKey</key> + <dict> + <key>Split0</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1C78EAB3065D492600B07095</string> + </dict> + <key>SplitCount</key> + <string>1</string> + </dict> + <key>StatusBarVisibility</key> + <integer>1</integer> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {452, 0}}</string> + <key>RubberWindowFrame</key> + <string>743 379 452 308 0 0 1280 1002 </string> + </dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>0pt</string> + </dict> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CD052920623707200166675</string> + <key>PBXProjectModuleLabel</key> + <string>SCM</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>ConsoleFrame</key> + <string>{{0, 259}, {452, 0}}</string> + <key>Frame</key> + <string>{{0, 7}, {452, 259}}</string> + <key>RubberWindowFrame</key> + <string>743 379 452 308 0 0 1280 1002 </string> + <key>TableConfiguration</key> + <array> + <string>Status</string> + <real>30</real> + <string>FileName</string> + <real>199</real> + <string>Path</string> + <real>197.09500122070312</real> + </array> + <key>TableFrame</key> + <string>{{0, 0}, {452, 250}}</string> + </dict> + <key>Module</key> + <string>PBXCVSModule</string> + <key>Proportion</key> + <string>262pt</string> + </dict> + </array> + <key>Proportion</key> + <string>266pt</string> + </dict> + </array> + <key>Name</key> + <string>SCM</string> + <key>ServiceClasses</key> + <array> + <string>PBXCVSModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1C78EAB4065D492600B07095</string> + <string>1C78EAB5065D492600B07095</string> + <string>1C78EAB2065D492600B07095</string> + <string>1CD052920623707200166675</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.scmV3</string> + <key>WindowString</key> + <string>743 379 452 308 0 0 1280 1002 </string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.breakpoints</string> + <key>IsVertical</key> + <integer>0</integer> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>PBXBottomSmartGroupGIDs</key> + <array> + <string>1C77FABC04509CD000000102</string> + </array> + <key>PBXProjectModuleGUID</key> + <string>1CE0B1FE06471DED0097A5F4</string> + <key>PBXProjectModuleLabel</key> + <string>Files</string> + <key>PBXProjectStructureProvided</key> + <string>no</string> + <key>PBXSmartGroupTreeModuleColumnData</key> + <dict> + <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> + <array> + <real>168</real> + </array> + <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> + <array> + <string>MainColumn</string> + </array> + </dict> + <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> + <dict> + <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> + <array> + <string>1C77FABC04509CD000000102</string> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> + <array> + <array> + <integer>0</integer> + </array> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> + <string>{{0, 0}, {168, 350}}</string> + </dict> + <key>PBXTopSmartGroupGIDs</key> + <array/> + <key>XCIncludePerspectivesSwitch</key> + <integer>0</integer> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {185, 368}}</string> + <key>GroupTreeTableConfiguration</key> + <array> + <string>MainColumn</string> + <real>168</real> + </array> + <key>RubberWindowFrame</key> + <string>315 424 744 409 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXSmartGroupTreeModule</string> + <key>Proportion</key> + <string>185pt</string> + </dict> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CA1AED706398EBD00589147</string> + <key>PBXProjectModuleLabel</key> + <string>Detail</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{190, 0}, {554, 368}}</string> + <key>RubberWindowFrame</key> + <string>315 424 744 409 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>XCDetailModule</string> + <key>Proportion</key> + <string>554pt</string> + </dict> + </array> + <key>Proportion</key> + <string>368pt</string> + </dict> + </array> + <key>MajorVersion</key> + <integer>3</integer> + <key>MinorVersion</key> + <integer>0</integer> + <key>Name</key> + <string>Breakpoints</string> + <key>ServiceClasses</key> + <array> + <string>PBXSmartGroupTreeModule</string> + <string>XCDetailModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1CDDB66807F98D9800BB5817</string> + <string>1CDDB66907F98D9800BB5817</string> + <string>1CE0B1FE06471DED0097A5F4</string> + <string>1CA1AED706398EBD00589147</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.breakpointsV3</string> + <key>WindowString</key> + <string>315 424 744 409 0 0 1440 878 </string> + <key>WindowToolGUID</key> + <string>1CDDB66807F98D9800BB5817</string> + <key>WindowToolIsVisible</key> + <integer>1</integer> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.debugAnimator</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Debug Visualizer</string> + <key>ServiceClasses</key> + <array> + <string>PBXNavigatorGroup</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.debugAnimatorV3</string> + <key>WindowString</key> + <string>100 100 700 500 0 0 1280 1002 </string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.bookmarks</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>Module</key> + <string>PBXBookmarksModule</string> + <key>Proportion</key> + <string>166pt</string> + </dict> + </array> + <key>Proportion</key> + <string>166pt</string> + </dict> + </array> + <key>Name</key> + <string>Bookmarks</string> + <key>ServiceClasses</key> + <array> + <string>PBXBookmarksModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>0</integer> + <key>WindowString</key> + <string>538 42 401 187 0 0 1280 1002 </string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.projectFormatConflicts</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>Module</key> + <string>XCProjectFormatConflictsModule</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Project Format Conflicts</string> + <key>ServiceClasses</key> + <array> + <string>XCProjectFormatConflictsModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>0</integer> + <key>WindowContentMinSize</key> + <string>450 300</string> + <key>WindowString</key> + <string>50 850 472 307 0 0 1440 877</string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.classBrowser</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>OptionsSetName</key> + <string>Hierarchy, all classes</string> + <key>PBXProjectModuleGUID</key> + <string>1CA6456E063B45B4001379D8</string> + <key>PBXProjectModuleLabel</key> + <string>Class Browser - NSObject</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>ClassesFrame</key> + <string>{{0, 0}, {369, 96}}</string> + <key>ClassesTreeTableConfiguration</key> + <array> + <string>PBXClassNameColumnIdentifier</string> + <real>208</real> + <string>PBXClassBookColumnIdentifier</string> + <real>22</real> + </array> + <key>Frame</key> + <string>{{0, 0}, {616, 353}}</string> + <key>MembersFrame</key> + <string>{{0, 105}, {369, 395}}</string> + <key>MembersTreeTableConfiguration</key> + <array> + <string>PBXMemberTypeIconColumnIdentifier</string> + <real>22</real> + <string>PBXMemberNameColumnIdentifier</string> + <real>216</real> + <string>PBXMemberTypeColumnIdentifier</string> + <real>94</real> + <string>PBXMemberBookColumnIdentifier</string> + <real>22</real> + </array> + <key>PBXModuleWindowStatusBarHidden2</key> + <integer>1</integer> + <key>RubberWindowFrame</key> + <string>597 125 616 374 0 0 1280 1002 </string> + </dict> + <key>Module</key> + <string>PBXClassBrowserModule</string> + <key>Proportion</key> + <string>354pt</string> + </dict> + </array> + <key>Proportion</key> + <string>354pt</string> + </dict> + </array> + <key>Name</key> + <string>Class Browser</string> + <key>ServiceClasses</key> + <array> + <string>PBXClassBrowserModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>0</integer> + <key>TableOfContents</key> + <array> + <string>1C78EABA065D492600B07095</string> + <string>1C78EABB065D492600B07095</string> + <string>1CA6456E063B45B4001379D8</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.classbrowser</string> + <key>WindowString</key> + <string>597 125 616 374 0 0 1280 1002 </string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.refactoring</string> + <key>IncludeInToolsMenu</key> + <integer>0</integer> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{0, 0}, {500, 335}</string> + <key>RubberWindowFrame</key> + <string>{0, 0}, {500, 335}</string> + </dict> + <key>Module</key> + <string>XCRefactoringModule</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Refactoring</string> + <key>ServiceClasses</key> + <array> + <string>XCRefactoringModule</string> + </array> + <key>WindowString</key> + <string>200 200 500 356 0 0 1920 1200 </string> + </dict> + </array> +</dict> +</plist> diff --git a/plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/project.pbxproj b/plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/project.pbxproj new file mode 100755 index 0000000..e97226a --- /dev/null +++ b/plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/project.pbxproj @@ -0,0 +1,490 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 3EEA126E089847F5002C6BFC /* CAVectorUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3EEA126B089847F5002C6BFC /* CAVectorUnit.cpp */; }; + 3EEA126F089847F5002C6BFC /* CAVectorUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EEA126C089847F5002C6BFC /* CAVectorUnit.h */; }; + 3EEA1270089847F5002C6BFC /* CAVectorUnitTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EEA126D089847F5002C6BFC /* CAVectorUnitTypes.h */; }; + 8B4119B70749654200361ABE /* DitherFloat.r in Rez */ = {isa = PBXBuildFile; fileRef = 8BA05A680720730100365D66 /* DitherFloat.r */; }; + 8BA05A6B0720730100365D66 /* DitherFloat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A660720730100365D66 /* DitherFloat.cpp */; }; + 8BA05A6E0720730100365D66 /* DitherFloatVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A690720730100365D66 /* DitherFloatVersion.h */; }; + 8BA05AAE072073D300365D66 /* AUBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A7F072073D200365D66 /* AUBase.cpp */; }; + 8BA05AAF072073D300365D66 /* AUBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A80072073D200365D66 /* AUBase.h */; }; + 8BA05AB0072073D300365D66 /* AUDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A81072073D200365D66 /* AUDispatch.cpp */; }; + 8BA05AB1072073D300365D66 /* AUDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A82072073D200365D66 /* AUDispatch.h */; }; + 8BA05AB2072073D300365D66 /* AUInputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A83072073D200365D66 /* AUInputElement.cpp */; }; + 8BA05AB3072073D300365D66 /* AUInputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A84072073D200365D66 /* AUInputElement.h */; }; + 8BA05AB4072073D300365D66 /* AUOutputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A85072073D200365D66 /* AUOutputElement.cpp */; }; + 8BA05AB5072073D300365D66 /* AUOutputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A86072073D200365D66 /* AUOutputElement.h */; }; + 8BA05AB7072073D300365D66 /* AUScopeElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A88072073D200365D66 /* AUScopeElement.cpp */; }; + 8BA05AB8072073D300365D66 /* AUScopeElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A89072073D200365D66 /* AUScopeElement.h */; }; + 8BA05AB9072073D300365D66 /* ComponentBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A8A072073D200365D66 /* ComponentBase.cpp */; }; + 8BA05ABA072073D300365D66 /* ComponentBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A8B072073D200365D66 /* ComponentBase.h */; }; + 8BA05AC6072073D300365D66 /* AUEffectBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A9A072073D200365D66 /* AUEffectBase.cpp */; }; + 8BA05AC7072073D300365D66 /* AUEffectBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A9B072073D200365D66 /* AUEffectBase.h */; }; + 8BA05AD2072073D300365D66 /* AUBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05AA7072073D200365D66 /* AUBuffer.cpp */; }; + 8BA05AD3072073D300365D66 /* AUBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AA8072073D200365D66 /* AUBuffer.h */; }; + 8BA05AD4072073D300365D66 /* AUDebugDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05AA9072073D200365D66 /* AUDebugDispatcher.cpp */; }; + 8BA05AD5072073D300365D66 /* AUDebugDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AAA072073D200365D66 /* AUDebugDispatcher.h */; }; + 8BA05AD6072073D300365D66 /* AUInputFormatConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AAB072073D200365D66 /* AUInputFormatConverter.h */; }; + 8BA05AD7072073D300365D66 /* AUSilentTimeout.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AAC072073D200365D66 /* AUSilentTimeout.h */; }; + 8BA05AD8072073D300365D66 /* AUTimestampGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AAD072073D200365D66 /* AUTimestampGenerator.h */; }; + 8BA05AE50720742100365D66 /* CAAudioChannelLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05ADF0720742100365D66 /* CAAudioChannelLayout.cpp */; }; + 8BA05AE60720742100365D66 /* CAAudioChannelLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AE00720742100365D66 /* CAAudioChannelLayout.h */; }; + 8BA05AE70720742100365D66 /* CAMutex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05AE10720742100365D66 /* CAMutex.cpp */; }; + 8BA05AE80720742100365D66 /* CAMutex.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AE20720742100365D66 /* CAMutex.h */; }; + 8BA05AE90720742100365D66 /* CAStreamBasicDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05AE30720742100365D66 /* CAStreamBasicDescription.cpp */; }; + 8BA05AEA0720742100365D66 /* CAStreamBasicDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AE40720742100365D66 /* CAStreamBasicDescription.h */; }; + 8BA05AFC072074E100365D66 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BA05AF9072074E100365D66 /* AudioToolbox.framework */; }; + 8BA05AFD072074E100365D66 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BA05AFA072074E100365D66 /* AudioUnit.framework */; }; + 8BA05B02072074F900365D66 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BA05B01072074F900365D66 /* CoreServices.framework */; }; + 8BA05B070720754400365D66 /* CAAUParameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05B050720754400365D66 /* CAAUParameter.cpp */; }; + 8BA05B080720754400365D66 /* CAAUParameter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05B060720754400365D66 /* CAAUParameter.h */; }; + 8BC6025C073B072D006C4272 /* DitherFloat.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC6025B073B072D006C4272 /* DitherFloat.h */; }; + 8D01CCCA0486CAD60068D4B7 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C167DFE841241C02AAC07 /* InfoPlist.strings */; }; + F7C347F00ECE5AF8008ADFB6 /* AUBaseHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F7C347EE0ECE5AF8008ADFB6 /* AUBaseHelper.cpp */; }; + F7C347F10ECE5AF8008ADFB6 /* AUBaseHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = F7C347EF0ECE5AF8008ADFB6 /* AUBaseHelper.h */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; }; + 3EEA126B089847F5002C6BFC /* CAVectorUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAVectorUnit.cpp; sourceTree = "<group>"; }; + 3EEA126C089847F5002C6BFC /* CAVectorUnit.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAVectorUnit.h; sourceTree = "<group>"; }; + 3EEA126D089847F5002C6BFC /* CAVectorUnitTypes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAVectorUnitTypes.h; sourceTree = "<group>"; }; + 8B5C7FBF076FB2C200A15F61 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = "<absolute>"; }; + 8BA05A660720730100365D66 /* DitherFloat.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = DitherFloat.cpp; sourceTree = "<group>"; }; + 8BA05A670720730100365D66 /* DitherFloat.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = DitherFloat.exp; sourceTree = "<group>"; }; + 8BA05A680720730100365D66 /* DitherFloat.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = DitherFloat.r; sourceTree = "<group>"; }; + 8BA05A690720730100365D66 /* DitherFloatVersion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DitherFloatVersion.h; sourceTree = "<group>"; }; + 8BA05A7F072073D200365D66 /* AUBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUBase.cpp; sourceTree = "<group>"; }; + 8BA05A80072073D200365D66 /* AUBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUBase.h; sourceTree = "<group>"; }; + 8BA05A81072073D200365D66 /* AUDispatch.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUDispatch.cpp; sourceTree = "<group>"; }; + 8BA05A82072073D200365D66 /* AUDispatch.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUDispatch.h; sourceTree = "<group>"; }; + 8BA05A83072073D200365D66 /* AUInputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUInputElement.cpp; sourceTree = "<group>"; }; + 8BA05A84072073D200365D66 /* AUInputElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUInputElement.h; sourceTree = "<group>"; }; + 8BA05A85072073D200365D66 /* AUOutputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUOutputElement.cpp; sourceTree = "<group>"; }; + 8BA05A86072073D200365D66 /* AUOutputElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUOutputElement.h; sourceTree = "<group>"; }; + 8BA05A87072073D200365D66 /* AUResources.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = AUResources.r; sourceTree = "<group>"; }; + 8BA05A88072073D200365D66 /* AUScopeElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUScopeElement.cpp; sourceTree = "<group>"; }; + 8BA05A89072073D200365D66 /* AUScopeElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUScopeElement.h; sourceTree = "<group>"; }; + 8BA05A8A072073D200365D66 /* ComponentBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ComponentBase.cpp; sourceTree = "<group>"; }; + 8BA05A8B072073D200365D66 /* ComponentBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ComponentBase.h; sourceTree = "<group>"; }; + 8BA05A9A072073D200365D66 /* AUEffectBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUEffectBase.cpp; sourceTree = "<group>"; }; + 8BA05A9B072073D200365D66 /* AUEffectBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUEffectBase.h; sourceTree = "<group>"; }; + 8BA05AA7072073D200365D66 /* AUBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUBuffer.cpp; sourceTree = "<group>"; }; + 8BA05AA8072073D200365D66 /* AUBuffer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUBuffer.h; sourceTree = "<group>"; }; + 8BA05AA9072073D200365D66 /* AUDebugDispatcher.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUDebugDispatcher.cpp; sourceTree = "<group>"; }; + 8BA05AAA072073D200365D66 /* AUDebugDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUDebugDispatcher.h; sourceTree = "<group>"; }; + 8BA05AAB072073D200365D66 /* AUInputFormatConverter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUInputFormatConverter.h; sourceTree = "<group>"; }; + 8BA05AAC072073D200365D66 /* AUSilentTimeout.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUSilentTimeout.h; sourceTree = "<group>"; }; + 8BA05AAD072073D200365D66 /* AUTimestampGenerator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUTimestampGenerator.h; sourceTree = "<group>"; }; + 8BA05ADF0720742100365D66 /* CAAudioChannelLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioChannelLayout.cpp; sourceTree = "<group>"; }; + 8BA05AE00720742100365D66 /* CAAudioChannelLayout.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAAudioChannelLayout.h; sourceTree = "<group>"; }; + 8BA05AE10720742100365D66 /* CAMutex.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAMutex.cpp; sourceTree = "<group>"; }; + 8BA05AE20720742100365D66 /* CAMutex.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAMutex.h; sourceTree = "<group>"; }; + 8BA05AE30720742100365D66 /* CAStreamBasicDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAStreamBasicDescription.cpp; sourceTree = "<group>"; }; + 8BA05AE40720742100365D66 /* CAStreamBasicDescription.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAStreamBasicDescription.h; sourceTree = "<group>"; }; + 8BA05AF9072074E100365D66 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = "<absolute>"; }; + 8BA05AFA072074E100365D66 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = /System/Library/Frameworks/AudioUnit.framework; sourceTree = "<absolute>"; }; + 8BA05B01072074F900365D66 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = "<absolute>"; }; + 8BA05B050720754400365D66 /* CAAUParameter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUParameter.cpp; sourceTree = "<group>"; }; + 8BA05B060720754400365D66 /* CAAUParameter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAAUParameter.h; sourceTree = "<group>"; }; + 8BC6025B073B072D006C4272 /* DitherFloat.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DitherFloat.h; sourceTree = "<group>"; }; + 8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; }; + 8D01CCD20486CAD60068D4B7 /* DitherFloat.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DitherFloat.component; sourceTree = BUILT_PRODUCTS_DIR; }; + F7C347EE0ECE5AF8008ADFB6 /* AUBaseHelper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AUBaseHelper.cpp; path = Extras/CoreAudio/AudioUnits/AUPublic/Utility/AUBaseHelper.cpp; sourceTree = SYSTEM_DEVELOPER_DIR; }; + F7C347EF0ECE5AF8008ADFB6 /* AUBaseHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AUBaseHelper.h; path = Extras/CoreAudio/AudioUnits/AUPublic/Utility/AUBaseHelper.h; sourceTree = SYSTEM_DEVELOPER_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D01CCCD0486CAD60068D4B7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8BA05AFC072074E100365D66 /* AudioToolbox.framework in Frameworks */, + 8BA05AFD072074E100365D66 /* AudioUnit.framework in Frameworks */, + 8BA05B02072074F900365D66 /* CoreServices.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 089C166AFE841209C02AAC07 /* DitherFloat */ = { + isa = PBXGroup; + children = ( + 08FB77ADFE841716C02AAC07 /* Source */, + 089C167CFE841241C02AAC07 /* Resources */, + 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */, + 19C28FB4FE9D528D11CA2CBB /* Products */, + ); + name = DitherFloat; + sourceTree = "<group>"; + }; + 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + 8B5C7FBF076FB2C200A15F61 /* CoreAudio.framework */, + 8BA05B01072074F900365D66 /* CoreServices.framework */, + 8BA05AF9072074E100365D66 /* AudioToolbox.framework */, + 8BA05AFA072074E100365D66 /* AudioUnit.framework */, + ); + name = "External Frameworks and Libraries"; + sourceTree = "<group>"; + }; + 089C167CFE841241C02AAC07 /* Resources */ = { + isa = PBXGroup; + children = ( + 8D01CCD10486CAD60068D4B7 /* Info.plist */, + 089C167DFE841241C02AAC07 /* InfoPlist.strings */, + ); + name = Resources; + sourceTree = "<group>"; + }; + 08FB77ADFE841716C02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + 8BA05A56072072A900365D66 /* AU Source */, + 8BA05AEB0720742700365D66 /* PublicUtility */, + 8BA05A7D072073D200365D66 /* AUPublic */, + ); + name = Source; + sourceTree = "<group>"; + }; + 19C28FB4FE9D528D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8D01CCD20486CAD60068D4B7 /* DitherFloat.component */, + ); + name = Products; + sourceTree = "<group>"; + }; + 8BA05A56072072A900365D66 /* AU Source */ = { + isa = PBXGroup; + children = ( + 8BC6025B073B072D006C4272 /* DitherFloat.h */, + 8BA05A660720730100365D66 /* DitherFloat.cpp */, + 8BA05A670720730100365D66 /* DitherFloat.exp */, + 8BA05A680720730100365D66 /* DitherFloat.r */, + 8BA05A690720730100365D66 /* DitherFloatVersion.h */, + ); + name = "AU Source"; + sourceTree = "<group>"; + }; + 8BA05A7D072073D200365D66 /* AUPublic */ = { + isa = PBXGroup; + children = ( + 8BA05A7E072073D200365D66 /* AUBase */, + 8BA05A99072073D200365D66 /* OtherBases */, + 8BA05AA6072073D200365D66 /* Utility */, + ); + name = AUPublic; + path = Extras/CoreAudio/AudioUnits/AUPublic; + sourceTree = SYSTEM_DEVELOPER_DIR; + }; + 8BA05A7E072073D200365D66 /* AUBase */ = { + isa = PBXGroup; + children = ( + 8BA05A7F072073D200365D66 /* AUBase.cpp */, + 8BA05A80072073D200365D66 /* AUBase.h */, + 8BA05A81072073D200365D66 /* AUDispatch.cpp */, + 8BA05A82072073D200365D66 /* AUDispatch.h */, + 8BA05A83072073D200365D66 /* AUInputElement.cpp */, + 8BA05A84072073D200365D66 /* AUInputElement.h */, + 8BA05A85072073D200365D66 /* AUOutputElement.cpp */, + 8BA05A86072073D200365D66 /* AUOutputElement.h */, + 8BA05A87072073D200365D66 /* AUResources.r */, + 8BA05A88072073D200365D66 /* AUScopeElement.cpp */, + 8BA05A89072073D200365D66 /* AUScopeElement.h */, + 8BA05A8A072073D200365D66 /* ComponentBase.cpp */, + 8BA05A8B072073D200365D66 /* ComponentBase.h */, + ); + path = AUBase; + sourceTree = "<group>"; + }; + 8BA05A99072073D200365D66 /* OtherBases */ = { + isa = PBXGroup; + children = ( + 8BA05A9A072073D200365D66 /* AUEffectBase.cpp */, + 8BA05A9B072073D200365D66 /* AUEffectBase.h */, + ); + path = OtherBases; + sourceTree = "<group>"; + }; + 8BA05AA6072073D200365D66 /* Utility */ = { + isa = PBXGroup; + children = ( + F7C347EE0ECE5AF8008ADFB6 /* AUBaseHelper.cpp */, + F7C347EF0ECE5AF8008ADFB6 /* AUBaseHelper.h */, + 8BA05AA7072073D200365D66 /* AUBuffer.cpp */, + 8BA05AA8072073D200365D66 /* AUBuffer.h */, + 8BA05AA9072073D200365D66 /* AUDebugDispatcher.cpp */, + 8BA05AAA072073D200365D66 /* AUDebugDispatcher.h */, + 8BA05AAB072073D200365D66 /* AUInputFormatConverter.h */, + 8BA05AAC072073D200365D66 /* AUSilentTimeout.h */, + 8BA05AAD072073D200365D66 /* AUTimestampGenerator.h */, + ); + path = Utility; + sourceTree = "<group>"; + }; + 8BA05AEB0720742700365D66 /* PublicUtility */ = { + isa = PBXGroup; + children = ( + 8BA05B050720754400365D66 /* CAAUParameter.cpp */, + 8BA05B060720754400365D66 /* CAAUParameter.h */, + 8BA05ADF0720742100365D66 /* CAAudioChannelLayout.cpp */, + 8BA05AE00720742100365D66 /* CAAudioChannelLayout.h */, + 8BA05AE10720742100365D66 /* CAMutex.cpp */, + 8BA05AE20720742100365D66 /* CAMutex.h */, + 8BA05AE30720742100365D66 /* CAStreamBasicDescription.cpp */, + 8BA05AE40720742100365D66 /* CAStreamBasicDescription.h */, + 3EEA126D089847F5002C6BFC /* CAVectorUnitTypes.h */, + 3EEA126B089847F5002C6BFC /* CAVectorUnit.cpp */, + 3EEA126C089847F5002C6BFC /* CAVectorUnit.h */, + ); + name = PublicUtility; + path = Extras/CoreAudio/PublicUtility; + sourceTree = SYSTEM_DEVELOPER_DIR; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 8D01CCC70486CAD60068D4B7 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 8BA05A6E0720730100365D66 /* DitherFloatVersion.h in Headers */, + 8BA05AAF072073D300365D66 /* AUBase.h in Headers */, + 8BA05AB1072073D300365D66 /* AUDispatch.h in Headers */, + 8BA05AB3072073D300365D66 /* AUInputElement.h in Headers */, + 8BA05AB5072073D300365D66 /* AUOutputElement.h in Headers */, + 8BA05AB8072073D300365D66 /* AUScopeElement.h in Headers */, + 8BA05ABA072073D300365D66 /* ComponentBase.h in Headers */, + 8BA05AC7072073D300365D66 /* AUEffectBase.h in Headers */, + 8BA05AD3072073D300365D66 /* AUBuffer.h in Headers */, + 8BA05AD5072073D300365D66 /* AUDebugDispatcher.h in Headers */, + 8BA05AD6072073D300365D66 /* AUInputFormatConverter.h in Headers */, + 8BA05AD7072073D300365D66 /* AUSilentTimeout.h in Headers */, + 8BA05AD8072073D300365D66 /* AUTimestampGenerator.h in Headers */, + 8BA05AE60720742100365D66 /* CAAudioChannelLayout.h in Headers */, + 8BA05AE80720742100365D66 /* CAMutex.h in Headers */, + 8BA05AEA0720742100365D66 /* CAStreamBasicDescription.h in Headers */, + 8BA05B080720754400365D66 /* CAAUParameter.h in Headers */, + 8BC6025C073B072D006C4272 /* DitherFloat.h in Headers */, + 3EEA126F089847F5002C6BFC /* CAVectorUnit.h in Headers */, + 3EEA1270089847F5002C6BFC /* CAVectorUnitTypes.h in Headers */, + F7C347F10ECE5AF8008ADFB6 /* AUBaseHelper.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 8D01CCC60486CAD60068D4B7 /* DitherFloat */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "DitherFloat" */; + buildPhases = ( + 8D01CCC70486CAD60068D4B7 /* Headers */, + 8D01CCC90486CAD60068D4B7 /* Resources */, + 8D01CCCB0486CAD60068D4B7 /* Sources */, + 8D01CCCD0486CAD60068D4B7 /* Frameworks */, + 8D01CCCF0486CAD60068D4B7 /* Rez */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = DitherFloat; + productInstallPath = "$(HOME)/Library/Bundles"; + productName = DitherFloat; + productReference = 8D01CCD20486CAD60068D4B7 /* DitherFloat.component */; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 089C1669FE841209C02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 3E4BA247089833B7007656EC /* Build configuration list for PBXProject "DitherFloat" */; + compatibilityVersion = "Xcode 3.1"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 089C166AFE841209C02AAC07 /* DitherFloat */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D01CCC60486CAD60068D4B7 /* DitherFloat */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D01CCC90486CAD60068D4B7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D01CCCA0486CAD60068D4B7 /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXRezBuildPhase section */ + 8D01CCCF0486CAD60068D4B7 /* Rez */ = { + isa = PBXRezBuildPhase; + buildActionMask = 2147483647; + files = ( + 8B4119B70749654200361ABE /* DitherFloat.r in Rez */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXRezBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D01CCCB0486CAD60068D4B7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8BA05A6B0720730100365D66 /* DitherFloat.cpp in Sources */, + 8BA05AAE072073D300365D66 /* AUBase.cpp in Sources */, + 8BA05AB0072073D300365D66 /* AUDispatch.cpp in Sources */, + 8BA05AB2072073D300365D66 /* AUInputElement.cpp in Sources */, + 8BA05AB4072073D300365D66 /* AUOutputElement.cpp in Sources */, + 8BA05AB7072073D300365D66 /* AUScopeElement.cpp in Sources */, + 8BA05AB9072073D300365D66 /* ComponentBase.cpp in Sources */, + 8BA05AC6072073D300365D66 /* AUEffectBase.cpp in Sources */, + 8BA05AD2072073D300365D66 /* AUBuffer.cpp in Sources */, + 8BA05AD4072073D300365D66 /* AUDebugDispatcher.cpp in Sources */, + 8BA05AE50720742100365D66 /* CAAudioChannelLayout.cpp in Sources */, + 8BA05AE70720742100365D66 /* CAMutex.cpp in Sources */, + 8BA05AE90720742100365D66 /* CAStreamBasicDescription.cpp in Sources */, + 8BA05B070720754400365D66 /* CAAUParameter.cpp in Sources */, + 3EEA126E089847F5002C6BFC /* CAVectorUnit.cpp in Sources */, + F7C347F00ECE5AF8008ADFB6 /* AUBaseHelper.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 089C167DFE841241C02AAC07 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 089C167EFE841241C02AAC07 /* English */, + ); + name = InfoPlist.strings; + sourceTree = "<group>"; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 3E4BA244089833B7007656EC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + EXPORTED_SYMBOLS_FILE = DitherFloat.exp; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GENERATE_PKGINFO_FILE = YES; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/Components/"; + LIBRARY_STYLE = Bundle; + OTHER_LDFLAGS = "-bundle"; + OTHER_REZFLAGS = "-d ppc_$ppc -d i386_$i386 -d ppc64_$ppc64 -d x86_64_$x86_64 -I /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers -I \"$(DEVELOPER_DIR)/Examples/CoreAudio/AudioUnits/AUPublic/AUBase\""; + PRODUCT_NAME = DitherFloat; + WRAPPER_EXTENSION = component; + }; + name = Debug; + }; + 3E4BA245089833B7007656EC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ( + ppc, + i386, + x86_64, + ); + EXPORTED_SYMBOLS_FILE = DitherFloat.exp; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GENERATE_PKGINFO_FILE = YES; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/Components/"; + LIBRARY_STYLE = Bundle; + MACOSX_DEPLOYMENT_TARGET = 10.4; + OTHER_LDFLAGS = "-bundle"; + OTHER_REZFLAGS = "-d ppc_$ppc -d i386_$i386 -d x86_64_$x86_64 -I /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers -I \"$(DEVELOPER_DIR)/Examples/CoreAudio/AudioUnits/AUPublic/AUBase\""; + PRODUCT_NAME = DitherFloat; + SDKROOT = macosx10.5; + STRIP_INSTALLED_PRODUCT = YES; + STRIP_STYLE = all; + WRAPPER_EXTENSION = component; + }; + name = Release; + }; + 3E4BA248089833B7007656EC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = c99; + SDKROOT = macosx10.6; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Debug; + }; + 3E4BA249089833B7007656EC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = c99; + SDKROOT = macosx10.6; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "DitherFloat" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3E4BA244089833B7007656EC /* Debug */, + 3E4BA245089833B7007656EC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 3E4BA247089833B7007656EC /* Build configuration list for PBXProject "DitherFloat" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3E4BA248089833B7007656EC /* Debug */, + 3E4BA249089833B7007656EC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; +/* End XCConfigurationList section */ + }; + rootObject = 089C1669FE841209C02AAC07 /* Project object */; +} diff --git a/plugins/MacAU/DitherFloat/DitherFloatVersion.h b/plugins/MacAU/DitherFloat/DitherFloatVersion.h new file mode 100755 index 0000000..b9f4b9b --- /dev/null +++ b/plugins/MacAU/DitherFloat/DitherFloatVersion.h @@ -0,0 +1,58 @@ +/* +* File: DitherFloatVersion.h +* +* Version: 1.0 +* +* Created: 1/11/19 +* +* Copyright: Copyright © 2019 Airwindows, All Rights Reserved +* +* Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in +* consideration of your agreement to the following terms, and your use, installation, modification +* or redistribution of this Apple software constitutes acceptance of these terms. If you do +* not agree with these terms, please do not use, install, modify or redistribute this Apple +* software. +* +* In consideration of your agreement to abide by the following terms, and subject to these terms, +* Apple grants you a personal, non-exclusive license, under Apple's copyrights in this +* original Apple software (the "Apple Software"), to use, reproduce, modify and redistribute the +* Apple Software, with or without modifications, in source and/or binary forms; provided that if you +* redistribute the Apple Software in its entirety and without modifications, you must retain this +* notice and the following text and disclaimers in all such redistributions of the Apple Software. +* Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to +* endorse or promote products derived from the Apple Software without specific prior written +* permission from Apple. Except as expressly stated in this notice, no other rights or +* licenses, express or implied, are granted by Apple herein, including but not limited to any +* patent rights that may be infringed by your derivative works or by other works in which the +* Apple Software may be incorporated. +* +* The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR +* IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY +* AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE +* OR IN COMBINATION WITH YOUR PRODUCTS. +* +* IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, +* REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER +* UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN +* IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +*/ +#ifndef __DitherFloatVersion_h__ +#define __DitherFloatVersion_h__ + + +#ifdef DEBUG + #define kDitherFloatVersion 0xFFFFFFFF +#else + #define kDitherFloatVersion 0x00010000 +#endif + +//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~// +#define DitherFloat_COMP_MANF 'Dthr' +#define DitherFloat_COMP_SUBTYPE 'dthf' +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// + +#endif + diff --git a/plugins/MacAU/DitherFloat/English.lproj/InfoPlist.strings b/plugins/MacAU/DitherFloat/English.lproj/InfoPlist.strings Binary files differnew file mode 100755 index 0000000..bb9c5d5 --- /dev/null +++ b/plugins/MacAU/DitherFloat/English.lproj/InfoPlist.strings diff --git a/plugins/MacAU/DitherFloat/Info.plist b/plugins/MacAU/DitherFloat/Info.plist new file mode 100755 index 0000000..01dc683 --- /dev/null +++ b/plugins/MacAU/DitherFloat/Info.plist @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleExecutable</key> + <string>${EXECUTABLE_NAME}</string> + <key>CFBundleIconFile</key> + <string></string> + <key>CFBundleIdentifier</key> + <string>com.airwindows.audiounit.${PRODUCT_NAME:identifier}</string> + <key>CFBundleName</key> + <string>${PROJECTNAMEASIDENTIFIER}</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundlePackageType</key> + <string>BNDL</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CFBundleSignature</key> + <string>DthX</string> + <key>CFBundleVersion</key> + <string>1.0</string> + <key>CSResourcesFileMapped</key> + <true/> +</dict> +</plist> diff --git a/plugins/MacAU/DitherFloat/version.plist b/plugins/MacAU/DitherFloat/version.plist new file mode 100755 index 0000000..11edf8a --- /dev/null +++ b/plugins/MacAU/DitherFloat/version.plist @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>BuildVersion</key> + <string>3</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CFBundleVersion</key> + <string>1.0</string> + <key>ProjectName</key> + <string>${EXECUTABLE_NAME}</string> + <key>SourceVersion</key> + <string>590000</string> +</dict> +</plist> diff --git a/plugins/MacAU/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.pbxuser index ae10e21..e01742c 100755 --- a/plugins/MacAU/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.pbxuser @@ -49,24 +49,34 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 566513740; - PBXWorkspaceStateSaveDate = 566513740; + PBXPerProjectTemplateStateSaveDate = 569599304; + PBXWorkspaceStateSaveDate = 569599304; }; perUserProjectItems = { - 8BBB304421B70E5D00825986 /* PBXTextBookmark */ = 8BBB304421B70E5D00825986 /* PBXTextBookmark */; - 8BBB329D21C4508800825986 /* PlistBookmark */ = 8BBB329D21C4508800825986 /* PlistBookmark */; + 8B792AF321F36563006E9731 /* PlistBookmark */ = 8B792AF321F36563006E9731 /* PlistBookmark */; 8BBB32A221C4509A00825986 /* PlistBookmark */ = 8BBB32A221C4509A00825986 /* PlistBookmark */; - 8BBB32A621C4509A00825986 /* PBXTextBookmark */ = 8BBB32A621C4509A00825986 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B792AF321F36563006E9731 /* PlistBookmark */ = { + isa = PlistBookmark; + fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; + fallbackIsa = PBXBookmark; + isK = 0; + kPath = ( + CFBundleName, + ); + name = /Users/christopherjohnson/Desktop/MacAU/DitherMeDiskers/Info.plist; + rLen = 0; + rLoc = 9223372036854775807; + }; 8BA05A660720730100365D66 /* DitherMeDiskers.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1082, 2964}}"; - sepNavSelRange = "{8372, 0}"; - sepNavVisRange = "{6754, 1793}"; + sepNavIntBoundsRect = "{{0, 0}, {1082, 2938}}"; + sepNavSelRange = "{7589, 0}"; + sepNavVisRange = "{6703, 1843}"; sepNavWindowFrame = "{{15, 39}, {1129, 834}}"; }; }; @@ -78,28 +88,6 @@ sepNavWindowFrame = "{{15, 39}, {1129, 834}}"; }; }; - 8BBB304421B70E5D00825986 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* DitherMeDiskers.cpp */; - name = "DitherMeDiskers.cpp: 187"; - rLen = 0; - rLoc = 8466; - rType = 0; - vrLen = 1811; - vrLoc = 6559; - }; - 8BBB329D21C4508800825986 /* PlistBookmark */ = { - isa = PlistBookmark; - fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; - fallbackIsa = PBXBookmark; - isK = 0; - kPath = ( - CFBundleName, - ); - name = /Users/christopherjohnson/Desktop/MacAU/DitherMeDiskers/Info.plist; - rLen = 0; - rLoc = 9223372036854775807; - }; 8BBB32A221C4509A00825986 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; @@ -112,16 +100,6 @@ rLen = 26; rLoc = 0; }; - 8BBB32A621C4509A00825986 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* DitherMeDiskers.cpp */; - name = "DitherMeDiskers.cpp: 192"; - rLen = 0; - rLoc = 8372; - rType = 0; - vrLen = 1793; - vrLoc = 6754; - }; 8BC6025B073B072D006C4272 /* DitherMeDiskers.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {1082, 1664}}"; diff --git a/plugins/MacAU/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.perspectivev3 index 663d212..214721f 100755 --- a/plugins/MacAU/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.perspectivev3 @@ -222,48 +222,7 @@ </dict> </array> <key>OpenEditors</key> - <array> - <dict> - <key>Content</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>8BBB303C21B70E4F00825986</string> - <key>PBXProjectModuleLabel</key> - <string>DitherMeDiskers.cpp</string> - <key>PBXSplitModuleInNavigatorKey</key> - <dict> - <key>Split0</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>8BBB303D21B70E4F00825986</string> - <key>PBXProjectModuleLabel</key> - <string>DitherMeDiskers.cpp</string> - <key>_historyCapacity</key> - <integer>0</integer> - <key>bookmark</key> - <string>8BBB32A621C4509A00825986</string> - <key>history</key> - <array> - <string>8BBB304421B70E5D00825986</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}, {1129, 737}}</string> - <key>PBXModuleWindowStatusBarHidden2</key> - <false/> - <key>RubberWindowFrame</key> - <string>15 95 1129 778 0 0 1440 878 </string> - </dict> - </dict> - </array> + <array/> <key>PerspectiveWidths</key> <array> <integer>841</integer> @@ -297,6 +256,8 @@ <key>Layout</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -365,7 +326,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>16 205 841 654 0 0 1440 878 </string> + <string>67 204 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -393,10 +354,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BBB32A221C4509A00825986</string> + <string>8B792AF321F36563006E9731</string> <key>history</key> <array> - <string>8BBB329D21C4508800825986</string> + <string>8BBB32A221C4509A00825986</string> </array> </dict> <key>SplitCount</key> @@ -410,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 229}}</string> + <string>{{0, 0}, {531, 216}}</string> <key>RubberWindowFrame</key> - <string>16 205 841 654 0 0 1440 878 </string> + <string>67 204 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>229pt</string> + <string>216pt</string> </dict> <dict> <key>Proportion</key> - <string>379pt</string> + <string>392pt</string> <key>Tabs</key> <array> <dict> @@ -435,7 +396,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 352}}</string> + <string>{{10, 27}, {531, 365}}</string> + <key>RubberWindowFrame</key> + <string>67 204 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -490,8 +453,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {531, 352}}</string> - <key>RubberWindowFrame</key> - <string>16 205 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -519,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBB32A321C4509A00825986</string> + <string>8B792AF421F36563006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBB32A421C4509A00825986</string> + <string>8B792AF521F36563006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8BBB32A521C4509A00825986</string> + <string>8B792AF621F36563006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -696,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>566513818.26343</real> + <real>569599331.99398303</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -713,11 +674,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BBB303C21B70E4F00825986</string> <string>/Users/christopherjohnson/Desktop/MacAU/DitherMeDiskers/DitherMeDiskers.xcodeproj</string> </array> <key>WindowString</key> - <string>16 205 841 654 0 0 1440 878 </string> + <string>67 204 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.cpp b/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.cpp index a9c5963..7651fda 100755 --- a/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.cpp +++ b/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.cpp @@ -177,10 +177,10 @@ void DitherMeTimbers::DitherMeTimbersKernel::Process( const Float32 *inSourceP if ((lastSample+lastSample) >= (inputSample+lastSample2)) outputSample = floor(lastSample); else outputSample = floor(lastSample+1.0); //round down or up based on whether it softens treble angles - + lastSample2 = lastSample; lastSample = inputSample; //we retain three samples in a row - + noiseShaping += outputSample; noiseShaping -= lastSample; @@ -199,6 +199,3 @@ void DitherMeTimbers::DitherMeTimbersKernel::Process( const Float32 *inSourceP destP += inNumChannels; } } - - - diff --git a/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.h b/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.h index 28c3eb4..abc959d 100755 --- a/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.h +++ b/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.h @@ -119,8 +119,8 @@ public: private: long double noiseShaping; - Float64 lastSample; - Float64 lastSample2; + long double lastSample; + long double lastSample2; }; }; diff --git a/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.pbxuser index 7f19694..45e9d2e 100755 --- a/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.pbxuser @@ -51,13 +51,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 566513924; - PBXWorkspaceStateSaveDate = 566513924; + PBXPerProjectTemplateStateSaveDate = 569599350; + PBXWorkspaceStateSaveDate = 569599350; }; perUserProjectItems = { 8B416D5621B6000500DD5013 /* PlistBookmark */ = 8B416D5621B6000500DD5013 /* PlistBookmark */; - 8BBB329121C4504400825986 /* PBXTextBookmark */ = 8BBB329121C4504400825986 /* PBXTextBookmark */; - 8BBB32D021C4524300825986 /* PBXTextBookmark */ = 8BBB32D021C4524300825986 /* PBXTextBookmark */; + 8B792B0221F3657A006E9731 /* PBXTextBookmark */ = 8B792B0221F3657A006E9731 /* PBXTextBookmark */; + 8B792B0821F365A0006E9731 /* PBXTextBookmark */ = 8B792B0821F365A0006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -75,11 +75,31 @@ rLen = 0; rLoc = 9223372036854775808; }; + 8B792B0221F3657A006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* DitherMeTimbers.cpp */; + name = "DitherMeTimbers.cpp: 202"; + rLen = 0; + rLoc = 8558; + rType = 0; + vrLen = 152; + vrLoc = 8165; + }; + 8B792B0821F365A0006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* DitherMeTimbers.cpp */; + name = "DitherMeTimbers.cpp: 202"; + rLen = 0; + rLoc = 8558; + rType = 0; + vrLen = 335; + vrLoc = 7733; + }; 8BA05A660720730100365D66 /* DitherMeTimbers.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {789, 2808}}"; - sepNavSelRange = "{8279, 0}"; - sepNavVisRange = "{8161, 245}"; + sepNavIntBoundsRect = "{{0, 0}, {789, 2834}}"; + sepNavSelRange = "{8558, 0}"; + sepNavVisRange = "{7733, 335}"; sepNavWindowFrame = "{{311, 44}, {1129, 834}}"; }; }; @@ -91,31 +111,11 @@ sepNavWindowFrame = "{{311, 44}, {1129, 834}}"; }; }; - 8BBB329121C4504400825986 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* DitherMeTimbers.cpp */; - name = "DitherMeTimbers.cpp: 188"; - rLen = 0; - rLoc = 8279; - rType = 0; - vrLen = 252; - vrLoc = 8161; - }; - 8BBB32D021C4524300825986 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* DitherMeTimbers.cpp */; - name = "DitherMeTimbers.cpp: 188"; - rLen = 0; - rLoc = 8279; - rType = 0; - vrLen = 245; - vrLoc = 8161; - }; 8BC6025B073B072D006C4272 /* DitherMeTimbers.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {1082, 1690}}"; - sepNavSelRange = "{4971, 45}"; - sepNavVisRange = "{2662, 1719}"; + sepNavSelRange = "{4943, 81}"; + sepNavVisRange = "{3376, 1757}"; sepNavWindowFrame = "{{311, 44}, {1129, 834}}"; }; }; diff --git a/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.perspectivev3 index 349f556..f9c57cc 100755 --- a/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.perspectivev3 @@ -302,7 +302,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>4</integer> + <integer>3</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> @@ -354,11 +354,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BBB32D021C4524300825986</string> + <string>8B792B0821F365A0006E9731</string> <key>history</key> <array> <string>8B416D5621B6000500DD5013</string> - <string>8BBB329121C4504400825986</string> + <string>8B792B0221F3657A006E9731</string> </array> </dict> <key>SplitCount</key> @@ -372,18 +372,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 158}}</string> + <string>{{0, 0}, {531, 109}}</string> <key>RubberWindowFrame</key> <string>594 193 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>158pt</string> + <string>109pt</string> </dict> <dict> <key>Proportion</key> - <string>450pt</string> + <string>499pt</string> <key>Tabs</key> <array> <dict> @@ -397,9 +397,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 423}}</string> - <key>RubberWindowFrame</key> - <string>594 193 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 472}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -453,7 +451,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 408}}</string> + <string>{{10, 27}, {531, 472}}</string> + <key>RubberWindowFrame</key> + <string>594 193 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -481,11 +481,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBB32D121C4524300825986</string> + <string>8B792B0921F365A0006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBB32D221C4524300825986</string> + <string>8B792B0A21F365A0006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8BBB32D321C4524300825986</string> + <string>8B792B0B21F365A0006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -658,7 +658,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>566514243.55308604</real> + <real>569599392.67723703</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> diff --git a/plugins/MacAU/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.pbxuser index 3c31d7a..bb2bf83 100755 --- a/plugins/MacAU/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.pbxuser @@ -51,18 +51,28 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 557696136; - PBXWorkspaceStateSaveDate = 557696136; + PBXPerProjectTemplateStateSaveDate = 569598344; + PBXWorkspaceStateSaveDate = 569598344; }; perUserProjectItems = { + 8B792AE321F361B2006E9731 /* PBXTextBookmark */ = 8B792AE321F361B2006E9731 /* PBXTextBookmark */; 8B913FA3213DBD2F00BA6EEC /* PBXTextBookmark */ = 8B913FA3213DBD2F00BA6EEC /* PBXTextBookmark */; - 8B913FE1213DC54C00BA6EEC /* PBXTextBookmark */ = 8B913FE1213DC54C00BA6EEC /* PBXTextBookmark */; 8B913FEB213DC5A500BA6EEC /* PBXTextBookmark */ = 8B913FEB213DC5A500BA6EEC /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B792AE321F361B2006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* Ditherbox.h */; + name = "Ditherbox.h: 216"; + rLen = 0; + rLoc = 8486; + rType = 0; + vrLen = 206; + vrLoc = 132; + }; 8B913FA3213DBD2F00BA6EEC /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Ditherbox.cpp */; @@ -73,16 +83,6 @@ vrLen = 342; vrLoc = 10516; }; - 8B913FE1213DC54C00BA6EEC /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* Ditherbox.h */; - name = "Ditherbox.h: 216"; - rLen = 0; - rLoc = 8486; - rType = 0; - vrLen = 209; - vrLoc = 129; - }; 8B913FEB213DC5A500BA6EEC /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* Ditherbox.h */; @@ -95,9 +95,9 @@ }; 8BA05A660720730100365D66 /* Ditherbox.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {978, 11076}}"; + sepNavIntBoundsRect = "{{0, 0}, {978, 10829}}"; sepNavSelRange = "{11237, 0}"; - sepNavVisRange = "{1680, 2418}"; + sepNavVisRange = "{29519, 1747}"; sepNavWindowFrame = "{{471, 45}, {816, 833}}"; }; }; @@ -127,9 +127,9 @@ }; 8BC6025B073B072D006C4272 /* Ditherbox.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {803, 3003}}"; + sepNavIntBoundsRect = "{{0, 0}, {803, 2990}}"; sepNavSelRange = "{8486, 0}"; - sepNavVisRange = "{129, 209}"; + sepNavVisRange = "{132, 206}"; sepNavWindowFrame = "{{419, 78}, {1021, 800}}"; }; }; diff --git a/plugins/MacAU/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.perspectivev3 index efe3540..2486243 100755 --- a/plugins/MacAU/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.perspectivev3 @@ -256,6 +256,8 @@ <key>Layout</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -350,11 +352,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B913FEB213DC5A500BA6EEC</string> + <string>8B792AE321F361B2006E9731</string> <key>history</key> <array> <string>8B913FA3213DBD2F00BA6EEC</string> - <string>8B913FE1213DC54C00BA6EEC</string> + <string>8B913FEB213DC5A500BA6EEC</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 69}}</string> + <string>{{0, 0}, {603, 51}}</string> <key>RubberWindowFrame</key> <string>468 237 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>69pt</string> + <string>51pt</string> </dict> <dict> <key>Proportion</key> - <string>372pt</string> + <string>390pt</string> <key>Tabs</key> <array> <dict> @@ -393,7 +395,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 345}}</string> + <string>{{10, 27}, {603, 363}}</string> + <key>RubberWindowFrame</key> + <string>468 237 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -448,8 +452,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 345}}</string> - <key>RubberWindowFrame</key> - <string>468 237 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -477,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B913FB1213DC48A00BA6EEC</string> + <string>8B792AE421F361B2006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B913FB2213DC48A00BA6EEC</string> + <string>8B792AE521F361B2006E9731</string> <string>8B9E7EE61DDE28AC006035FA</string> - <string>8B913FB3213DC48A00BA6EEC</string> + <string>8B792AE621F361B2006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>557696421.06510198</real> + <real>569598386.47118104</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> diff --git a/plugins/MacAU/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.pbxuser index 76f3628..0076005 100755 --- a/plugins/MacAU/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.pbxuser @@ -49,15 +49,15 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528455820; - PBXWorkspaceStateSaveDate = 528455820; + PBXPerProjectTemplateStateSaveDate = 569599414; + PBXWorkspaceStateSaveDate = 569599414; }; perUserProjectItems = { 8B753DD21E4005B300347157 /* PlistBookmark */ = 8B753DD21E4005B300347157 /* PlistBookmark */; - 8B9D64691F7C8512007AB60F /* PBXTextBookmark */ = 8B9D64691F7C8512007AB60F /* PBXTextBookmark */; - 8B9D73DB1F7F98B0007AB60F /* PBXTextBookmark */ = 8B9D73DB1F7F98B0007AB60F /* PBXTextBookmark */; + 8B792B1921F365CE006E9731 /* PBXTextBookmark */ = 8B792B1921F365CE006E9731 /* PBXTextBookmark */; + 8B913F30213DB8AA00BA6EEC /* PBXTextBookmark */ = 8B913F30213DB8AA00BA6EEC /* PBXTextBookmark */; + 8B913FCD213DC4EE00BA6EEC /* PBXTextBookmark */ = 8B913FCD213DC4EE00BA6EEC /* PBXTextBookmark */; 8BB6DE001E5A8BDB00F3CD1D /* PBXTextBookmark */ = 8BB6DE001E5A8BDB00F3CD1D /* PBXTextBookmark */; - 8BB6DE011E5A8BDB00F3CD1D /* PBXTextBookmark */ = 8BB6DE011E5A8BDB00F3CD1D /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -75,39 +75,49 @@ rLen = 0; rLoc = 9223372036854775808; }; - 8B9D64691F7C8512007AB60F /* PBXTextBookmark */ = { + 8B792B1921F365CE006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BA05A690720730100365D66 /* DoublePaulVersion.h */; - name = "DoublePaulVersion.h: 54"; + fRef = 8BA05A660720730100365D66 /* DoublePaul.cpp */; + name = "DoublePaul.cpp: 219"; rLen = 0; - rLoc = 2901; + rLoc = 9846; rType = 0; - vrLen = 357; - vrLoc = 2598; + vrLen = 152; + vrLoc = 9879; }; - 8B9D73DB1F7F98B0007AB60F /* PBXTextBookmark */ = { + 8B913F30213DB8AA00BA6EEC /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A690720730100365D66 /* DoublePaulVersion.h */; name = "DoublePaulVersion.h: 54"; rLen = 0; rLoc = 2901; rType = 0; - vrLen = 354; - vrLoc = 2601; + vrLen = 290; + vrLoc = 2665; + }; + 8B913FCD213DC4EE00BA6EEC /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* DoublePaul.cpp */; + name = "DoublePaul.cpp: 219"; + rLen = 0; + rLoc = 9846; + rType = 0; + vrLen = 474; + vrLoc = 8093; }; 8BA05A660720730100365D66 /* DoublePaul.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {876, 3159}}"; - sepNavSelRange = "{7552, 0}"; - sepNavVisRange = "{6507, 2681}"; - sepNavWindowFrame = "{{517, 41}, {923, 837}}"; + sepNavIntBoundsRect = "{{0, 0}, {677, 3068}}"; + sepNavSelRange = "{9846, 0}"; + sepNavVisRange = "{9879, 152}"; + sepNavWindowFrame = "{{42, 39}, {923, 837}}"; }; }; 8BA05A690720730100365D66 /* DoublePaulVersion.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {824, 819}}"; + sepNavIntBoundsRect = "{{0, 0}, {824, 858}}"; sepNavSelRange = "{2901, 0}"; - sepNavVisRange = "{2601, 354}"; + sepNavVisRange = "{2665, 290}"; sepNavWindowFrame = "{{15, 39}, {923, 837}}"; }; }; @@ -121,22 +131,12 @@ vrLen = 412; vrLoc = 4667; }; - 8BB6DE011E5A8BDB00F3CD1D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* DoublePaul.cpp */; - name = "DoublePaul.cpp: 193"; - rLen = 0; - rLoc = 9846; - rType = 0; - vrLen = 595; - vrLoc = 8025; - }; 8BC6025B073B072D006C4272 /* DoublePaul.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {894, 1703}}"; sepNavSelRange = "{4958, 19}"; - sepNavVisRange = "{1786, 1948}"; - sepNavWindowFrame = "{{509, 12}, {923, 837}}"; + sepNavVisRange = "{3359, 1727}"; + sepNavWindowFrame = "{{38, 12}, {923, 837}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.perspectivev3 index a45f5ce..9124a10 100755 --- a/plugins/MacAU/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.perspectivev3 @@ -325,7 +325,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>328 180 841 654 0 0 1440 878 </string> + <string>19 213 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -341,7 +341,7 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274A1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>DoublePaulVersion.h</string> + <string>DoublePaul.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -349,17 +349,17 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274B1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>DoublePaulVersion.h</string> + <string>DoublePaul.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D73DB1F7F98B0007AB60F</string> + <string>8B792B1921F365CE006E9731</string> <key>history</key> <array> <string>8B753DD21E4005B300347157</string> <string>8BB6DE001E5A8BDB00F3CD1D</string> - <string>8BB6DE011E5A8BDB00F3CD1D</string> - <string>8B9D64691F7C8512007AB60F</string> + <string>8B913F30213DB8AA00BA6EEC</string> + <string>8B913FCD213DC4EE00BA6EEC</string> </array> </dict> <key>SplitCount</key> @@ -373,18 +373,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 202}}</string> + <string>{{0, 0}, {531, 158}}</string> <key>RubberWindowFrame</key> - <string>328 180 841 654 0 0 1440 878 </string> + <string>19 213 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>202pt</string> + <string>158pt</string> </dict> <dict> <key>Proportion</key> - <string>406pt</string> + <string>450pt</string> <key>Tabs</key> <array> <dict> @@ -398,9 +398,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 379}}</string> + <string>{{10, 27}, {531, 423}}</string> <key>RubberWindowFrame</key> - <string>328 180 841 654 0 0 1440 878 </string> + <string>19 213 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -482,11 +482,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D73DC1F7F98B0007AB60F</string> + <string>8B792B1A21F365CE006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D73DD1F7F98B0007AB60F</string> + <string>8B792B1B21F365CE006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D73DE1F7F98B0007AB60F</string> + <string>8B792B1C21F365CE006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -659,7 +659,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528455856.515679</real> + <real>569599438.68596196</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -676,11 +676,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D73DF1F7F98B0007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/DoublePaul/DoublePaul.xcodeproj</string> </array> <key>WindowString</key> - <string>328 180 841 654 0 0 1440 878 </string> + <string>19 213 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Drive/Drive.cpp b/plugins/MacAU/Drive/Drive.cpp index 179d9ae..ab3c0bc 100755 --- a/plugins/MacAU/Drive/Drive.cpp +++ b/plugins/MacAU/Drive/Drive.cpp @@ -184,8 +184,7 @@ void Drive::DriveKernel::Reset() { iirSampleA = 0.0; iirSampleB = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; + fpNShape = 0.0; fpFlip = true; } @@ -220,10 +219,6 @@ void Drive::DriveKernel::Process( const Float32 *inSourceP, Float64 glitch = 0.60; Float64 out; - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; - while (nSampleFrames-- > 0) { inputSample = *sourceP; if (inputSample<1.2e-38 && -inputSample<1.2e-38) { @@ -282,20 +277,13 @@ void Drive::DriveKernel::Process( const Float32 *inSourceP, if (wet < 1.0) inputSample = (drySample * dry)+(inputSample*wet); //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/Drive/Drive.exp b/plugins/MacAU/Drive/Drive.exp index f23aad0..caa6fe9 100755 --- a/plugins/MacAU/Drive/Drive.exp +++ b/plugins/MacAU/Drive/Drive.exp @@ -1 +1 @@ -_DriveEntry
\ No newline at end of file +_DriveEntry diff --git a/plugins/MacAU/Drive/Drive.h b/plugins/MacAU/Drive/Drive.h index 83be2b2..0e4af2a 100755 --- a/plugins/MacAU/Drive/Drive.h +++ b/plugins/MacAU/Drive/Drive.h @@ -139,8 +139,7 @@ public: private: Float64 iirSampleA; Float64 iirSampleB; - Float64 fpNShapeA; - Float64 fpNShapeB; + long double fpNShape; bool fpFlip; }; }; diff --git a/plugins/MacAU/Drive/Drive.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Drive/Drive.xcodeproj/christopherjohnson.pbxuser index 948474f..8cd024d 100755 --- a/plugins/MacAU/Drive/Drive.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Drive/Drive.xcodeproj/christopherjohnson.pbxuser @@ -49,13 +49,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 559395484; - PBXWorkspaceStateSaveDate = 559395484; + PBXPerProjectTemplateStateSaveDate = 569599476; + PBXWorkspaceStateSaveDate = 569599476; }; perUserProjectItems = { 8B3D790A1DB4057D00247AD5 /* PBXTextBookmark */ = 8B3D790A1DB4057D00247AD5 /* PBXTextBookmark */; - 8BE626152157B2BF00E4E476 /* PBXTextBookmark */ = 8BE626152157B2BF00E4E476 /* PBXTextBookmark */; - 8BE626162157B2BF00E4E476 /* PBXTextBookmark */ = 8BE626162157B2BF00E4E476 /* PBXTextBookmark */; + 8B792B2A21F36661006E9731 /* PBXTextBookmark */ = 8B792B2A21F36661006E9731 /* PBXTextBookmark */; + 8B792B3021F36679006E9731 /* PBXTextBookmark */ = 8B792B3021F36679006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -71,12 +71,40 @@ vrLen = 59; vrLoc = 0; }; + 8B792B2A21F36661006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Drive.cpp */; + name = "Drive.cpp: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 64; + vrLoc = 0; + }; + 8B792B3021F36679006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Drive.cpp */; + name = "Drive.cpp: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 64; + vrLoc = 0; + }; 8BA05A660720730100365D66 /* Drive.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {803, 4056}}"; + sepNavIntBoundsRect = "{{0, 0}, {803, 3991}}"; sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 127}"; - sepNavWindowFrame = "{{537, 59}, {895, 819}}"; + sepNavVisRange = "{0, 64}"; + sepNavWindowFrame = "{{423, 59}, {895, 819}}"; + }; + }; + 8BA05A670720730100365D66 /* Drive.exp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1253, 694}}"; + sepNavSelRange = "{12, 0}"; + sepNavVisRange = "{0, 12}"; + sepNavWindowFrame = "{{15, 51}, {1300, 822}}"; }; }; 8BA05A690720730100365D66 /* DriveVersion.h */ = { @@ -89,9 +117,9 @@ }; 8BC6025B073B072D006C4272 /* Drive.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {856, 1963}}"; - sepNavSelRange = "{5553, 57}"; - sepNavVisRange = "{4498, 1221}"; + sepNavIntBoundsRect = "{{0, 0}, {856, 2184}}"; + sepNavSelRange = "{5576, 0}"; + sepNavVisRange = "{4496, 1205}"; sepNavWindowFrame = "{{517, 162}, {903, 692}}"; }; }; @@ -109,26 +137,6 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8BE626152157B2BF00E4E476 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* Drive.cpp */; - name = "Drive.cpp: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 127; - vrLoc = 0; - }; - 8BE626162157B2BF00E4E476 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* Drive.cpp */; - name = "Drive.cpp: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 127; - vrLoc = 0; - }; 8D01CCC60486CAD60068D4B7 /* Drive */ = { activeExec = 0; }; diff --git a/plugins/MacAU/Drive/Drive.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Drive/Drive.xcodeproj/christopherjohnson.perspectivev3 index 09b8cfc..a684ee9 100755 --- a/plugins/MacAU/Drive/Drive.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Drive/Drive.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>810</integer> + <integer>810</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -300,7 +298,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>4</integer> + <integer>5</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>624 381 810 487 0 0 1440 878 </string> + <string>511 370 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,11 +350,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BE626162157B2BF00E4E476</string> + <string>8B792B3021F36679006E9731</string> <key>history</key> <array> <string>8B3D790A1DB4057D00247AD5</string> - <string>8BE626152157B2BF00E4E476</string> + <string>8B792B2A21F36661006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 132}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> - <string>624 381 810 487 0 0 1440 878 </string> + <string>511 370 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> - <key>RubberWindowFrame</key> - <string>624 381 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 297}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {603, 297}}</string> + <key>RubberWindowFrame</key> + <string>511 370 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BE626172157B2BF00E4E476</string> + <string>8B792B3121F36679006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BE626182157B2BF00E4E476</string> + <string>8B792B3221F36679006E9731</string> <string>8BE3FFB51DAAD42E00A5AAF5</string> - <string>8BE626192157B2BF00E4E476</string> + <string>8B792B3321F36679006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>559395519.27228796</real> + <real>569599609.11398804</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,10 +651,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> + <string>8B792B3421F36679006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/Drive/Drive.xcodeproj</string> </array> <key>WindowString</key> - <string>624 381 810 487 0 0 1440 878 </string> + <string>511 370 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/DrumSlam/DrumSlam.cpp b/plugins/MacAU/DrumSlam/DrumSlam.cpp index 50053f3..8002ede 100755 --- a/plugins/MacAU/DrumSlam/DrumSlam.cpp +++ b/plugins/MacAU/DrumSlam/DrumSlam.cpp @@ -183,9 +183,8 @@ void DrumSlam::DrumSlamKernel::Reset() iirSampleG = 0.0; iirSampleH = 0.0; lastSample = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; + fpFlip = false; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -216,8 +215,6 @@ void DrumSlam::DrumSlamKernel::Process( const Float32 *inSourceP, Float64 out = GetParameter( kParam_Two ); Float64 wet = GetParameter( kParam_Three ); Float64 dry = 1.0 - wet; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; while (nSampleFrames-- > 0) { long double inputSample = *sourceP; @@ -320,21 +317,13 @@ void DrumSlam::DrumSlamKernel::Process( const Float32 *inSourceP, if (wet < 1.0) { inputSample = (drySample * dry)+(inputSample*wet); } - - //noise shaping to 32-bit floating point - Float32 fpTemp; - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; diff --git a/plugins/MacAU/DrumSlam/DrumSlam.h b/plugins/MacAU/DrumSlam/DrumSlam.h index 2222f01..99d3058 100755 --- a/plugins/MacAU/DrumSlam/DrumSlam.h +++ b/plugins/MacAU/DrumSlam/DrumSlam.h @@ -140,8 +140,7 @@ public: Float64 iirSampleG; Float64 iirSampleH; Float64 lastSample; - long double fpNShapeA; - long double fpNShapeB; + long double fpNShape; bool fpFlip; }; }; diff --git a/plugins/MacAU/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.pbxuser index 549e398..fed09c8 100755 --- a/plugins/MacAU/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.pbxuser @@ -49,54 +49,65 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 547825387; - PBXWorkspaceStateSaveDate = 547825387; + PBXPerProjectTemplateStateSaveDate = 569599635; + PBXWorkspaceStateSaveDate = 569599635; }; perUserProjectItems = { + 8B792B4421F36707006E9731 /* PBXTextBookmark */ = 8B792B4421F36707006E9731 /* PBXTextBookmark */; + 8B792B4521F36707006E9731 /* PBXTextBookmark */ = 8B792B4521F36707006E9731 /* PBXTextBookmark */; + 8B792B5221F36735006E9731 /* PBXTextBookmark */ = 8B792B5221F36735006E9731 /* PBXTextBookmark */; 8B7E3F2E20A72F9500482CB5 /* PBXTextBookmark */ = 8B7E3F2E20A72F9500482CB5 /* PBXTextBookmark */; - 8B7E3F2F20A72F9500482CB5 /* PBXTextBookmark */ = 8B7E3F2F20A72F9500482CB5 /* PBXTextBookmark */; - 8B7E3F3020A72F9500482CB5 /* PBXTextBookmark */ = 8B7E3F3020A72F9500482CB5 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B7E3F2E20A72F9500482CB5 /* PBXTextBookmark */ = { + 8B792B4421F36707006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BA05A690720730100365D66 /* DrumSlamVersion.h */; - name = "DrumSlamVersion.h: 1"; + fRef = 8BA05A660720730100365D66 /* DrumSlam.cpp */; + name = "DrumSlam.cpp: 314"; rLen = 0; - rLoc = 0; + rLoc = 13827; rType = 0; - vrLen = 397; - vrLoc = 3021; + vrLen = 237; + vrLoc = 13982; }; - 8B7E3F2F20A72F9500482CB5 /* PBXTextBookmark */ = { + 8B792B4521F36707006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* DrumSlam.cpp */; - name = "DrumSlam.cpp: 329"; + fRef = 8BC6025B073B072D006C4272 /* DrumSlam.h */; + name = "DrumSlam.h: 143"; rLen = 0; - rLoc = 13944; + rLoc = 5485; rType = 0; - vrLen = 318; - vrLoc = 13904; + vrLen = 119; + vrLoc = 5359; }; - 8B7E3F3020A72F9500482CB5 /* PBXTextBookmark */ = { + 8B792B5221F36735006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* DrumSlam.cpp */; - name = "DrumSlam.cpp: 318"; + fRef = 8BC6025B073B072D006C4272 /* DrumSlam.h */; + name = "DrumSlam.h: 144"; rLen = 0; - rLoc = 13944; + rLoc = 5485; rType = 0; - vrLen = 201; - vrLoc = 14073; + vrLen = 131; + vrLoc = 5359; + }; + 8B7E3F2E20A72F9500482CB5 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A690720730100365D66 /* DrumSlamVersion.h */; + name = "DrumSlamVersion.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 397; + vrLoc = 3021; }; 8BA05A660720730100365D66 /* DrumSlam.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {852, 4810}}"; - sepNavSelRange = "{13944, 0}"; - sepNavVisRange = "{14073, 201}"; - sepNavWindowFrame = "{{291, 66}, {1145, 812}}"; + sepNavIntBoundsRect = "{{0, 0}, {1098, 4472}}"; + sepNavSelRange = "{13975, 0}"; + sepNavVisRange = "{12035, 1944}"; + sepNavWindowFrame = "{{208, 66}, {1145, 812}}"; }; }; 8BA05A670720730100365D66 /* DrumSlam.exp */ = { @@ -116,10 +127,10 @@ }; 8BC6025B073B072D006C4272 /* DrumSlam.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {960, 1976}}"; - sepNavSelRange = "{5249, 198}"; - sepNavVisRange = "{1784, 1800}"; - sepNavWindowFrame = "{{673, 59}, {1007, 819}}"; + sepNavIntBoundsRect = "{{0, 0}, {656, 2132}}"; + sepNavSelRange = "{5485, 0}"; + sepNavVisRange = "{5359, 131}"; + sepNavWindowFrame = "{{433, 59}, {1007, 819}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.perspectivev3 index 5b5c6ba..882f5c2 100755 --- a/plugins/MacAU/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>4</integer> + <integer>3</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> @@ -324,7 +324,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>618 344 810 487 0 0 1440 878 </string> + <string>526 350 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -340,7 +340,7 @@ <key>PBXProjectModuleGUID</key> <string>8BBDB99F208BFC67006F0D04</string> <key>PBXProjectModuleLabel</key> - <string>DrumSlam.cpp</string> + <string>DrumSlam.h</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -348,15 +348,16 @@ <key>PBXProjectModuleGUID</key> <string>8BBDB9A0208BFC67006F0D04</string> <key>PBXProjectModuleLabel</key> - <string>DrumSlam.cpp</string> + <string>DrumSlam.h</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B7E3F3020A72F9500482CB5</string> + <string>8B792B5221F36735006E9731</string> <key>history</key> <array> <string>8B7E3F2E20A72F9500482CB5</string> - <string>8B7E3F2F20A72F9500482CB5</string> + <string>8B792B4421F36707006E9731</string> + <string>8B792B4521F36707006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 132}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> - <string>618 344 810 487 0 0 1440 878 </string> + <string>526 350 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> - <key>RubberWindowFrame</key> - <string>618 344 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 297}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 297}}</string> + <key>RubberWindowFrame</key> + <string>526 350 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B7E3F3120A72F9500482CB5</string> + <string>8B792B4721F36707006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B7E3F3220A72F9500482CB5</string> + <string>8B792B4821F36707006E9731</string> <string>8BBDB99F208BFC67006F0D04</string> - <string>8B7E3F3320A72F9500482CB5</string> + <string>8B792B4921F36707006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +637,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>547827605.06235003</real> + <real>569599797.07027304</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -656,7 +657,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/DrumSlam/DrumSlam.xcodeproj</string> </array> <key>WindowString</key> - <string>618 344 810 487 0 0 1440 878 </string> + <string>526 350 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/DubCenter/DubCenter.cpp b/plugins/MacAU/DubCenter/DubCenter.cpp index e0bfcae..397d118 100755 --- a/plugins/MacAU/DubCenter/DubCenter.cpp +++ b/plugins/MacAU/DubCenter/DubCenter.cpp @@ -608,18 +608,14 @@ OSStatus DubCenter::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla bflip++; if (bflip < 1 || bflip > 3) bflip = 1; - //noise shaping to 32-bit floating point - Float32 fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((Float32)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *outputL = inputSampleL; *outputR = inputSampleR; @@ -630,12 +626,6 @@ OSStatus DubCenter::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla outputL += 1; outputR += 1; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. return noErr; } diff --git a/plugins/MacAU/DubCenter/DubCenter.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/DubCenter/DubCenter.xcodeproj/christopherjohnson.pbxuser index 7ca3e9a..92a76a9 100755 --- a/plugins/MacAU/DubCenter/DubCenter.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/DubCenter/DubCenter.xcodeproj/christopherjohnson.pbxuser @@ -49,50 +49,50 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 561682686; - PBXWorkspaceStateSaveDate = 561682686; + PBXPerProjectTemplateStateSaveDate = 569601995; + PBXWorkspaceStateSaveDate = 569601995; }; perUserProjectItems = { - 8B15DBE021788E16007AD769 /* PBXTextBookmark */ = 8B15DBE021788E16007AD769 /* PBXTextBookmark */; - 8B15DC9D217A9A34007AD769 /* PBXTextBookmark */ = 8B15DC9D217A9A34007AD769 /* PBXTextBookmark */; + 8B792B6021F37032006E9731 /* PBXTextBookmark */ = 8B792B6021F37032006E9731 /* PBXTextBookmark */; + 8B792B6521F37044006E9731 /* PBXTextBookmark */ = 8B792B6521F37044006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B15DBE021788E16007AD769 /* PBXTextBookmark */ = { + 8B792B6021F37032006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A690720730100365D66 /* DubCenterVersion.h */; name = "DubCenterVersion.h: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 138; + vrLen = 72; vrLoc = 0; }; - 8B15DC9D217A9A34007AD769 /* PBXTextBookmark */ = { + 8B792B6521F37044006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A690720730100365D66 /* DubCenterVersion.h */; name = "DubCenterVersion.h: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 75; + vrLen = 72; vrLoc = 0; }; 8BA05A660720730100365D66 /* DubCenter.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {843, 8515}}"; - sepNavSelRange = "{21662, 0}"; - sepNavVisRange = "{18060, 2145}"; - sepNavWindowFrame = "{{524, 68}, {890, 810}}"; + sepNavIntBoundsRect = "{{0, 0}, {843, 8710}}"; + sepNavSelRange = "{25766, 0}"; + sepNavVisRange = "{12612, 2162}"; + sepNavWindowFrame = "{{418, 60}, {890, 810}}"; }; }; 8BA05A690720730100365D66 /* DubCenterVersion.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {803, 845}}"; sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 75}"; + sepNavVisRange = "{0, 72}"; sepNavWindowFrame = "{{15, 63}, {890, 810}}"; }; }; @@ -106,9 +106,9 @@ 8BC6025B073B072D006C4272 /* DubCenter.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {894, 2626}}"; - sepNavSelRange = "{6309, 802}"; - sepNavVisRange = "{1890, 2172}"; - sepNavWindowFrame = "{{743, 68}, {890, 810}}"; + sepNavSelRange = "{6647, 0}"; + sepNavVisRange = "{6253, 1011}"; + sepNavWindowFrame = "{{550, 68}, {890, 810}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/DubCenter/DubCenter.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/DubCenter/DubCenter.xcodeproj/christopherjohnson.perspectivev3 index 9e4deb2..db80a2d 100755 --- a/plugins/MacAU/DubCenter/DubCenter.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/DubCenter/DubCenter.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>824 324 573 517 0 0 1440 878 </string> + <string>506 318 573 517 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,10 +350,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B15DC9D217A9A34007AD769</string> + <string>8B792B6521F37044006E9731</string> <key>history</key> <array> - <string>8B15DBE021788E16007AD769</string> + <string>8B792B6021F37032006E9731</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +367,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {366, 119}}</string> + <string>{{0, 0}, {366, 103}}</string> <key>RubberWindowFrame</key> - <string>824 324 573 517 0 0 1440 878 </string> + <string>506 318 573 517 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>119pt</string> + <string>103pt</string> </dict> <dict> <key>Proportion</key> - <string>352pt</string> + <string>368pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +392,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {366, 325}}</string> - <key>RubberWindowFrame</key> - <string>824 324 573 517 0 0 1440 878 </string> + <string>{{10, 27}, {366, 341}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -450,7 +446,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {366, 282}}</string> + <string>{{10, 27}, {366, 341}}</string> + <key>RubberWindowFrame</key> + <string>506 318 573 517 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -478,11 +476,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B15DC9E217A9A34007AD769</string> + <string>8B792B6621F37044006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B15DC9F217A9A34007AD769</string> + <string>8B792B6721F37044006E9731</string> <string>8B27205C2173B3A600396442</string> - <string>8B15DCA0217A9A34007AD769</string> + <string>8B792B6821F37044006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +633,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>561682996.86381996</real> + <real>569602116.17734897</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -655,7 +653,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/DubCenter/DubCenter.xcodeproj</string> </array> <key>WindowString</key> - <string>824 324 573 517 0 0 1440 878 </string> + <string>506 318 573 517 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/DubSub/DubSub.cpp b/plugins/MacAU/DubSub/DubSub.cpp index 3d375c7..49a371b 100755 --- a/plugins/MacAU/DubSub/DubSub.cpp +++ b/plugins/MacAU/DubSub/DubSub.cpp @@ -523,23 +523,14 @@ void DubSub::DubSubKernel::Process( const Float32 *inSourceP, bflip++; if (bflip < 1 || bflip > 3) bflip = 1; - - //noise shaping to 32-bit floating point - Float32 fpTemp = inputSample; - fpNShape += (inputSample-fpTemp); - inputSample += fpNShape; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; } - fpNShape *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacAU/DubSub/DubSub.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/DubSub/DubSub.xcodeproj/christopherjohnson.pbxuser index 1b78563..0bf9966 100755 --- a/plugins/MacAU/DubSub/DubSub.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/DubSub/DubSub.xcodeproj/christopherjohnson.pbxuser @@ -49,43 +49,43 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 560565055; - PBXWorkspaceStateSaveDate = 560565055; + PBXPerProjectTemplateStateSaveDate = 569602135; + PBXWorkspaceStateSaveDate = 569602135; }; perUserProjectItems = { - 8B42FE3E21698BC50092969A /* PBXTextBookmark */ = 8B42FE3E21698BC50092969A /* PBXTextBookmark */; - 8B42FE3F21698BC50092969A /* PBXTextBookmark */ = 8B42FE3F21698BC50092969A /* PBXTextBookmark */; + 8B792B7521F3708C006E9731 /* PBXTextBookmark */ = 8B792B7521F3708C006E9731 /* PBXTextBookmark */; + 8B792B7A21F3709C006E9731 /* PBXTextBookmark */ = 8B792B7A21F3709C006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B42FE3E21698BC50092969A /* PBXTextBookmark */ = { + 8B792B7521F3708C006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* DubSub.cpp */; name = "DubSub.cpp: 521"; rLen = 0; rLoc = 22045; rType = 0; - vrLen = 160; - vrLoc = 21949; + vrLen = 68; + vrLoc = 21996; }; - 8B42FE3F21698BC50092969A /* PBXTextBookmark */ = { + 8B792B7A21F3709C006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* DubSub.cpp */; name = "DubSub.cpp: 521"; rLen = 0; rLoc = 22045; rType = 0; - vrLen = 160; - vrLoc = 21915; + vrLen = 68; + vrLoc = 21996; }; 8BA05A660720730100365D66 /* DubSub.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {663, 7241}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 7072}}"; sepNavSelRange = "{22045, 0}"; - sepNavVisRange = "{21915, 160}"; - sepNavWindowFrame = "{{749, 66}, {1145, 812}}"; + sepNavVisRange = "{21996, 68}"; + sepNavWindowFrame = "{{1, 41}, {1145, 812}}"; }; }; 8BA05A670720730100365D66 /* DubSub.exp */ = { @@ -108,16 +108,16 @@ uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {1098, 767}}"; sepNavSelRange = "{2869, 0}"; - sepNavVisRange = "{68, 2869}"; + sepNavVisRange = "{49, 2888}"; sepNavWindowFrame = "{{295, 66}, {1145, 812}}"; }; }; 8BC6025B073B072D006C4272 /* DubSub.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {824, 2392}}"; - sepNavSelRange = "{3332, 0}"; - sepNavVisRange = "{2519, 1677}"; - sepNavWindowFrame = "{{832, 72}, {608, 806}}"; + sepNavIntBoundsRect = "{{0, 0}, {824, 2756}}"; + sepNavSelRange = "{6097, 1035}"; + sepNavVisRange = "{6232, 1033}"; + sepNavWindowFrame = "{{26, 54}, {608, 806}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/DubSub/DubSub.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/DubSub/DubSub.xcodeproj/christopherjohnson.perspectivev3 index 5e22a02..b95829d 100755 --- a/plugins/MacAU/DubSub/DubSub.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/DubSub/DubSub.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>625 371 810 487 0 0 1440 878 </string> + <string>412 359 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,10 +350,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B42FE3F21698BC50092969A</string> + <string>8B792B7A21F3709C006E9731</string> <key>history</key> <array> - <string>8B42FE3E21698BC50092969A</string> + <string>8B792B7521F3708C006E9731</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +367,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 117}}</string> + <string>{{0, 0}, {603, 69}}</string> <key>RubberWindowFrame</key> - <string>625 371 810 487 0 0 1440 878 </string> + <string>412 359 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>117pt</string> + <string>69pt</string> </dict> <dict> <key>Proportion</key> - <string>324pt</string> + <string>372pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +392,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 297}}</string> - <key>RubberWindowFrame</key> - <string>625 371 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 345}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -450,7 +446,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 345}}</string> + <key>RubberWindowFrame</key> + <string>412 359 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -478,11 +476,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B42FE4021698BC50092969A</string> + <string>8B792B7B21F3709C006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B42FE4121698BC50092969A</string> + <string>8B792B7C21F3709C006E9731</string> <string>8BE6256A2157A03900E4E476</string> - <string>8B42FE4221698BC50092969A</string> + <string>8B792B7D21F3709C006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +633,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>560565189.36784196</real> + <real>569602204.74752998</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,11 +650,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B42FE4321698BC50092969A</string> + <string>8B792B7E21F3709C006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/DubSub/DubSub.xcodeproj</string> </array> <key>WindowString</key> - <string>625 371 810 487 0 0 1440 878 </string> + <string>412 359 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/DustBunny/DustBunny.cpp b/plugins/MacAU/DustBunny/DustBunny.cpp index 84ac4f6..28418d4 100755 --- a/plugins/MacAU/DustBunny/DustBunny.cpp +++ b/plugins/MacAU/DustBunny/DustBunny.cpp @@ -164,7 +164,7 @@ void DustBunny::DustBunnyKernel::Reset() ataUpsampleHighTweak = 0.0414213562373095048801688; //more adds treble to upsampling ataDecay = 0.915965594177219015; //Catalan's constant, more adds focus and clarity ataFlip = false; //end reset of antialias parameters - demotimer = 0; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -242,6 +242,12 @@ void DustBunny::DustBunnyKernel::Process( const Float32 *inSourceP, ataPrevDiffSample = ataDiffSample / 2.0; //apply processing as difference to non-oversampled raw input + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither + *destP = inputSample; //built in output trim and dry/wet by default diff --git a/plugins/MacAU/DustBunny/DustBunny.h b/plugins/MacAU/DustBunny/DustBunny.h index 942ef4a..ce73aa5 100755 --- a/plugins/MacAU/DustBunny/DustBunny.h +++ b/plugins/MacAU/DustBunny/DustBunny.h @@ -140,7 +140,7 @@ public: Float32 ataDiffSample; Float32 ataPrevDiffSample; bool ataFlip; //end defining of antialiasing variables - int demotimer; + long double fpNShape; }; }; diff --git a/plugins/MacAU/DustBunny/DustBunny.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/DustBunny/DustBunny.xcodeproj/christopherjohnson.pbxuser index f043578..aed040a 100755 --- a/plugins/MacAU/DustBunny/DustBunny.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/DustBunny/DustBunny.xcodeproj/christopherjohnson.pbxuser @@ -49,18 +49,18 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528455970; - PBXWorkspaceStateSaveDate = 528455970; + PBXPerProjectTemplateStateSaveDate = 569602226; + PBXWorkspaceStateSaveDate = 569602226; }; perUserProjectItems = { - 8B9D648D1F7C8584007AB60F /* PBXTextBookmark */ = 8B9D648D1F7C8584007AB60F /* PBXTextBookmark */; + 8B792B8D21F37127006E9731 /* PBXTextBookmark */ = 8B792B8D21F37127006E9731 /* PBXTextBookmark */; 8B9D73FD1F7F9959007AB60F /* PBXTextBookmark */ = 8B9D73FD1F7F9959007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B9D648D1F7C8584007AB60F /* PBXTextBookmark */ = { + 8B792B8D21F37127006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A670720730100365D66 /* DustBunny.exp */; name = "DustBunny.exp: 2"; @@ -82,15 +82,15 @@ }; 8BA05A660720730100365D66 /* DustBunny.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1027, 3315}}"; - sepNavSelRange = "{8604, 0}"; - sepNavVisRange = "{8097, 2779}"; - sepNavWindowFrame = "{{435, 39}, {1005, 839}}"; + sepNavIntBoundsRect = "{{0, 0}, {958, 3536}}"; + sepNavSelRange = "{7726, 0}"; + sepNavVisRange = "{5884, 2552}"; + sepNavWindowFrame = "{{329, 39}, {1005, 839}}"; }; }; 8BA05A670720730100365D66 /* DustBunny.exp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 70}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 54}}"; sepNavSelRange = "{16, 0}"; sepNavVisRange = "{0, 16}"; sepNavWindowFrame = "{{15, 39}, {1005, 839}}"; @@ -106,10 +106,10 @@ }; 8BC6025B073B072D006C4272 /* DustBunny.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {958, 1950}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{4064, 1467}"; - sepNavWindowFrame = "{{435, 39}, {1005, 839}}"; + sepNavIntBoundsRect = "{{0, 0}, {958, 1898}}"; + sepNavSelRange = "{5428, 0}"; + sepNavVisRange = "{3922, 1609}"; + sepNavWindowFrame = "{{166, 39}, {1005, 839}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/DustBunny/DustBunny.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/DustBunny/DustBunny.xcodeproj/christopherjohnson.perspectivev3 index dc5427b..0cf4cf6 100755 --- a/plugins/MacAU/DustBunny/DustBunny.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/DustBunny/DustBunny.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>4</integer> + <integer>3</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> @@ -324,7 +324,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>630 291 810 487 0 0 1440 878 </string> + <string>444 300 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,10 +352,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D73FD1F7F9959007AB60F</string> + <string>8B792B8D21F37127006E9731</string> <key>history</key> <array> - <string>8B9D648D1F7C8584007AB60F</string> + <string>8B9D73FD1F7F9959007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 102}}</string> + <string>{{0, 0}, {603, 86}}</string> <key>RubberWindowFrame</key> - <string>630 291 810 487 0 0 1440 878 </string> + <string>444 300 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>102pt</string> + <string>86pt</string> </dict> <dict> <key>Proportion</key> - <string>339pt</string> + <string>355pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +394,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 312}}</string> + <string>{{10, 27}, {603, 328}}</string> <key>RubberWindowFrame</key> - <string>630 291 810 487 0 0 1440 878 </string> + <string>444 300 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -478,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D73FE1F7F9959007AB60F</string> + <string>8B792B8E21F37127006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D73FF1F7F9959007AB60F</string> + <string>8B792B8F21F37127006E9731</string> <string>8BAC230D1F1EA30C009C635C</string> - <string>8B9D74001F7F9959007AB60F</string> + <string>8B792B9021F37127006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528456025.40104002</real> + <real>569602343.09456503</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,11 +652,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D74011F7F9959007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/DustBunny/DustBunny.xcodeproj</string> </array> <key>WindowString</key> - <string>630 291 810 487 0 0 1440 878 </string> + <string>444 300 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/EQ/EQ.cpp b/plugins/MacAU/EQ/EQ.cpp index eecaa38..4b2d40b 100755 --- a/plugins/MacAU/EQ/EQ.cpp +++ b/plugins/MacAU/EQ/EQ.cpp @@ -222,9 +222,7 @@ ComponentResult EQ::Initialize() //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void EQ::EQKernel::Reset() { - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; iirHighSampleA = 0.0; iirHighSampleB = 0.0; @@ -285,10 +283,6 @@ void EQ::EQKernel::Process( const Float32 *inSourceP, const Float32 *sourceP = inSourceP; Float32 *destP = inDestP; Float64 overallscale = GetSampleRate(); - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; - Float64 inputSample; Float64 highSample = 0.0; Float64 midSample = 0.0; @@ -354,7 +348,7 @@ void EQ::EQKernel::Process( const Float32 *inSourceP, last2Sample = lastSample; lastSample = inputSample; - flip = not flip; + flip = !flip; flipthree++; if (flipthree < 1 || flipthree > 3) flipthree = 1; //counters @@ -522,19 +516,11 @@ void EQ::EQKernel::Process( const Float32 *inSourceP, //built in output trim and dry/wet if desired if (outputgain != 1.0) inputSample *= outputgain; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = not fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/EQ/EQ.h b/plugins/MacAU/EQ/EQ.h index bfe6e51..a3b0194 100755 --- a/plugins/MacAU/EQ/EQ.h +++ b/plugins/MacAU/EQ/EQ.h @@ -197,9 +197,7 @@ public: Float64 lastSample; Float64 last2Sample; - Float64 fpNShapeA; - Float64 fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/EQ/EQ.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/EQ/EQ.xcodeproj/christopherjohnson.pbxuser index bcc2261..0385b92 100755 --- a/plugins/MacAU/EQ/EQ.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/EQ/EQ.xcodeproj/christopherjohnson.pbxuser @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 541887565; - PBXWorkspaceStateSaveDate = 541887565; + PBXPerProjectTemplateStateSaveDate = 569643969; + PBXWorkspaceStateSaveDate = 569643969; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -58,9 +58,9 @@ }; 8BA05A660720730100365D66 /* EQ.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {787, 7306}}"; - sepNavSelRange = "{11544, 0}"; - sepNavVisRange = "{9924, 1260}"; + sepNavIntBoundsRect = "{{0, 0}, {787, 7280}}"; + sepNavSelRange = "{12231, 0}"; + sepNavVisRange = "{11723, 2294}"; sepNavWindowFrame = "{{25, 65}, {834, 813}}"; }; }; @@ -81,9 +81,9 @@ }; 8BC6025B073B072D006C4272 /* EQ.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 2717}}"; - sepNavSelRange = "{7129, 0}"; - sepNavVisRange = "{2030, 1998}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 3133}}"; + sepNavSelRange = "{7155, 0}"; + sepNavVisRange = "{6104, 1153}"; sepNavWindowFrame = "{{561, 65}, {834, 813}}"; }; }; diff --git a/plugins/MacAU/EQ/EQ.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/EQ/EQ.xcodeproj/christopherjohnson.perspectivev3 index bfd1346..91f367e 100755 --- a/plugins/MacAU/EQ/EQ.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/EQ/EQ.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>810</integer> + <integer>810</integer> </array> <key>Perspectives</key> <array> @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>3</integer> + <integer>4</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> @@ -324,7 +324,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>626 361 810 487 0 0 1440 878 </string> + <string>497 289 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -363,7 +363,7 @@ <key>Frame</key> <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> - <string>626 361 810 487 0 0 1440 878 </string> + <string>497 289 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -387,8 +387,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> - <key>RubberWindowFrame</key> - <string>626 361 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -442,7 +440,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {603, 414}}</string> + <key>RubberWindowFrame</key> + <string>497 289 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -470,11 +470,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B181AEC204C940200516BEE</string> + <string>8B792BFF21F41480006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B181AED204C940200516BEE</string> + <string>8B792C0021F41480006E9731</string> <string>8BCA70302027EDF000D92BAD</string> - <string>8B181AEE204C940200516BEE</string> + <string>8B792C0121F41480006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -627,7 +627,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>541889538.11759806</real> + <real>569644160.89823198</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -644,10 +644,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> + <string>8B792C0221F41480006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/EQ/EQ.xcodeproj</string> </array> <key>WindowString</key> - <string>626 361 810 487 0 0 1440 878 </string> + <string>497 289 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/EdIsDim/EdIsDim.cpp b/plugins/MacAU/EdIsDim/EdIsDim.cpp index 164f8df..e9d2e23 100755 --- a/plugins/MacAU/EdIsDim/EdIsDim.cpp +++ b/plugins/MacAU/EdIsDim/EdIsDim.cpp @@ -171,11 +171,8 @@ ComponentResult EdIsDim::Initialize() // this is called the reset the DSP state (clear buffers, reset counters, etc.) ComponentResult EdIsDim::Reset(AudioUnitScope inScope, AudioUnitElement inElement) { - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; return noErr; } @@ -194,10 +191,6 @@ OSStatus EdIsDim::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags Float32 * outputL = (Float32*)(outBuffer.mBuffers[0].mData); Float32 * outputR = (Float32*)(outBuffer.mBuffers[1].mData); UInt32 nSampleFrames = inFramesToProcess; - - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -256,25 +249,14 @@ OSStatus EdIsDim::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags mid = (inputSampleL+inputSampleR)/2.0; side = (inputSampleL-inputSampleR)/2.0; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = mid; - fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLA; - fpTemp = side; - fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRA; - } - else { - fpTemp = mid; - fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLB; - fpTemp = side; - fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((Float32)mid, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + mid += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((Float32)side, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + side += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *outputL = mid; *outputR = side; diff --git a/plugins/MacAU/EdIsDim/EdIsDim.h b/plugins/MacAU/EdIsDim/EdIsDim.h index 6646778..e5d5e46 100755 --- a/plugins/MacAU/EdIsDim/EdIsDim.h +++ b/plugins/MacAU/EdIsDim/EdIsDim.h @@ -111,11 +111,8 @@ public: virtual ComponentResult Version() { return kEdIsDimVersion; } private: - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff }; diff --git a/plugins/MacAU/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.pbxuser index dd54e22..0eaeffc 100755 --- a/plugins/MacAU/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.pbxuser @@ -49,43 +49,43 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528456036; - PBXWorkspaceStateSaveDate = 528456036; + PBXPerProjectTemplateStateSaveDate = 569602369; + PBXWorkspaceStateSaveDate = 569602369; }; perUserProjectItems = { - 8B9D649D1F7C85BA007AB60F /* PBXTextBookmark */ = 8B9D649D1F7C85BA007AB60F /* PBXTextBookmark */; - 8B9D740C1F7F99CD007AB60F /* PBXTextBookmark */ = 8B9D740C1F7F99CD007AB60F /* PBXTextBookmark */; + 8B792B9E21F371C6006E9731 /* PBXTextBookmark */ = 8B792B9E21F371C6006E9731 /* PBXTextBookmark */; + 8B792BA321F371D7006E9731 /* PBXTextBookmark */ = 8B792BA321F371D7006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B9D649D1F7C85BA007AB60F /* PBXTextBookmark */ = { + 8B792B9E21F371C6006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* EdIsDim.cpp */; - name = "EdIsDim.cpp: 253"; - rLen = 710; - rLoc = 10830; + name = "EdIsDim.cpp: 260"; + rLen = 0; + rLoc = 11194; rType = 0; - vrLen = 437; - vrLoc = 8933; + vrLen = 150; + vrLoc = 9250; }; - 8B9D740C1F7F99CD007AB60F /* PBXTextBookmark */ = { + 8B792BA321F371D7006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* EdIsDim.cpp */; - name = "EdIsDim.cpp: 253"; - rLen = 710; - rLoc = 10830; + name = "EdIsDim.cpp: 260"; + rLen = 0; + rLoc = 11194; rType = 0; - vrLen = 382; - vrLoc = 8988; + vrLen = 150; + vrLoc = 9250; }; 8BA05A660720730100365D66 /* EdIsDim.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {691, 3770}}"; - sepNavSelRange = "{10830, 710}"; - sepNavVisRange = "{8988, 382}"; - sepNavWindowFrame = "{{370, 39}, {1070, 811}}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 3640}}"; + sepNavSelRange = "{11194, 0}"; + sepNavVisRange = "{9250, 150}"; + sepNavWindowFrame = "{{182, 67}, {1070, 811}}"; }; }; 8BA05A670720730100365D66 /* EdIsDim.exp */ = { @@ -106,9 +106,9 @@ }; 8BC6025B073B072D006C4272 /* EdIsDim.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {922, 1638}}"; - sepNavSelRange = "{2966, 8}"; - sepNavVisRange = "{3189, 1845}"; + sepNavIntBoundsRect = "{{0, 0}, {922, 1599}}"; + sepNavSelRange = "{4844, 0}"; + sepNavVisRange = "{3126, 1842}"; sepNavWindowFrame = "{{376, 41}, {923, 837}}"; }; }; diff --git a/plugins/MacAU/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.perspectivev3 index 500b578..187be5c 100755 --- a/plugins/MacAU/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>810</integer> + <integer>810</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>622 330 810 487 0 0 1440 878 </string> + <string>457 331 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,10 +350,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D740C1F7F99CD007AB60F</string> + <string>8B792BA321F371D7006E9731</string> <key>history</key> <array> - <string>8B9D649D1F7C85BA007AB60F</string> + <string>8B792B9E21F371C6006E9731</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +367,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 86}}</string> + <string>{{0, 0}, {603, 69}}</string> <key>RubberWindowFrame</key> - <string>622 330 810 487 0 0 1440 878 </string> + <string>457 331 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>86pt</string> + <string>69pt</string> </dict> <dict> <key>Proportion</key> - <string>355pt</string> + <string>372pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +392,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 328}}</string> - <key>RubberWindowFrame</key> - <string>622 330 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 345}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -450,7 +446,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 345}}</string> + <key>RubberWindowFrame</key> + <string>457 331 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -478,11 +476,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D740D1F7F99CD007AB60F</string> + <string>8B792BA421F371D7006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D740E1F7F99CD007AB60F</string> + <string>8B792BA521F371D7006E9731</string> <string>8B753E4E1E40210F00347157</string> - <string>8B9D740F1F7F99CD007AB60F</string> + <string>8B792BA621F371D7006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +633,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528456141.63520998</real> + <real>569602519.02649903</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,11 +650,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D74101F7F99CD007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/EdIsDim/EdIsDim.xcodeproj</string> </array> <key>WindowString</key> - <string>622 330 810 487 0 0 1440 878 </string> + <string>457 331 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/ElectroHat/ElectroHat.cpp b/plugins/MacAU/ElectroHat/ElectroHat.cpp index 6fd2b29..cfdf411 100755 --- a/plugins/MacAU/ElectroHat/ElectroHat.cpp +++ b/plugins/MacAU/ElectroHat/ElectroHat.cpp @@ -214,9 +214,7 @@ void ElectroHat::ElectroHatKernel::Reset() tik = 3746926; lok = 0; flip = true; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -270,9 +268,6 @@ void ElectroHat::ElectroHatKernel::Process( const Float32 *inSourceP, int posE = fosE; int posF = fosF; int posG = posF*posE*posD*posC*posB; //factorial - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; while (nSampleFrames-- > 0) { @@ -317,19 +312,11 @@ void ElectroHat::ElectroHatKernel::Process( const Float32 *inSourceP, inputSample = (inputSample * wet) + (drySample * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; //moving average combats that near-Nyquist stuff diff --git a/plugins/MacAU/ElectroHat/ElectroHat.h b/plugins/MacAU/ElectroHat/ElectroHat.h index 7592a4c..6d3525e 100755 --- a/plugins/MacAU/ElectroHat/ElectroHat.h +++ b/plugins/MacAU/ElectroHat/ElectroHat.h @@ -156,9 +156,7 @@ public: int tik; int lok; bool flip; - Float64 fpNShapeA; - Float64 fpNShapeB; - bool fpFlip; + Float64 fpNShape; }; }; diff --git a/plugins/MacAU/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.pbxuser index 9605e3d..6e8da0d 100755 --- a/plugins/MacAU/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 541288564; - PBXWorkspaceStateSaveDate = 541288564; + PBXPerProjectTemplateStateSaveDate = 569602542; + PBXWorkspaceStateSaveDate = 569602542; }; perUserProjectItems = { - 8BC009F220436BB300304BC7 /* PBXTextBookmark */ = 8BC009F220436BB300304BC7 /* PBXTextBookmark */; - 8BC009F320436BB300304BC7 /* PBXTextBookmark */ = 8BC009F320436BB300304BC7 /* PBXTextBookmark */; + 8B792BB621F37247006E9731 /* PBXTextBookmark */ = 8B792BB621F37247006E9731 /* PBXTextBookmark */; + 8B792BBB21F37261006E9731 /* PBXTextBookmark */ = 8B792BBB21F37261006E9731 /* PBXTextBookmark */; 8BCEFB832042DD54002E8187 /* PBXTextBookmark */ = 8BCEFB832042DD54002E8187 /* PBXTextBookmark */; 8BCEFBA32043656D002E8187 /* PBXTextBookmark */ = 8BCEFBA32043656D002E8187 /* PBXTextBookmark */; }; @@ -62,11 +62,31 @@ userBuildSettings = { }; }; + 8B792BB621F37247006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* ElectroHat.cpp */; + name = "ElectroHat.cpp: 303"; + rLen = 31; + rLoc = 12605; + rType = 0; + vrLen = 524; + vrLoc = 12283; + }; + 8B792BBB21F37261006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* ElectroHat.cpp */; + name = "ElectroHat.cpp: 303"; + rLen = 31; + rLoc = 12605; + rType = 0; + vrLen = 226; + vrLoc = 12283; + }; 8BA05A660720730100365D66 /* ElectroHat.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {712, 4667}}"; - sepNavSelRange = "{12748, 31}"; - sepNavVisRange = "{12105, 736}"; + sepNavIntBoundsRect = "{{0, 0}, {712, 4472}}"; + sepNavSelRange = "{12605, 31}"; + sepNavVisRange = "{12283, 226}"; sepNavWindowFrame = "{{252, 40}, {997, 838}}"; }; }; @@ -78,31 +98,11 @@ sepNavWindowFrame = "{{15, 40}, {909, 838}}"; }; }; - 8BC009F220436BB300304BC7 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* ElectroHat.cpp */; - name = "ElectroHat.cpp: 145"; - rLen = 0; - rLoc = 6799; - rType = 0; - vrLen = 926; - vrLoc = 9949; - }; - 8BC009F320436BB300304BC7 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* ElectroHat.cpp */; - name = "ElectroHat.cpp: 308"; - rLen = 31; - rLoc = 12748; - rType = 0; - vrLen = 736; - vrLoc = 12105; - }; 8BC6025B073B072D006C4272 /* ElectroHat.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {824, 2002}}"; - sepNavSelRange = "{3208, 0}"; - sepNavVisRange = "{2134, 1985}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 2301}}"; + sepNavSelRange = "{6281, 0}"; + sepNavVisRange = "{4808, 1583}"; sepNavWindowFrame = "{{630, 50}, {810, 826}}"; }; }; diff --git a/plugins/MacAU/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.perspectivev3 index f67a203..2f7bc15 100755 --- a/plugins/MacAU/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.perspectivev3 @@ -333,8 +333,6 @@ <key>Dock</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXProjectModuleGUID</key> @@ -352,12 +350,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BC009F320436BB300304BC7</string> + <string>8B792BBB21F37261006E9731</string> <key>history</key> <array> <string>8BCEFB832042DD54002E8187</string> <string>8BCEFBA32043656D002E8187</string> - <string>8BC009F220436BB300304BC7</string> + <string>8B792BB621F37247006E9731</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 306}}</string> + <string>{{0, 0}, {603, 94}}</string> <key>RubberWindowFrame</key> <string>442 380 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>306pt</string> + <string>94pt</string> </dict> <dict> <key>Proportion</key> - <string>135pt</string> + <string>347pt</string> <key>Tabs</key> <array> <dict> @@ -396,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 108}}</string> - <key>RubberWindowFrame</key> - <string>442 380 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 114}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -452,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 320}}</string> + <key>RubberWindowFrame</key> + <string>442 380 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -480,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BC009F420436BB300304BC7</string> + <string>8B792BBC21F37261006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BC009F520436BB300304BC7</string> + <string>8B792BBD21F37261006E9731</string> <string>8BCA6F152027DB6B00D92BAD</string> - <string>8BC009F620436BB300304BC7</string> + <string>8B792BBE21F37261006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -637,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>541289395.77599096</real> + <real>569602657.83772898</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> diff --git a/plugins/MacAU/Energy/Energy.cpp b/plugins/MacAU/Energy/Energy.cpp index e3b3354..3e9d4cb 100755 --- a/plugins/MacAU/Energy/Energy.cpp +++ b/plugins/MacAU/Energy/Energy.cpp @@ -733,22 +733,14 @@ void Energy::EnergyKernel::Process( const Float32 *inSourceP, //we don't need a drySample because we never touched inputSample //so, this provides the inv/dry/wet control all by itself - //noise shaping to 32-bit floating point - Float32 fpTemp = inputSample; - fpNShape += (inputSample-fpTemp); - inputSample += fpNShape; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; } - fpNShape *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. }
\ No newline at end of file diff --git a/plugins/MacAU/Energy/Energy.h b/plugins/MacAU/Energy/Energy.h index 2ea7b28..62648f2 100755 --- a/plugins/MacAU/Energy/Energy.h +++ b/plugins/MacAU/Energy/Energy.h @@ -225,7 +225,7 @@ public: Float64 PrevB; Float64 PrevA; - Float64 fpNShape; + long double fpNShape; }; }; diff --git a/plugins/MacAU/Energy/Energy.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Energy/Energy.xcodeproj/christopherjohnson.pbxuser index 4d5f878..ea6a47e 100755 --- a/plugins/MacAU/Energy/Energy.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Energy/Energy.xcodeproj/christopherjohnson.pbxuser @@ -49,19 +49,39 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 547787625; - PBXWorkspaceStateSaveDate = 547787625; + PBXPerProjectTemplateStateSaveDate = 569602677; + PBXWorkspaceStateSaveDate = 569602677; }; perUserProjectItems = { + 8B792BCC21F372B8006E9731 /* PBXTextBookmark */ = 8B792BCC21F372B8006E9731 /* PBXTextBookmark */; + 8B792BD121F372CE006E9731 /* PBXTextBookmark */ = 8B792BD121F372CE006E9731 /* PBXTextBookmark */; 8B7E3EE120A720D100482CB5 /* PBXTextBookmark */ = 8B7E3EE120A720D100482CB5 /* PBXTextBookmark */; 8B7E3EE220A720D100482CB5 /* PBXTextBookmark */ = 8B7E3EE220A720D100482CB5 /* PBXTextBookmark */; - 8B7E3EE320A720D100482CB5 /* PBXTextBookmark */ = 8B7E3EE320A720D100482CB5 /* PBXTextBookmark */; - 8B7E3EE420A720D100482CB5 /* PBXTextBookmark */ = 8B7E3EE420A720D100482CB5 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B792BCC21F372B8006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* Energy.h */; + name = "Energy.h: 229"; + rLen = 0; + rLoc = 7165; + rType = 0; + vrLen = 64; + vrLoc = 7106; + }; + 8B792BD121F372CE006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* Energy.h */; + name = "Energy.h: 229"; + rLen = 0; + rLoc = 7165; + rType = 0; + vrLen = 64; + vrLoc = 7106; + }; 8B7E3EE120A720D100482CB5 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Energy.cpp */; @@ -82,32 +102,12 @@ vrLen = 265; vrLoc = 3189; }; - 8B7E3EE320A720D100482CB5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* Energy.h */; - name = "Energy.h: 229"; - rLen = 0; - rLoc = 7161; - rType = 0; - vrLen = 63; - vrLoc = 7106; - }; - 8B7E3EE420A720D100482CB5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* Energy.h */; - name = "Energy.h: 229"; - rLen = 0; - rLoc = 7161; - rType = 0; - vrLen = 63; - vrLoc = 7106; - }; 8BA05A660720730100365D66 /* Energy.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {740, 10985}}"; - sepNavSelRange = "{13885, 8875}"; - sepNavVisRange = "{22057, 1537}"; - sepNavWindowFrame = "{{653, 65}, {787, 813}}"; + sepNavIntBoundsRect = "{{0, 0}, {740, 10309}}"; + sepNavSelRange = "{23013, 0}"; + sepNavVisRange = "{21843, 1256}"; + sepNavWindowFrame = "{{504, 65}, {787, 813}}"; }; }; 8BA05A670720730100365D66 /* Energy.exp */ = { @@ -128,10 +128,10 @@ }; 8BC6025B073B072D006C4272 /* Energy.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {656, 3263}}"; - sepNavSelRange = "{7161, 0}"; - sepNavVisRange = "{7106, 63}"; - sepNavWindowFrame = "{{796, 53}, {863, 813}}"; + sepNavIntBoundsRect = "{{0, 0}, {656, 3211}}"; + sepNavSelRange = "{7165, 0}"; + sepNavVisRange = "{7106, 64}"; + sepNavWindowFrame = "{{577, 53}, {863, 813}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/Energy/Energy.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Energy/Energy.xcodeproj/christopherjohnson.perspectivev3 index b8eeb52..951b9b4 100755 --- a/plugins/MacAU/Energy/Energy.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Energy/Energy.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>810</integer> + <integer>810</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>618 342 810 487 0 0 1440 878 </string> + <string>475 322 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,12 +350,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B7E3EE420A720D100482CB5</string> + <string>8B792BD121F372CE006E9731</string> <key>history</key> <array> <string>8B7E3EE120A720D100482CB5</string> <string>8B7E3EE220A720D100482CB5</string> - <string>8B7E3EE320A720D100482CB5</string> + <string>8B792BCC21F372B8006E9731</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 117}}</string> + <string>{{0, 0}, {603, 102}}</string> <key>RubberWindowFrame</key> - <string>618 342 810 487 0 0 1440 878 </string> + <string>475 322 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>117pt</string> + <string>102pt</string> </dict> <dict> <key>Proportion</key> - <string>324pt</string> + <string>339pt</string> <key>Tabs</key> <array> <dict> @@ -396,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 297}}</string> - <key>RubberWindowFrame</key> - <string>618 342 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 312}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -452,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {603, 312}}</string> + <key>RubberWindowFrame</key> + <string>475 322 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -480,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B7E3EE520A720D100482CB5</string> + <string>8B792BD221F372CE006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B7E3EE620A720D100482CB5</string> + <string>8B792BD321F372CE006E9731</string> <string>8B7E3C2F20A5148000482CB5</string> - <string>8B7E3EE720A720D100482CB5</string> + <string>8B792BD421F372CE006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -637,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>547823825.49813604</real> + <real>569602766.40819299</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -657,7 +655,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/Energy/Energy.xcodeproj</string> </array> <key>WindowString</key> - <string>618 342 810 487 0 0 1440 878 </string> + <string>475 322 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Ensemble/Ensemble.cpp b/plugins/MacAU/Ensemble/Ensemble.cpp index dec69cb..cdb1f4c 100755 --- a/plugins/MacAU/Ensemble/Ensemble.cpp +++ b/plugins/MacAU/Ensemble/Ensemble.cpp @@ -190,8 +190,7 @@ void Ensemble::EnsembleKernel::Reset() airEven = 0.0; airOdd = 0.0; airFactor = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; + fpNShape = 0.0; fpFlip = true; } @@ -229,11 +228,6 @@ void Ensemble::EnsembleKernel::Process( const Float32 *inSourceP, int count; int ensemble; Float64 temp; - - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - long double inputSample; Float64 drySample; //now we'll precalculate some stuff that needn't be in every sample @@ -308,20 +302,13 @@ void Ensemble::EnsembleKernel::Process( const Float32 *inSourceP, if (wet !=1.0) { inputSample = (inputSample * wet) + (drySample * dry); } - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; destP += inNumChannels; diff --git a/plugins/MacAU/Ensemble/Ensemble.h b/plugins/MacAU/Ensemble/Ensemble.h index 356e30e..af1c3aa 100755 --- a/plugins/MacAU/Ensemble/Ensemble.h +++ b/plugins/MacAU/Ensemble/Ensemble.h @@ -143,9 +143,8 @@ public: Float64 airEven; Float64 airOdd; Float64 airFactor; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; + bool fpFlip; }; }; diff --git a/plugins/MacAU/Ensemble/Ensemble.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Ensemble/Ensemble.xcodeproj/christopherjohnson.pbxuser index c4a1875..2fdaf52 100755 --- a/plugins/MacAU/Ensemble/Ensemble.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Ensemble/Ensemble.xcodeproj/christopherjohnson.pbxuser @@ -49,43 +49,43 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 529850403; - PBXWorkspaceStateSaveDate = 529850403; + PBXPerProjectTemplateStateSaveDate = 569602943; + PBXWorkspaceStateSaveDate = 569602943; }; perUserProjectItems = { - 8B4C96551F94E0EC00064452 /* PBXTextBookmark */ = 8B4C96551F94E0EC00064452 /* PBXTextBookmark */; - 8B4C96561F94E0EC00064452 /* PBXTextBookmark */ = 8B4C96561F94E0EC00064452 /* PBXTextBookmark */; + 8B792BE321F373ED006E9731 /* PBXTextBookmark */ = 8B792BE321F373ED006E9731 /* PBXTextBookmark */; + 8B792BE821F37401006E9731 /* PBXTextBookmark */ = 8B792BE821F37401006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B4C96551F94E0EC00064452 /* PBXTextBookmark */ = { + 8B792BE321F373ED006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Ensemble.cpp */; - name = "Ensemble.cpp: 278"; + name = "Ensemble.cpp: 272"; rLen = 0; - rLoc = 12211; + rLoc = 12071; rType = 0; - vrLen = 310; - vrLoc = 7547; + vrLen = 162; + vrLoc = 7695; }; - 8B4C96561F94E0EC00064452 /* PBXTextBookmark */ = { + 8B792BE821F37401006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Ensemble.cpp */; - name = "Ensemble.cpp: 278"; + name = "Ensemble.cpp: 272"; rLen = 0; - rLoc = 12211; + rLoc = 12071; rType = 0; - vrLen = 310; - vrLoc = 7547; + vrLen = 162; + vrLoc = 7695; }; 8BA05A660720730100365D66 /* Ensemble.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {677, 4303}}"; - sepNavSelRange = "{12211, 0}"; - sepNavVisRange = "{7547, 310}"; - sepNavWindowFrame = "{{770, 63}, {1145, 812}}"; + sepNavIntBoundsRect = "{{0, 0}, {670, 4277}}"; + sepNavSelRange = "{12071, 0}"; + sepNavVisRange = "{7695, 162}"; + sepNavWindowFrame = "{{179, 66}, {1145, 812}}"; }; }; 8BA05A670720730100365D66 /* Ensemble.exp */ = { @@ -107,9 +107,9 @@ 8BC6025B073B072D006C4272 /* Ensemble.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {980, 2015}}"; - sepNavSelRange = "{5506, 0}"; - sepNavVisRange = "{1439, 2148}"; - sepNavWindowFrame = "{{659, 41}, {1027, 835}}"; + sepNavSelRange = "{5659, 0}"; + sepNavVisRange = "{4251, 1512}"; + sepNavWindowFrame = "{{238, 39}, {1027, 835}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/Ensemble/Ensemble.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Ensemble/Ensemble.xcodeproj/christopherjohnson.perspectivev3 index 90acbb9..91e64e9 100755 --- a/plugins/MacAU/Ensemble/Ensemble.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Ensemble/Ensemble.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>810</integer> + <integer>810</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -300,7 +298,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>4</integer> + <integer>3</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>618 373 810 487 0 0 1440 878 </string> + <string>501 374 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,10 +350,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B4C96561F94E0EC00064452</string> + <string>8B792BE821F37401006E9731</string> <key>history</key> <array> - <string>8B4C96551F94E0EC00064452</string> + <string>8B792BE321F373ED006E9731</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +367,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 86}}</string> + <string>{{0, 0}, {603, 69}}</string> <key>RubberWindowFrame</key> - <string>618 373 810 487 0 0 1440 878 </string> + <string>501 374 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>86pt</string> + <string>69pt</string> </dict> <dict> <key>Proportion</key> - <string>355pt</string> + <string>372pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +392,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 328}}</string> - <key>RubberWindowFrame</key> - <string>618 373 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 345}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -450,7 +446,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {603, 345}}</string> + <key>RubberWindowFrame</key> + <string>501 374 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -478,11 +476,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B4C96571F94E0EC00064452</string> + <string>8B792BE921F37401006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B4C96581F94E0EC00064452</string> + <string>8B792BEA21F37401006E9731</string> <string>8B7FDBCE1F85C8E400A80060</string> - <string>8B4C96591F94E0EC00064452</string> + <string>8B792BEB21F37401006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +633,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>529850604.37639201</real> + <real>569603073.27928698</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,11 +650,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B4C965A1F94E0EC00064452</string> <string>/Users/christopherjohnson/Desktop/MacAU/Ensemble/Ensemble.xcodeproj</string> </array> <key>WindowString</key> - <string>618 373 810 487 0 0 1440 878 </string> + <string>501 374 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/EveryTrim/EveryTrim.cpp b/plugins/MacAU/EveryTrim/EveryTrim.cpp index 94f854e..550a23a 100755 --- a/plugins/MacAU/EveryTrim/EveryTrim.cpp +++ b/plugins/MacAU/EveryTrim/EveryTrim.cpp @@ -203,11 +203,8 @@ ComponentResult EveryTrim::Initialize() // this is called the reset the DSP state (clear buffers, reset counters, etc.) ComponentResult EveryTrim::Reset(AudioUnitScope inScope, AudioUnitElement inElement) { - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; return noErr; } @@ -226,11 +223,7 @@ OSStatus EveryTrim::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla Float32 * outputL = (Float32*)(outBuffer.mBuffers[0].mData); Float32 * outputR = (Float32*)(outBuffer.mBuffers[1].mData); UInt32 nSampleFrames = inFramesToProcess; - - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + long double inputSampleL; long double inputSampleR; long double mid; @@ -296,25 +289,14 @@ OSStatus EveryTrim::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla inputSampleR = (mid-side) * rightgain; //contains mastergain and the gain trim fixing the mid/side - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((Float32)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *outputL = inputSampleL; *outputR = inputSampleR; diff --git a/plugins/MacAU/EveryTrim/EveryTrim.h b/plugins/MacAU/EveryTrim/EveryTrim.h index dfb8b69..58ffc72 100755 --- a/plugins/MacAU/EveryTrim/EveryTrim.h +++ b/plugins/MacAU/EveryTrim/EveryTrim.h @@ -121,12 +121,8 @@ public: virtual ComponentResult Version() { return kEveryTrimVersion; } private: - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; - //default stuff + long double fpNShapeL; + long double fpNShapeR; }; diff --git a/plugins/MacAU/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.pbxuser index 9bc4e8a..bd0016f 100755 --- a/plugins/MacAU/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.pbxuser @@ -49,32 +49,42 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 557257719; - PBXWorkspaceStateSaveDate = 557257719; + PBXPerProjectTemplateStateSaveDate = 569644212; + PBXWorkspaceStateSaveDate = 569644212; }; perUserProjectItems = { - 8B67C6D91FA1721B008C64D6 /* PBXTextBookmark */ = 8B67C6D91FA1721B008C64D6 /* PBXTextBookmark */; - 8BFDAF84213714150079F90D /* PBXTextBookmark */ = 8BFDAF84213714150079F90D /* PBXTextBookmark */; + 8B792C1021F4152A006E9731 /* PBXTextBookmark */ = 8B792C1021F4152A006E9731 /* PBXTextBookmark */; + 8B792C1621F41559006E9731 /* PBXTextBookmark */ = 8B792C1621F41559006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B67C6D91FA1721B008C64D6 /* PBXTextBookmark */ = { + 8B792C1021F4152A006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* EveryTrim.cpp */; - name = "EveryTrim.cpp: 208"; + name = "EveryTrim.cpp: 207"; rLen = 0; - rLoc = 9439; + rLoc = 9418; rType = 0; - vrLen = 105; - vrLoc = 29; + vrLen = 69; + vrLoc = 65; + }; + 8B792C1621F41559006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* EveryTrim.cpp */; + name = "EveryTrim.cpp: 207"; + rLen = 0; + rLoc = 9418; + rType = 0; + vrLen = 69; + vrLoc = 65; }; 8BA05A660720730100365D66 /* EveryTrim.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {803, 4407}}"; - sepNavSelRange = "{9439, 0}"; - sepNavVisRange = "{44, 90}"; + sepNavIntBoundsRect = "{{0, 0}, {803, 4238}}"; + sepNavSelRange = "{9418, 0}"; + sepNavVisRange = "{65, 69}"; sepNavWindowFrame = "{{170, 67}, {1070, 811}}"; }; }; @@ -96,9 +106,9 @@ }; 8BC6025B073B072D006C4272 /* EveryTrim.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1023, 1768}}"; - sepNavSelRange = "{5173, 131}"; - sepNavVisRange = "{3570, 1835}"; + sepNavIntBoundsRect = "{{0, 0}, {1023, 1716}}"; + sepNavSelRange = "{5221, 0}"; + sepNavVisRange = "{3522, 1806}"; sepNavWindowFrame = "{{370, 67}, {1070, 811}}"; }; }; @@ -116,16 +126,6 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8BFDAF84213714150079F90D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* EveryTrim.cpp */; - name = "EveryTrim.cpp: 208"; - rLen = 0; - rLoc = 9439; - rType = 0; - vrLen = 90; - vrLoc = 44; - }; 8D01CCC60486CAD60068D4B7 /* EveryTrim */ = { activeExec = 0; }; diff --git a/plugins/MacAU/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.perspectivev3 index 3937f74..afd4e1f 100755 --- a/plugins/MacAU/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>810</integer> + <integer>810</integer> </array> <key>Perspectives</key> <array> @@ -325,7 +325,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>610 324 810 487 0 0 1440 878 </string> + <string>507 328 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -353,10 +353,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BFDAF84213714150079F90D</string> + <string>8B792C1621F41559006E9731</string> <key>history</key> <array> - <string>8B67C6D91FA1721B008C64D6</string> + <string>8B792C1021F4152A006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 86}}</string> + <string>{{0, 0}, {603, 69}}</string> <key>RubberWindowFrame</key> - <string>610 324 810 487 0 0 1440 878 </string> + <string>507 328 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>86pt</string> + <string>69pt</string> </dict> <dict> <key>Proportion</key> - <string>355pt</string> + <string>372pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 328}}</string> - <key>RubberWindowFrame</key> - <string>610 324 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 345}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {603, 345}}</string> + <key>RubberWindowFrame</key> + <string>507 328 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BFDAF85213714150079F90D</string> + <string>8B792C1721F41559006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BFDAF86213714150079F90D</string> + <string>8B792C1821F41559006E9731</string> <string>8B753E6F1E40231800347157</string> - <string>8BFDAF87213714150079F90D</string> + <string>8B792C1921F41559006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>557257749.03621697</real> + <real>569644377.55946004</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,10 +653,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> + <string>8B792C1A21F41559006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/EveryTrim/EveryTrim.xcodeproj</string> </array> <key>WindowString</key> - <string>610 324 810 487 0 0 1440 878 </string> + <string>507 328 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/FathomFive/FathomFive.cpp b/plugins/MacAU/FathomFive/FathomFive.cpp index dd2bd98..b2746ae 100755 --- a/plugins/MacAU/FathomFive/FathomFive.cpp +++ b/plugins/MacAU/FathomFive/FathomFive.cpp @@ -188,6 +188,7 @@ void FathomFive::FathomFiveKernel::Reset() iirSampleB = 0.0; iirSampleC = 0.0; iirSampleD = 0.0; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -274,6 +275,11 @@ void FathomFive::FathomFiveKernel::Process( const Float32 *inSourceP, //to make it easier to understand for when these are open sourced. //FathomFive is the original Airwindows deep bass booster algorithm: //further ones work to rein in that DC offset issue. + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)outputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + outputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither sourceP += inNumChannels; *destP = outputSample; diff --git a/plugins/MacAU/FathomFive/FathomFive.h b/plugins/MacAU/FathomFive/FathomFive.h index 8cc656c..4d0b2f1 100755 --- a/plugins/MacAU/FathomFive/FathomFive.h +++ b/plugins/MacAU/FathomFive/FathomFive.h @@ -140,6 +140,7 @@ public: Float64 iirSampleB; Float64 iirSampleC; Float64 iirSampleD; + long double fpNShape; }; }; diff --git a/plugins/MacAU/FathomFive/FathomFive.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/FathomFive/FathomFive.xcodeproj/christopherjohnson.pbxuser index 8f8248b..7d4e84c 100755 --- a/plugins/MacAU/FathomFive/FathomFive.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/FathomFive/FathomFive.xcodeproj/christopherjohnson.pbxuser @@ -49,13 +49,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528456153; - PBXWorkspaceStateSaveDate = 528456153; + PBXPerProjectTemplateStateSaveDate = 569644406; + PBXWorkspaceStateSaveDate = 569644406; }; perUserProjectItems = { 8B5E540B1D629899009FEF76 /* PBXTextBookmark */ = 8B5E540B1D629899009FEF76 /* PBXTextBookmark */; - 8B9D64B81F7C86FC007AB60F /* PBXTextBookmark */ = 8B9D64B81F7C86FC007AB60F /* PBXTextBookmark */; - 8B9D741B1F7F99FC007AB60F /* PBXTextBookmark */ = 8B9D741B1F7F99FC007AB60F /* PBXTextBookmark */; + 8B792C2821F416B3006E9731 /* PBXTextBookmark */ = 8B792C2821F416B3006E9731 /* PBXTextBookmark */; + 8B792C2D21F416C5006E9731 /* PBXTextBookmark */ = 8B792C2D21F416C5006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -71,32 +71,32 @@ vrLen = 177; vrLoc = 3318; }; - 8B9D64B81F7C86FC007AB60F /* PBXTextBookmark */ = { + 8B792C2821F416B3006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* FathomFive.h */; name = "FathomFive.h: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 148; - vrLoc = 4091; + vrLen = 0; + vrLoc = 0; }; - 8B9D741B1F7F99FC007AB60F /* PBXTextBookmark */ = { + 8B792C2D21F416C5006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* FathomFive.h */; name = "FathomFive.h: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 107; - vrLoc = 4091; + vrLen = 0; + vrLoc = 0; }; 8BA05A660720730100365D66 /* FathomFive.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {964, 3926}}"; - sepNavSelRange = "{11859, 0}"; - sepNavVisRange = "{9798, 2175}"; - sepNavWindowFrame = "{{568, 49}, {872, 829}}"; + sepNavIntBoundsRect = "{{0, 0}, {964, 3939}}"; + sepNavSelRange = "{12693, 0}"; + sepNavVisRange = "{10879, 1966}"; + sepNavWindowFrame = "{{427, 49}, {872, 829}}"; }; }; 8BA05A670720730100365D66 /* FathomFive.exp */ = { @@ -116,9 +116,9 @@ }; 8BC6025B073B072D006C4272 /* FathomFive.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {649, 1963}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 1976}}"; sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{4091, 107}"; + sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{568, 49}, {872, 829}}"; }; }; diff --git a/plugins/MacAU/FathomFive/FathomFive.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/FathomFive/FathomFive.xcodeproj/christopherjohnson.perspectivev3 index 1b9c6b6..16aca64 100755 --- a/plugins/MacAU/FathomFive/FathomFive.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/FathomFive/FathomFive.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>810</integer> + <integer>810</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -325,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>506 355 810 487 0 0 1440 878 </string> + <string>457 343 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -353,11 +351,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D741B1F7F99FC007AB60F</string> + <string>8B792C2D21F416C5006E9731</string> <key>history</key> <array> <string>8B5E540B1D629899009FEF76</string> - <string>8B9D64B81F7C86FC007AB60F</string> + <string>8B792C2821F416B3006E9731</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 51}}</string> + <string>{{0, 0}, {603, 32}}</string> <key>RubberWindowFrame</key> - <string>506 355 810 487 0 0 1440 878 </string> + <string>457 343 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>51pt</string> + <string>32pt</string> </dict> <dict> <key>Proportion</key> - <string>390pt</string> + <string>409pt</string> <key>Tabs</key> <array> <dict> @@ -396,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 363}}</string> - <key>RubberWindowFrame</key> - <string>506 355 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 382}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -452,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 345}}</string> + <string>{{10, 27}, {603, 382}}</string> + <key>RubberWindowFrame</key> + <string>457 343 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -480,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D741C1F7F99FC007AB60F</string> + <string>8B792C2E21F416C5006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D741D1F7F99FC007AB60F</string> + <string>8B792C2F21F416C5006E9731</string> <string>8B5E54091D629899009FEF76</string> - <string>8B9D741E1F7F99FC007AB60F</string> + <string>8B792C3021F416C5006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -637,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528456188.63718599</real> + <real>569644741.719468</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -654,11 +652,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D741F1F7F99FC007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/FathomFive/FathomFive.xcodeproj</string> </array> <key>WindowString</key> - <string>506 355 810 487 0 0 1440 878 </string> + <string>457 343 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Floor/Floor.cpp b/plugins/MacAU/Floor/Floor.cpp index db0dbe5..fefa12e 100755 --- a/plugins/MacAU/Floor/Floor.cpp +++ b/plugins/MacAU/Floor/Floor.cpp @@ -346,23 +346,15 @@ void Floor::FloorKernel::Process( const Float32 *inSourceP, if (wet < 1.0) inputSample = (drySample * dry)+(inputSample*wet); - //noise shaping to 32-bit floating point - Float32 fpTemp = inputSample; - fpNShape += (inputSample-fpTemp); - inputSample += fpNShape; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; } - fpNShape *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacAU/Floor/Floor.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Floor/Floor.xcodeproj/christopherjohnson.pbxuser index c955700..6a349bf 100755 --- a/plugins/MacAU/Floor/Floor.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Floor/Floor.xcodeproj/christopherjohnson.pbxuser @@ -49,34 +49,44 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 561685575; - PBXWorkspaceStateSaveDate = 561685575; + PBXPerProjectTemplateStateSaveDate = 569644795; + PBXWorkspaceStateSaveDate = 569644795; }; perUserProjectItems = { - 8B15DD2C217AA6B4007AD769 /* PBXTextBookmark */ = 8B15DD2C217AA6B4007AD769 /* PBXTextBookmark */; + 8B792C3E21F4179E006E9731 /* PBXTextBookmark */ = 8B792C3E21F4179E006E9731 /* PBXTextBookmark */; + 8B792C4321F4194B006E9731 /* PBXTextBookmark */ = 8B792C4321F4194B006E9731 /* PBXTextBookmark */; 8BE625F22157B1F000E4E476 /* PBXTextBookmark */ = 8BE625F22157B1F000E4E476 /* PBXTextBookmark */; - 8BE6261E2157B2E800E4E476 /* PBXTextBookmark */ = 8BE6261E2157B2E800E4E476 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B15DD2C217AA6B4007AD769 /* PBXTextBookmark */ = { + 8B792C3E21F4179E006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* Floor.h */; name = "Floor.h: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 63; + vrLen = 60; + vrLoc = 0; + }; + 8B792C4321F4194B006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* Floor.h */; + name = "Floor.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 60; vrLoc = 0; }; 8BA05A660720730100365D66 /* Floor.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {843, 4901}}"; - sepNavSelRange = "{10441, 3168}"; - sepNavVisRange = "{10017, 1785}"; - sepNavWindowFrame = "{{550, 56}, {890, 810}}"; + sepNavIntBoundsRect = "{{0, 0}, {843, 5096}}"; + sepNavSelRange = "{13928, 0}"; + sepNavVisRange = "{10975, 1602}"; + sepNavWindowFrame = "{{413, 68}, {890, 810}}"; }; }; 8BA05A670720730100365D66 /* Floor.exp */ = { @@ -99,8 +109,8 @@ uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {740, 2015}}"; sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 63}"; - sepNavWindowFrame = "{{743, 68}, {890, 810}}"; + sepNavVisRange = "{0, 60}"; + sepNavWindowFrame = "{{550, 68}, {890, 810}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { @@ -127,16 +137,6 @@ vrLen = 133; vrLoc = 0; }; - 8BE6261E2157B2E800E4E476 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* Floor.h */; - name = "Floor.h: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 126; - vrLoc = 0; - }; 8D01CCC60486CAD60068D4B7 /* Floor */ = { activeExec = 0; }; diff --git a/plugins/MacAU/Floor/Floor.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Floor/Floor.xcodeproj/christopherjohnson.perspectivev3 index 51cf855..d5526e2 100755 --- a/plugins/MacAU/Floor/Floor.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Floor/Floor.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>745 315 810 487 0 0 1440 878 </string> + <string>517 310 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,11 +350,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B15DD2C217AA6B4007AD769</string> + <string>8B792C4321F4194B006E9731</string> <key>history</key> <array> <string>8BE625F22157B1F000E4E476</string> - <string>8BE6261E2157B2E800E4E476</string> + <string>8B792C3E21F4179E006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 117}}</string> + <string>{{0, 0}, {603, 102}}</string> <key>RubberWindowFrame</key> - <string>745 315 810 487 0 0 1440 878 </string> + <string>517 310 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>117pt</string> + <string>102pt</string> </dict> <dict> <key>Proportion</key> - <string>324pt</string> + <string>339pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 297}}</string> - <key>RubberWindowFrame</key> - <string>745 315 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 312}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {603, 312}}</string> + <key>RubberWindowFrame</key> + <string>517 310 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B15DD08217AA44C007AD769</string> + <string>8B792C4421F4194B006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B15DD09217AA44C007AD769</string> + <string>8B792C4521F4194B006E9731</string> <string>8BE625F02157B1F000E4E476</string> - <string>8B15DD0A217AA44C007AD769</string> + <string>8B792C4621F4194B006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>561686196.25954103</real> + <real>569645387.98353899</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -656,7 +654,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/Floor/Floor.xcodeproj</string> </array> <key>WindowString</key> - <string>745 315 810 487 0 0 1440 878 </string> + <string>517 310 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Fracture/Fracture.cpp b/plugins/MacAU/Fracture/Fracture.cpp index f6a7186..4818270 100755 --- a/plugins/MacAU/Fracture/Fracture.cpp +++ b/plugins/MacAU/Fracture/Fracture.cpp @@ -182,9 +182,7 @@ ComponentResult Fracture::Initialize() //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void Fracture::FractureKernel::Reset() { - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -211,11 +209,7 @@ void Fracture::FractureKernel::Process( const Float32 *inSourceP, Float64 wet = GetParameter( kParam_Four ); Float64 dry = 1.0-wet; Float64 bridgerectifier; - density = density * fabs(density); - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; - + density = density * fabs(density); while (nSampleFrames-- > 0) { inputSample = *sourceP; @@ -261,19 +255,11 @@ void Fracture::FractureKernel::Process( const Float32 *inSourceP, inputSample = (drySample * dry)+(inputSample*wet); //that simple. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; diff --git a/plugins/MacAU/Fracture/Fracture.exp b/plugins/MacAU/Fracture/Fracture.exp index b485428..9eb17a5 100755 --- a/plugins/MacAU/Fracture/Fracture.exp +++ b/plugins/MacAU/Fracture/Fracture.exp @@ -1 +1 @@ -_FractureEntry
\ No newline at end of file +_FractureEntry diff --git a/plugins/MacAU/Fracture/Fracture.h b/plugins/MacAU/Fracture/Fracture.h index aa9a6f5..1dccb92 100755 --- a/plugins/MacAU/Fracture/Fracture.h +++ b/plugins/MacAU/Fracture/Fracture.h @@ -134,9 +134,7 @@ public: virtual void Reset(); private: - Float64 fpNShapeA; - Float64 fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/Fracture/Fracture.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Fracture/Fracture.xcodeproj/christopherjohnson.pbxuser index 9e2cdb2..4efb520 100755 --- a/plugins/MacAU/Fracture/Fracture.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Fracture/Fracture.xcodeproj/christopherjohnson.pbxuser @@ -49,19 +49,51 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528456201; - PBXWorkspaceStateSaveDate = 528456201; + PBXPerProjectTemplateStateSaveDate = 569645423; + PBXWorkspaceStateSaveDate = 569645423; + }; + perUserProjectItems = { + 8B792C5521F41A58006E9731 /* PBXTextBookmark */ = 8B792C5521F41A58006E9731 /* PBXTextBookmark */; + 8B792C5B21F41AB6006E9731 /* PBXTextBookmark */ = 8B792C5B21F41AB6006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B792C5521F41A58006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Fracture.cpp */; + name = "Fracture.cpp: 248"; + rLen = 0; + rLoc = 11543; + rType = 0; + vrLen = 312; + vrLoc = 11562; + }; + 8B792C5B21F41AB6006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Fracture.cpp */; + name = "Fracture.cpp: 248"; + rLen = 0; + rLoc = 11543; + rType = 0; + vrLen = 312; + vrLoc = 11562; + }; 8BA05A660720730100365D66 /* Fracture.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {964, 3913}}"; - sepNavSelRange = "{11687, 0}"; - sepNavVisRange = "{9717, 2345}"; - sepNavWindowFrame = "{{517, 41}, {923, 837}}"; + sepNavIntBoundsRect = "{{0, 0}, {621, 3718}}"; + sepNavSelRange = "{11543, 0}"; + sepNavVisRange = "{11562, 312}"; + sepNavWindowFrame = "{{365, 41}, {923, 837}}"; + }; + }; + 8BA05A670720730100365D66 /* Fracture.exp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1253, 694}}"; + sepNavSelRange = "{15, 0}"; + sepNavVisRange = "{0, 15}"; + sepNavWindowFrame = "{{15, 51}, {1300, 822}}"; }; }; 8BA05A690720730100365D66 /* FractureVersion.h */ = { @@ -74,9 +106,9 @@ }; 8BC6025B073B072D006C4272 /* Fracture.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {922, 1846}}"; - sepNavSelRange = "{5434, 0}"; - sepNavVisRange = "{3891, 1652}"; + sepNavIntBoundsRect = "{{0, 0}, {922, 1859}}"; + sepNavSelRange = "{5401, 0}"; + sepNavVisRange = "{3843, 1667}"; sepNavWindowFrame = "{{517, 39}, {923, 837}}"; }; }; diff --git a/plugins/MacAU/Fracture/Fracture.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Fracture/Fracture.xcodeproj/christopherjohnson.perspectivev3 index 46cfa67..a5f791e 100755 --- a/plugins/MacAU/Fracture/Fracture.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Fracture/Fracture.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>810</integer> + <integer>810</integer> </array> <key>Perspectives</key> <array> @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>4</integer> + <integer>5</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> @@ -324,7 +324,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>362 267 810 487 0 0 1440 878 </string> + <string>431 299 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -340,7 +340,7 @@ <key>PBXProjectModuleGUID</key> <string>8B9CE5211DFF96EB00A5DC6F</string> <key>PBXProjectModuleLabel</key> - <string></string> + <string>Fracture.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -348,7 +348,15 @@ <key>PBXProjectModuleGUID</key> <string>8B9CE5221DFF96EB00A5DC6F</string> <key>PBXProjectModuleLabel</key> - <string></string> + <string>Fracture.cpp</string> + <key>_historyCapacity</key> + <integer>0</integer> + <key>bookmark</key> + <string>8B792C5B21F41AB6006E9731</string> + <key>history</key> + <array> + <string>8B792C5521F41A58006E9731</string> + </array> </dict> <key>SplitCount</key> <string>1</string> @@ -361,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 0}}</string> + <string>{{0, 0}, {603, 132}}</string> <key>RubberWindowFrame</key> - <string>362 267 810 487 0 0 1440 878 </string> + <string>431 299 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>0pt</string> + <string>132pt</string> </dict> <dict> <key>Proportion</key> - <string>441pt</string> + <string>309pt</string> <key>Tabs</key> <array> <dict> @@ -386,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> - <key>RubberWindowFrame</key> - <string>362 267 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 282}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -442,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 282}}</string> + <key>RubberWindowFrame</key> + <string>431 299 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -470,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D742C1F7F9A57007AB60F</string> + <string>8B792C5C21F41AB6006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D742D1F7F9A57007AB60F</string> + <string>8B792C5D21F41AB6006E9731</string> <string>8B9CE5211DFF96EB00A5DC6F</string> - <string>8B9D742E1F7F9A57007AB60F</string> + <string>8B792C5E21F41AB6006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -627,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528456279.90402597</real> + <real>569645750.04603803</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -644,11 +652,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D742F1F7F9A57007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/Fracture/Fracture.xcodeproj</string> </array> <key>WindowString</key> - <string>362 267 810 487 0 0 1440 878 </string> + <string>431 299 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/FromTape/FromTape.cpp b/plugins/MacAU/FromTape/FromTape.cpp index 4a305e9..30fe41a 100755 --- a/plugins/MacAU/FromTape/FromTape.cpp +++ b/plugins/MacAU/FromTape/FromTape.cpp @@ -221,9 +221,7 @@ void FromTape::FromTapeKernel::Reset() iirSampleZ = 0.0; flip = 0; //noisesource = 0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -259,9 +257,6 @@ void FromTape::FromTapeKernel::Process( const Float32 *inSourceP, long double inputSample; - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; while (nSampleFrames-- > 0) { inputSample = *sourceP; @@ -378,19 +373,11 @@ void FromTape::FromTapeKernel::Process( const Float32 *inSourceP, inputSample = (inputSample * wet) + (drySample * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/FromTape/FromTape.h b/plugins/MacAU/FromTape/FromTape.h index f79862f..e9156d5 100755 --- a/plugins/MacAU/FromTape/FromTape.h +++ b/plugins/MacAU/FromTape/FromTape.h @@ -169,9 +169,7 @@ public: Float64 iirSampleZ; int flip; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/FromTape/FromTape.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/FromTape/FromTape.xcodeproj/christopherjohnson.pbxuser index a9b7fe9..3594710 100755 --- a/plugins/MacAU/FromTape/FromTape.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/FromTape/FromTape.xcodeproj/christopherjohnson.pbxuser @@ -49,27 +49,28 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528456291; - PBXWorkspaceStateSaveDate = 528456291; + PBXPerProjectTemplateStateSaveDate = 569646762; + PBXWorkspaceStateSaveDate = 569646762; }; perUserProjectItems = { - 8B2B77731F6D6F8D00A2CD5B /* PBXTextBookmark */ = 8B2B77731F6D6F8D00A2CD5B /* PBXTextBookmark */; + 8B792C7021F41F11006E9731 /* PlistBookmark */ = 8B792C7021F41F11006E9731 /* PlistBookmark */; 8B8845F81F20429900E13453 /* PlistBookmark */ = 8B8845F81F20429900E13453 /* PlistBookmark */; - 8B9D743A1F7F9A77007AB60F /* PBXTextBookmark */ = 8B9D743A1F7F9A77007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B2B77731F6D6F8D00A2CD5B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* FromTape.h */; - name = "FromTape.h: 172"; - rLen = 65; - rLoc = 6216; - rType = 0; - vrLen = 40; - vrLoc = 6241; + 8B792C7021F41F11006E9731 /* PlistBookmark */ = { + isa = PlistBookmark; + fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; + fallbackIsa = PBXBookmark; + isK = 0; + kPath = ( + CFBundleName, + ); + name = /Users/christopherjohnson/Desktop/MacAU/FromTape/Info.plist; + rLen = 0; + rLoc = 9223372036854775807; }; 8B8845F81F20429900E13453 /* PlistBookmark */ = { isa = PlistBookmark; @@ -83,22 +84,12 @@ rLen = 0; rLoc = 9223372036854775808; }; - 8B9D743A1F7F9A77007AB60F /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* FromTape.h */; - name = "FromTape.h: 172"; - rLen = 65; - rLoc = 6216; - rType = 0; - vrLen = 0; - vrLoc = 0; - }; 8BA05A660720730100365D66 /* FromTape.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {663, 5291}}"; - sepNavSelRange = "{17764, 148}"; - sepNavVisRange = "{0, 0}"; - sepNavWindowFrame = "{{410, 39}, {1005, 839}}"; + sepNavIntBoundsRect = "{{0, 0}, {958, 4849}}"; + sepNavSelRange = "{18025, 0}"; + sepNavVisRange = "{16126, 1987}"; + sepNavWindowFrame = "{{208, 39}, {1005, 839}}"; }; }; 8BA05A690720730100365D66 /* FromTapeVersion.h */ = { @@ -111,8 +102,8 @@ }; 8BC6025B073B072D006C4272 /* FromTape.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {482, 2418}}"; - sepNavSelRange = "{6216, 65}"; + sepNavIntBoundsRect = "{{0, 0}, {482, 2392}}"; + sepNavSelRange = "{6238, 0}"; sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{238, 39}, {1005, 839}}"; }; diff --git a/plugins/MacAU/FromTape/FromTape.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/FromTape/FromTape.xcodeproj/christopherjohnson.perspectivev3 index 9ea14ce..dbd983d 100755 --- a/plugins/MacAU/FromTape/FromTape.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/FromTape/FromTape.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -341,7 +339,7 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274A1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>FromTape.h</string> + <string>Info.plist</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -349,15 +347,14 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274B1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>FromTape.h</string> + <string>Info.plist</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D743A1F7F9A77007AB60F</string> + <string>8B792C7021F41F11006E9731</string> <key>history</key> <array> <string>8B8845F81F20429900E13453</string> - <string>8B2B77731F6D6F8D00A2CD5B</string> </array> </dict> <key>SplitCount</key> @@ -397,8 +394,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {531, 581}}</string> - <key>RubberWindowFrame</key> - <string>187 187 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -452,7 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 525}}</string> + <string>{{10, 27}, {531, 581}}</string> + <key>RubberWindowFrame</key> + <string>187 187 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -480,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D743B1F7F9A77007AB60F</string> + <string>8B792C7121F41F11006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D743C1F7F9A77007AB60F</string> + <string>8B792C7221F41F11006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D743D1F7F9A77007AB60F</string> + <string>8B792C7321F41F11006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -657,7 +654,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528456311.18495703</real> + <real>569646865.43937504</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -674,7 +671,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D743E1F7F9A77007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/FromTape/FromTape.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacAU/Gatelinked/Gatelinked.cpp b/plugins/MacAU/Gatelinked/Gatelinked.cpp index 9c0c484..641b64d 100755 --- a/plugins/MacAU/Gatelinked/Gatelinked.cpp +++ b/plugins/MacAU/Gatelinked/Gatelinked.cpp @@ -310,7 +310,7 @@ OSStatus Gatelinked::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFl if (highestSample > threshold) { treblefreq += attackSpeed; - if (treblefreq > 1.0) treblefreq = 1.0; + if (treblefreq > 2.0) treblefreq = 2.0; bassfreq -= attackSpeed; bassfreq -= attackSpeed; if (bassfreq < 0.0) bassfreq = 0.0; @@ -337,6 +337,8 @@ OSStatus Gatelinked::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFl iirLowpassAR = (iirLowpassAR * (1.0 - treblefreq)) + (inputSampleR * treblefreq); } + if (bassfreq > 1.0) bassfreq = 1.0; + if (bassfreq > 0.0) { iirHighpassAL = (iirHighpassAL * (1.0 - bassfreq)) + (inputSampleL * bassfreq); iirHighpassAR = (iirHighpassAR * (1.0 - bassfreq)) + (inputSampleR * bassfreq); @@ -358,7 +360,7 @@ OSStatus Gatelinked::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFl if (highestSample > threshold) { treblefreq += attackSpeed; - if (treblefreq > 1.0) treblefreq = 1.0; + if (treblefreq > 2.0) treblefreq = 2.0; bassfreq -= attackSpeed; bassfreq -= attackSpeed; if (bassfreq < 0.0) bassfreq = 0.0; @@ -385,6 +387,8 @@ OSStatus Gatelinked::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFl iirLowpassBR = (iirLowpassBR * (1.0 - treblefreq)) + (inputSampleR * treblefreq); } + if (bassfreq > 1.0) bassfreq = 1.0; + if (bassfreq > 0.0) { iirHighpassBL = (iirHighpassBL * (1.0 - bassfreq)) + (inputSampleL * bassfreq); iirHighpassBR = (iirHighpassBR * (1.0 - bassfreq)) + (inputSampleR * bassfreq); @@ -408,18 +412,14 @@ OSStatus Gatelinked::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFl flip = !flip; - //noise shaping to 32-bit floating point - Float32 fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((Float32)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *outputL = inputSampleL; *outputR = inputSampleR; @@ -430,12 +430,6 @@ OSStatus Gatelinked::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFl outputL += 1; outputR += 1; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. return noErr; } diff --git a/plugins/MacAU/Gatelinked/Gatelinked.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Gatelinked/Gatelinked.xcodeproj/christopherjohnson.pbxuser index 21b7e89..9dd8e83 100755 --- a/plugins/MacAU/Gatelinked/Gatelinked.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Gatelinked/Gatelinked.xcodeproj/christopherjohnson.pbxuser @@ -49,13 +49,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 565400646; - PBXWorkspaceStateSaveDate = 565400646; + PBXPerProjectTemplateStateSaveDate = 569646892; + PBXWorkspaceStateSaveDate = 569646892; }; perUserProjectItems = { 8B0209B221B3258000952287 /* PBXTextBookmark */ = 8B0209B221B3258000952287 /* PBXTextBookmark */; - 8B0209B421B3258000952287 /* PBXTextBookmark */ = 8B0209B421B3258000952287 /* PBXTextBookmark */; - 8B020A3621B354DE00952287 /* PBXTextBookmark */ = 8B020A3621B354DE00952287 /* PBXTextBookmark */; + 8B416D4621B5FDC600DD5013 /* PBXTextBookmark */ = 8B416D4621B5FDC600DD5013 /* PBXTextBookmark */; + 8B792C8121F41F65006E9731 /* PBXTextBookmark */ = 8B792C8121F41F65006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -71,39 +71,39 @@ vrLen = 140; vrLoc = 5351; }; - 8B0209B421B3258000952287 /* PBXTextBookmark */ = { + 8B416D4621B5FDC600DD5013 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A690720730100365D66 /* GatelinkedVersion.h */; name = "GatelinkedVersion.h: 54"; rLen = 0; rLoc = 2902; rType = 0; - vrLen = 139; + vrLen = 130; vrLoc = 2826; }; - 8B020A3621B354DE00952287 /* PBXTextBookmark */ = { + 8B792C8121F41F65006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A690720730100365D66 /* GatelinkedVersion.h */; name = "GatelinkedVersion.h: 54"; rLen = 0; rLoc = 2902; rType = 0; - vrLen = 131; + vrLen = 130; vrLoc = 2826; }; 8BA05A660720730100365D66 /* Gatelinked.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1105, 6136}}"; - sepNavSelRange = "{15096, 0}"; - sepNavVisRange = "{14897, 1807}"; + sepNavIntBoundsRect = "{{0, 0}, {1105, 6071}}"; + sepNavSelRange = "{16752, 0}"; + sepNavVisRange = "{15147, 1623}"; sepNavWindowFrame = "{{177, 58}, {1152, 820}}"; }; }; 8BA05A690720730100365D66 /* GatelinkedVersion.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {761, 936}}"; + sepNavIntBoundsRect = "{{0, 0}, {456, 871}}"; sepNavSelRange = "{2902, 0}"; - sepNavVisRange = "{2826, 131}"; + sepNavVisRange = "{2826, 130}"; sepNavWindowFrame = "{{15, 43}, {705, 830}}"; }; }; @@ -118,7 +118,7 @@ uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {894, 1833}}"; sepNavSelRange = "{5276, 0}"; - sepNavVisRange = "{2524, 1545}"; + sepNavVisRange = "{3729, 1930}"; sepNavWindowFrame = "{{735, 48}, {705, 830}}"; }; }; diff --git a/plugins/MacAU/Gatelinked/Gatelinked.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Gatelinked/Gatelinked.xcodeproj/christopherjohnson.perspectivev3 index caae9ee..acd4314 100755 --- a/plugins/MacAU/Gatelinked/Gatelinked.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Gatelinked/Gatelinked.xcodeproj/christopherjohnson.perspectivev3 @@ -324,7 +324,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>622 458 815 376 0 0 1440 878 </string> + <string>491 452 815 376 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,11 +352,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B020A3621B354DE00952287</string> + <string>8B792C8121F41F65006E9731</string> <key>history</key> <array> <string>8B0209B221B3258000952287</string> - <string>8B0209B421B3258000952287</string> + <string>8B416D4621B5FDC600DD5013</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {505, 84}}</string> + <string>{{0, 0}, {505, 51}}</string> <key>RubberWindowFrame</key> - <string>622 458 815 376 0 0 1440 878 </string> + <string>491 452 815 376 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>84pt</string> + <string>51pt</string> </dict> <dict> <key>Proportion</key> - <string>246pt</string> + <string>279pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +395,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {505, 219}}</string> + <string>{{10, 27}, {505, 252}}</string> <key>RubberWindowFrame</key> - <string>622 458 815 376 0 0 1440 878 </string> + <string>491 452 815 376 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +451,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {505, 303}}</string> + <string>{{10, 27}, {505, 235}}</string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B020A3721B354DE00952287</string> + <string>8B792C8221F41F65006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B020A3821B354DE00952287</string> + <string>8B792C8321F41F65006E9731</string> <string>8BCAE2B921B0AD04005A3737</string> - <string>8B020A3921B354DE00952287</string> + <string>8B792C8421F41F65006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>565400798.62677002</real> + <real>569646949.70571005</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,11 +653,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B020A3A21B354DE00952287</string> <string>/Users/christopherjohnson/Desktop/MacAU/Gatelinked/Gatelinked.xcodeproj</string> </array> <key>WindowString</key> - <string>622 458 815 376 0 0 1440 878 </string> + <string>491 452 815 376 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Gatelope/Gatelope.cpp b/plugins/MacAU/Gatelope/Gatelope.cpp index bde6522..3f6ed4e 100755 --- a/plugins/MacAU/Gatelope/Gatelope.cpp +++ b/plugins/MacAU/Gatelope/Gatelope.cpp @@ -334,23 +334,15 @@ void Gatelope::GatelopeKernel::Process( const Float32 *inSourceP, flip = !flip; - //noise shaping to 32-bit floating point - Float32 fpTemp = inputSample; - fpNShape += (inputSample-fpTemp); - inputSample += fpNShape; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; } - fpNShape *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacAU/Gatelope/Gatelope.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Gatelope/Gatelope.xcodeproj/christopherjohnson.pbxuser index 7846c86..fdc4740 100755 --- a/plugins/MacAU/Gatelope/Gatelope.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Gatelope/Gatelope.xcodeproj/christopherjohnson.pbxuser @@ -49,15 +49,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 565571362; - PBXWorkspaceStateSaveDate = 565571362; + PBXPerProjectTemplateStateSaveDate = 569646970; + PBXWorkspaceStateSaveDate = 569646970; }; perUserProjectItems = { 8B0209A521B3215F00952287 /* PlistBookmark */ = 8B0209A521B3215F00952287 /* PlistBookmark */; - 8B416D2421B5EF2500DD5013 /* PBXBookmark */ = 8B416D2421B5EF2500DD5013 /* PBXBookmark */; - 8B416D2921B5FD1F00DD5013 /* PBXTextBookmark */ = 8B416D2921B5FD1F00DD5013 /* PBXTextBookmark */; - 8B416D2E21B5FD3000DD5013 /* PBXTextBookmark */ = 8B416D2E21B5FD3000DD5013 /* PBXTextBookmark */; - 8B416D3421B5FD3000DD5013 /* PBXTextBookmark */ = 8B416D3421B5FD3000DD5013 /* PBXTextBookmark */; + 8B792C9021F41F9A006E9731 /* PBXTextBookmark */ = 8B792C9021F41F9A006E9731 /* PBXTextBookmark */; + 8B792C9521F420BF006E9731 /* PBXTextBookmark */ = 8B792C9521F420BF006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -75,11 +73,7 @@ rLen = 0; rLoc = 9223372036854775808; }; - 8B416D2421B5EF2500DD5013 /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 8BA05A660720730100365D66 /* Gatelope.cpp */; - }; - 8B416D2921B5FD1F00DD5013 /* PBXTextBookmark */ = { + 8B792C9021F41F9A006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A690720730100365D66 /* GatelopeVersion.h */; name = "GatelopeVersion.h: 54"; @@ -89,7 +83,7 @@ vrLen = 126; vrLoc = 2816; }; - 8B416D2E21B5FD3000DD5013 /* PBXTextBookmark */ = { + 8B792C9521F420BF006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A690720730100365D66 /* GatelopeVersion.h */; name = "GatelopeVersion.h: 54"; @@ -99,22 +93,12 @@ vrLen = 126; vrLoc = 2816; }; - 8B416D3421B5FD3000DD5013 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* Gatelope.cpp */; - name = "Gatelope.cpp: 325"; - rLen = 0; - rLoc = 13129; - rType = 0; - vrLen = 1897; - vrLoc = 12493; - }; 8BA05A660720730100365D66 /* Gatelope.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1082, 5057}}"; - sepNavSelRange = "{13129, 0}"; - sepNavVisRange = "{12493, 1897}"; - sepNavWindowFrame = "{{15, 39}, {1129, 834}}"; + sepNavIntBoundsRect = "{{0, 0}, {1082, 4979}}"; + sepNavSelRange = "{13893, 0}"; + sepNavVisRange = "{12404, 1492}"; + sepNavWindowFrame = "{{185, 44}, {1129, 834}}"; }; }; 8BA05A670720730100365D66 /* Gatelope.exp */ = { @@ -127,7 +111,7 @@ }; 8BA05A690720730100365D66 /* GatelopeVersion.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {456, 923}}"; + sepNavIntBoundsRect = "{{0, 0}, {456, 871}}"; sepNavSelRange = "{2884, 4}"; sepNavVisRange = "{2816, 126}"; sepNavWindowFrame = "{{15, 43}, {705, 830}}"; diff --git a/plugins/MacAU/Gatelope/Gatelope.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Gatelope/Gatelope.xcodeproj/christopherjohnson.perspectivev3 index 1a46c04..7009de0 100755 --- a/plugins/MacAU/Gatelope/Gatelope.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Gatelope/Gatelope.xcodeproj/christopherjohnson.perspectivev3 @@ -222,48 +222,7 @@ </dict> </array> <key>OpenEditors</key> - <array> - <dict> - <key>Content</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>8B416D3221B5FD3000DD5013</string> - <key>PBXProjectModuleLabel</key> - <string>Gatelope.cpp</string> - <key>PBXSplitModuleInNavigatorKey</key> - <dict> - <key>Split0</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>8B416D3321B5FD3000DD5013</string> - <key>PBXProjectModuleLabel</key> - <string>Gatelope.cpp</string> - <key>_historyCapacity</key> - <integer>0</integer> - <key>bookmark</key> - <string>8B416D3421B5FD3000DD5013</string> - <key>history</key> - <array> - <string>8B416D2421B5EF2500DD5013</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}, {1129, 737}}</string> - <key>PBXModuleWindowStatusBarHidden2</key> - <false/> - <key>RubberWindowFrame</key> - <string>15 95 1129 778 0 0 1440 878 </string> - </dict> - </dict> - </array> + <array/> <key>PerspectiveWidths</key> <array> <integer>815</integer> @@ -365,7 +324,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>46 385 815 372 0 0 1440 878 </string> + <string>278 409 815 372 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -393,11 +352,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B416D2E21B5FD3000DD5013</string> + <string>8B792C9521F420BF006E9731</string> <key>history</key> <array> <string>8B0209A521B3215F00952287</string> - <string>8B416D2921B5FD1F00DD5013</string> + <string>8B792C9021F41F9A006E9731</string> </array> </dict> <key>SplitCount</key> @@ -411,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {505, 67}}</string> + <string>{{0, 0}, {505, 50}}</string> <key>RubberWindowFrame</key> - <string>46 385 815 372 0 0 1440 878 </string> + <string>278 409 815 372 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>67pt</string> + <string>50pt</string> </dict> <dict> <key>Proportion</key> - <string>259pt</string> + <string>276pt</string> <key>Tabs</key> <array> <dict> @@ -436,7 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {505, 232}}</string> + <string>{{10, 27}, {505, 249}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -490,9 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {505, 232}}</string> + <string>{{10, 27}, {505, 249}}</string> <key>RubberWindowFrame</key> - <string>46 385 815 372 0 0 1440 878 </string> + <string>278 409 815 372 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -520,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B416D2F21B5FD3000DD5013</string> + <string>8B792C9621F420BF006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B416D3021B5FD3000DD5013</string> + <string>8B792C9721F420BF006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B416D3121B5FD3000DD5013</string> + <string>8B792C9821F420BF006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -697,7 +656,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>565574960.58745801</real> + <real>569647295.48975003</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -714,11 +673,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B416D3221B5FD3000DD5013</string> <string>/Users/christopherjohnson/Desktop/MacAU/Gatelope/Gatelope.xcodeproj</string> </array> <key>WindowString</key> - <string>46 385 815 372 0 0 1440 878 </string> + <string>278 409 815 372 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Golem/Golem.cpp b/plugins/MacAU/Golem/Golem.cpp index 25ac011..e6f1566 100755 --- a/plugins/MacAU/Golem/Golem.cpp +++ b/plugins/MacAU/Golem/Golem.cpp @@ -210,11 +210,8 @@ ComponentResult Golem::Reset(AudioUnitScope inScope, AudioUnitElement inElement { for(count = 0; count < 4098; count++) {p[count] = 0.0;} count = 0; - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; - flip = false; + fpNShapeL = 0.0; + fpNShapeR = 0.0; return noErr; } @@ -233,9 +230,6 @@ OSStatus Golem::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags, Float32 * outputL = (Float32*)(outBuffer.mBuffers[0].mData); Float32 * outputR = (Float32*)(outBuffer.mBuffers[1].mData); UInt32 nSampleFrames = inFramesToProcess; - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; int phase = (int) GetParameter( kParam_Three ); Float64 balance = GetParameter( kParam_One ) / 2.0; Float64 gainL = 0.5 - balance; @@ -333,32 +327,15 @@ OSStatus Golem::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags, inputSampleR = inputSampleL; //the output is totally mono - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output - - *outputL = inputSampleL; - *outputR = inputSampleR; - //don't know why we're getting a volume boost, cursed thing - + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((Float32)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither + *outputL = inputSampleL; *outputR = inputSampleR; //We have pointers to increment- every actual value reference has to be to a *value diff --git a/plugins/MacAU/Golem/Golem.h b/plugins/MacAU/Golem/Golem.h index ecaeea5..d66b91f 100755 --- a/plugins/MacAU/Golem/Golem.h +++ b/plugins/MacAU/Golem/Golem.h @@ -132,11 +132,8 @@ public: private: Float64 p[4099]; int count; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; - bool flip; + long double fpNShapeL; + long double fpNShapeR; }; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/plugins/MacAU/Golem/Golem.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Golem/Golem.xcodeproj/christopherjohnson.pbxuser index 9e13ec7..91361ce 100755 --- a/plugins/MacAU/Golem/Golem.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Golem/Golem.xcodeproj/christopherjohnson.pbxuser @@ -49,23 +49,43 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 546574392; - PBXWorkspaceStateSaveDate = 546574392; + PBXPerProjectTemplateStateSaveDate = 569647319; + PBXWorkspaceStateSaveDate = 569647319; }; perUserProjectItems = { - 8BC5D0B6209410C50058B257 /* PBXTextBookmark */ = 8BC5D0B6209410C50058B257 /* PBXTextBookmark */; - 8BC5D0B7209410C50058B257 /* PBXTextBookmark */ = 8BC5D0B7209410C50058B257 /* PBXTextBookmark */; + 8B792CA721F42166006E9731 /* PBXTextBookmark */ = 8B792CA721F42166006E9731 /* PBXTextBookmark */; + 8B792CAC21F42187006E9731 /* PBXTextBookmark */ = 8B792CAC21F42187006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B792CA721F42166006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Golem.cpp */; + name = "Golem.cpp: 296"; + rLen = 831; + rLoc = 12420; + rType = 0; + vrLen = 126; + vrLoc = 12547; + }; + 8B792CAC21F42187006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Golem.cpp */; + name = "Golem.cpp: 296"; + rLen = 831; + rLoc = 12420; + rType = 0; + vrLen = 126; + vrLoc = 12547; + }; 8BA05A660720730100365D66 /* Golem.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {803, 4979}}"; - sepNavSelRange = "{12592, 831}"; - sepNavVisRange = "{12592, 178}"; - sepNavWindowFrame = "{{702, 65}, {714, 813}}"; + sepNavIntBoundsRect = "{{0, 0}, {677, 4680}}"; + sepNavSelRange = "{12420, 831}"; + sepNavVisRange = "{12547, 126}"; + sepNavWindowFrame = "{{548, 65}, {714, 813}}"; }; }; 8BA05A670720730100365D66 /* Golem.exp */ = { @@ -84,32 +104,12 @@ sepNavWindowFrame = "{{601, -12}, {877, 831}}"; }; }; - 8BC5D0B6209410C50058B257 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* Golem.cpp */; - name = "Golem.cpp: 302"; - rLen = 831; - rLoc = 12592; - rType = 0; - vrLen = 178; - vrLoc = 12592; - }; - 8BC5D0B7209410C50058B257 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* Golem.cpp */; - name = "Golem.cpp: 302"; - rLen = 831; - rLoc = 12592; - rType = 0; - vrLen = 178; - vrLoc = 12592; - }; 8BC6025B073B072D006C4272 /* Golem.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {974, 1885}}"; - sepNavSelRange = "{5566, 30}"; - sepNavVisRange = "{1674, 2178}"; - sepNavWindowFrame = "{{655, 43}, {1021, 800}}"; + sepNavIntBoundsRect = "{{0, 0}, {974, 1833}}"; + sepNavSelRange = "{5596, 0}"; + sepNavVisRange = "{4025, 1724}"; + sepNavWindowFrame = "{{419, 43}, {1021, 800}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/Golem/Golem.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Golem/Golem.xcodeproj/christopherjohnson.perspectivev3 index c96e719..30ddbd9 100755 --- a/plugins/MacAU/Golem/Golem.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Golem/Golem.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>619 304 810 487 0 0 1440 878 </string> + <string>478 304 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,10 +350,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BC5D0B7209410C50058B257</string> + <string>8B792CAC21F42187006E9731</string> <key>history</key> <array> - <string>8BC5D0B6209410C50058B257</string> + <string>8B792CA721F42166006E9731</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +367,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 132}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> - <string>619 304 810 487 0 0 1440 878 </string> + <string>478 304 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +392,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> - <key>RubberWindowFrame</key> - <string>619 304 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 297}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -450,7 +446,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 297}}</string> + <key>RubberWindowFrame</key> + <string>478 304 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -478,11 +476,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BC5D0B8209410C50058B257</string> + <string>8B792CAD21F42187006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BC5D0B9209410C50058B257</string> + <string>8B792CAE21F42187006E9731</string> <string>8B8D6996207ABA9A0029B7B0</string> - <string>8BC5D0BA209410C50058B257</string> + <string>8B792CAF21F42187006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +633,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>546574533.255705</real> + <real>569647495.88627398</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,11 +650,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BC5D0BB209410C50058B257</string> <string>/Users/christopherjohnson/Desktop/MacAU/Golem/Golem.xcodeproj</string> </array> <key>WindowString</key> - <string>619 304 810 487 0 0 1440 878 </string> + <string>478 304 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/GrooveWear/GrooveWear.cpp b/plugins/MacAU/GrooveWear/GrooveWear.cpp index baf7ac4..62c9634 100644..100755 --- a/plugins/MacAU/GrooveWear/GrooveWear.cpp +++ b/plugins/MacAU/GrooveWear/GrooveWear.cpp @@ -177,9 +177,7 @@ void GrooveWear::GrooveWearKernel::Reset() bMidPrev = 0.0; cMidPrev = 0.0; dMidPrev = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -194,9 +192,6 @@ void GrooveWear::GrooveWearKernel::Process( const Float32 *inSourceP, UInt32 nSampleFrames = inFramesToProcess; const Float32 *sourceP = inSourceP; Float32 *destP = inDestP; - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; Float64 overallscale = (pow(GetParameter( kParam_One ),2)*19.0)+1.0; Float64 gain = overallscale; @@ -449,19 +444,11 @@ void GrooveWear::GrooveWearKernel::Process( const Float32 *inSourceP, inputSample = (inputSample * dWet) + (drySample * dDry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/GrooveWear/GrooveWear.h b/plugins/MacAU/GrooveWear/GrooveWear.h index b9e7722..5f86da8 100644..100755 --- a/plugins/MacAU/GrooveWear/GrooveWear.h +++ b/plugins/MacAU/GrooveWear/GrooveWear.h @@ -138,9 +138,7 @@ public: Float64 cMidPrev; Float64 dMidPrev; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.mode1v3 b/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.mode1v3 index f301be9..f301be9 100644..100755 --- a/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.mode1v3 +++ b/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.mode1v3 diff --git a/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.pbxuser index bdb3283..1980dfa 100644..100755 --- a/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.pbxuser @@ -49,14 +49,15 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 538681963; - PBXWorkspaceStateSaveDate = 538681963; + PBXPerProjectTemplateStateSaveDate = 569647523; + PBXWorkspaceStateSaveDate = 569647523; }; perUserProjectItems = { 8B0E2BD7201B927800943268 /* PlistBookmark */ = 8B0E2BD7201B927800943268 /* PlistBookmark */; 8B0E2BD8201B927800943268 /* PBXTextBookmark */ = 8B0E2BD8201B927800943268 /* PBXTextBookmark */; - 8B4E5400201BA1BA00B5DC2A /* PBXTextBookmark */ = 8B4E5400201BA1BA00B5DC2A /* PBXTextBookmark */; - 8B4E5435201BA7FC00B5DC2A /* PBXTextBookmark */ = 8B4E5435201BA7FC00B5DC2A /* PBXTextBookmark */; + 8B181B43204CA16500516BEE /* PBXTextBookmark */ = 8B181B43204CA16500516BEE /* PBXTextBookmark */; + 8B792CBD21F42257006E9731 /* PBXTextBookmark */ = 8B792CBD21F42257006E9731 /* PBXTextBookmark */; + 8B792CC221F422B5006E9731 /* PBXTextBookmark */ = 8B792CC221F422B5006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -84,47 +85,57 @@ vrLen = 297; vrLoc = 2667; }; - 8B4E5400201BA1BA00B5DC2A /* PBXTextBookmark */ = { + 8B181B43204CA16500516BEE /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* GrooveWear.h */; name = "GrooveWear.h: 135"; rLen = 0; rLoc = 5282; rType = 0; - vrLen = 272; - vrLoc = 2923; + vrLen = 217; + vrLoc = 2978; }; - 8B4E5435201BA7FC00B5DC2A /* PBXTextBookmark */ = { + 8B792CBD21F42257006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* GrooveWear.h */; - name = "GrooveWear.h: 135"; - rLen = 0; - rLoc = 5282; + fRef = 8BA05A660720730100365D66 /* GrooveWear.cpp */; + name = "GrooveWear.cpp: 336"; + rLen = 90; + rLoc = 15454; + rType = 0; + vrLen = 324; + vrLoc = 15544; + }; + 8B792CC221F422B5006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* GrooveWear.cpp */; + name = "GrooveWear.cpp: 336"; + rLen = 90; + rLoc = 15454; rType = 0; - vrLen = 271; - vrLoc = 2924; + vrLen = 324; + vrLoc = 15544; }; 8BA05A660720730100365D66 /* GrooveWear.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 6123}}"; - sepNavSelRange = "{15606, 90}"; - sepNavVisRange = "{13375, 2804}"; - sepNavWindowFrame = "{{532, 39}, {895, 839}}"; + sepNavIntBoundsRect = "{{0, 0}, {677, 6058}}"; + sepNavSelRange = "{15454, 90}"; + sepNavVisRange = "{15544, 324}"; + sepNavWindowFrame = "{{413, 39}, {895, 839}}"; }; }; 8BA05A690720730100365D66 /* GrooveWearVersion.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {824, 767}}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 767}}"; sepNavSelRange = "{2897, 0}"; - sepNavVisRange = "{2667, 297}"; - sepNavWindowFrame = "{{15, 39}, {895, 839}}"; + sepNavVisRange = "{50, 2915}"; + sepNavWindowFrame = "{{593, 37}, {895, 839}}"; }; }; 8BC6025B073B072D006C4272 /* GrooveWear.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {761, 2275}}"; - sepNavSelRange = "{5282, 0}"; - sepNavVisRange = "{2924, 271}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 1898}}"; + sepNavSelRange = "{5410, 0}"; + sepNavVisRange = "{4014, 1506}"; sepNavWindowFrame = "{{542, 39}, {895, 839}}"; }; }; diff --git a/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.perspectivev3 index a0182a0..3db790a 100644..100755 --- a/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -302,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>4</integer> + <integer>3</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> @@ -326,7 +324,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>603 113 841 654 0 0 1440 878 </string> + <string>442 219 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -342,7 +340,7 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274A1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>GrooveWear.h</string> + <string>GrooveWear.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -350,16 +348,17 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274B1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>GrooveWear.h</string> + <string>GrooveWear.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B4E5435201BA7FC00B5DC2A</string> + <string>8B792CC221F422B5006E9731</string> <key>history</key> <array> <string>8B0E2BD7201B927800943268</string> <string>8B0E2BD8201B927800943268</string> - <string>8B4E5400201BA1BA00B5DC2A</string> + <string>8B181B43204CA16500516BEE</string> + <string>8B792CBD21F42257006E9731</string> </array> </dict> <key>SplitCount</key> @@ -373,18 +372,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 142}}</string> + <string>{{0, 0}, {531, 109}}</string> <key>RubberWindowFrame</key> - <string>603 113 841 654 0 0 1440 878 </string> + <string>442 219 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>142pt</string> + <string>109pt</string> </dict> <dict> <key>Proportion</key> - <string>466pt</string> + <string>499pt</string> <key>Tabs</key> <array> <dict> @@ -398,9 +397,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 439}}</string> - <key>RubberWindowFrame</key> - <string>603 113 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 472}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -454,7 +451,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 365}}</string> + <string>{{10, 27}, {531, 472}}</string> + <key>RubberWindowFrame</key> + <string>442 219 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -482,11 +481,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B4E540C201BA27000B5DC2A</string> + <string>8B792CC321F422B5006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B4E540D201BA27000B5DC2A</string> + <string>8B792CC421F422B5006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B4E540E201BA27000B5DC2A</string> + <string>8B792CC521F422B5006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -659,7 +658,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>538683388.29162097</real> + <real>569647797.66937697</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -679,7 +678,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/GrooveWear/GrooveWear.xcodeproj</string> </array> <key>WindowString</key> - <string>603 113 841 654 0 0 1440 878 </string> + <string>442 219 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/project.pbxproj b/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/project.pbxproj index 06d3db0..06d3db0 100644..100755 --- a/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/project.pbxproj +++ b/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/project.pbxproj diff --git a/plugins/MacAU/GuitarConditioner/GuitarConditioner.cpp b/plugins/MacAU/GuitarConditioner/GuitarConditioner.cpp index 232fd21..d3d23e6 100755 --- a/plugins/MacAU/GuitarConditioner/GuitarConditioner.cpp +++ b/plugins/MacAU/GuitarConditioner/GuitarConditioner.cpp @@ -150,8 +150,7 @@ ComponentResult GuitarConditioner::Initialize() //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void GuitarConditioner::GuitarConditionerKernel::Reset() { - fpNShapeA = 0.0; - fpNShapeB = 0.0; + fpNShape = 0.0; fpFlip = true; lastSampleT = 0.0; lastSampleB = 0.0; //for Slews. T for treble, B for bass @@ -176,9 +175,6 @@ void GuitarConditioner::GuitarConditionerKernel::Process( const Float32 *inSou long double overallscale = 1.0; overallscale /= 44100.0; overallscale *= GetSampleRate(); - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSample; long double treble; long double bass; @@ -264,21 +260,14 @@ void GuitarConditioner::GuitarConditionerKernel::Process( const Float32 *inSou lastSampleB = bass; //bass slew inputSample = treble + bass; //final merge + fpFlip = !fpFlip; + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = not fpFlip; - //end noise shaping on 32 bit output *destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; } diff --git a/plugins/MacAU/GuitarConditioner/GuitarConditioner.h b/plugins/MacAU/GuitarConditioner/GuitarConditioner.h index 834905f..4ad6669 100755 --- a/plugins/MacAU/GuitarConditioner/GuitarConditioner.h +++ b/plugins/MacAU/GuitarConditioner/GuitarConditioner.h @@ -121,8 +121,7 @@ public: virtual void Reset(); private: - long double fpNShapeA; - long double fpNShapeB; + long double fpNShape; bool fpFlip; Float64 lastSampleT; Float64 lastSampleB; //for Slews diff --git a/plugins/MacAU/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.pbxuser index 27ab557..34d863a 100755 --- a/plugins/MacAU/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.pbxuser @@ -49,14 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528456379; - PBXWorkspaceStateSaveDate = 528456379; + PBXPerProjectTemplateStateSaveDate = 569648041; + PBXWorkspaceStateSaveDate = 569648041; }; perUserProjectItems = { 8B3BE93A1D667DD60098F86C /* PBXTextBookmark */ = 8B3BE93A1D667DD60098F86C /* PBXTextBookmark */; 8B3BE93B1D667DD60098F86C /* PBXTextBookmark */ = 8B3BE93B1D667DD60098F86C /* PBXTextBookmark */; - 8B9D64EE1F7C8859007AB60F /* PBXTextBookmark */ = 8B9D64EE1F7C8859007AB60F /* PBXTextBookmark */; - 8B9D74491F7F9ACF007AB60F /* PBXTextBookmark */ = 8B9D74491F7F9ACF007AB60F /* PBXTextBookmark */; + 8B792CD321F42407006E9731 /* PBXTextBookmark */ = 8B792CD321F42407006E9731 /* PBXTextBookmark */; + 8B792CD921F42423006E9731 /* PBXTextBookmark */ = 8B792CD921F42423006E9731 /* PBXTextBookmark */; 8BC032BB1D6667CB0039F36E /* PlistBookmark */ = 8BC032BB1D6667CB0039F36E /* PlistBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; @@ -68,7 +68,7 @@ fRef = 8BC6025B073B072D006C4272 /* GuitarConditioner.h */; name = "GuitarConditioner.h: 126"; rLen = 0; - rLoc = 5114; + rLoc = 5088; rType = 0; vrLen = 474; vrLoc = 4808; @@ -83,32 +83,32 @@ vrLen = 405; vrLoc = 2608; }; - 8B9D64EE1F7C8859007AB60F /* PBXTextBookmark */ = { + 8B792CD321F42407006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* GuitarConditioner.cpp */; - name = "GuitarConditioner.cpp: 281"; + name = "GuitarConditioner.cpp: 274"; rLen = 0; - rLoc = 11852; + rLoc = 11616; rType = 0; - vrLen = 523; - vrLoc = 10536; + vrLen = 476; + vrLoc = 10604; }; - 8B9D74491F7F9ACF007AB60F /* PBXTextBookmark */ = { + 8B792CD921F42423006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* GuitarConditioner.cpp */; - name = "GuitarConditioner.cpp: 281"; + name = "GuitarConditioner.cpp: 271"; rLen = 0; - rLoc = 11852; + rLoc = 11616; rType = 0; - vrLen = 502; - vrLoc = 10557; + vrLen = 485; + vrLoc = 10548; }; 8BA05A660720730100365D66 /* GuitarConditioner.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {733, 3913}}"; - sepNavSelRange = "{11852, 0}"; - sepNavVisRange = "{10557, 502}"; - sepNavWindowFrame = "{{639, 40}, {801, 838}}"; + sepNavIntBoundsRect = "{{0, 0}, {733, 3744}}"; + sepNavSelRange = "{11616, 0}"; + sepNavVisRange = "{10548, 485}"; + sepNavWindowFrame = "{{377, 40}, {801, 838}}"; }; }; 8BA05A690720730100365D66 /* GuitarConditionerVersion.h */ = { @@ -133,10 +133,10 @@ }; 8BC6025B073B072D006C4272 /* GuitarConditioner.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1833}}"; - sepNavSelRange = "{5115, 167}"; - sepNavVisRange = "{3840, 1555}"; - sepNavWindowFrame = "{{684, 40}, {801, 838}}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 1820}}"; + sepNavSelRange = "{5073, 0}"; + sepNavVisRange = "{3804, 1565}"; + sepNavWindowFrame = "{{458, 40}, {801, 838}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.perspectivev3 index 9e238ca..1f67dae 100755 --- a/plugins/MacAU/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>810</integer> - <integer>810</integer> + <integer>841</integer> + <integer>841</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -325,7 +323,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>598 208 841 654 0 0 1440 878 </string> + <string>455 207 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -353,13 +351,13 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D74491F7F9ACF007AB60F</string> + <string>8B792CD921F42423006E9731</string> <key>history</key> <array> <string>8BC032BB1D6667CB0039F36E</string> <string>8B3BE93A1D667DD60098F86C</string> <string>8B3BE93B1D667DD60098F86C</string> - <string>8B9D64EE1F7C8859007AB60F</string> + <string>8B792CD321F42407006E9731</string> </array> </dict> <key>SplitCount</key> @@ -373,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 216}}</string> + <string>{{0, 0}, {531, 202}}</string> <key>RubberWindowFrame</key> - <string>598 208 841 654 0 0 1440 878 </string> + <string>455 207 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>216pt</string> + <string>202pt</string> </dict> <dict> <key>Proportion</key> - <string>392pt</string> + <string>406pt</string> <key>Tabs</key> <array> <dict> @@ -398,9 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 365}}</string> - <key>RubberWindowFrame</key> - <string>598 208 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 379}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -454,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {531, 379}}</string> + <key>RubberWindowFrame</key> + <string>455 207 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -482,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D744A1F7F9ACF007AB60F</string> + <string>8B792CDA21F42423006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D744B1F7F9ACF007AB60F</string> + <string>8B792CDB21F42423006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D744C1F7F9ACF007AB60F</string> + <string>8B792CDC21F42423006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -659,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528456399.548949</real> + <real>569648163.99752402</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -676,11 +674,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D744D1F7F9ACF007AB60F</string> + <string>8B792CDD21F42424006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/GuitarConditioner/GuitarConditioner.xcodeproj</string> </array> <key>WindowString</key> - <string>598 208 841 654 0 0 1440 878 </string> + <string>455 207 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/HardVacuum/HardVacuum.cpp b/plugins/MacAU/HardVacuum/HardVacuum.cpp index 15bb5ec..d652431 100755 --- a/plugins/MacAU/HardVacuum/HardVacuum.cpp +++ b/plugins/MacAU/HardVacuum/HardVacuum.cpp @@ -191,9 +191,7 @@ ComponentResult HardVacuum::Initialize() void HardVacuum::HardVacuumKernel::Reset() { lastSample = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -226,9 +224,6 @@ void HardVacuum::HardVacuumKernel::Process( const Float32 *inSourceP, Float64 skew; long double inputSample; Float64 drySample; - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; while (nSampleFrames-- > 0) { inputSample = *sourceP; @@ -319,19 +314,11 @@ void HardVacuum::HardVacuumKernel::Process( const Float32 *inSourceP, inputSample = (inputSample * wet) + (drySample * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/HardVacuum/HardVacuum.h b/plugins/MacAU/HardVacuum/HardVacuum.h index ad9518d..b5b4116 100755 --- a/plugins/MacAU/HardVacuum/HardVacuum.h +++ b/plugins/MacAU/HardVacuum/HardVacuum.h @@ -139,9 +139,7 @@ public: private: Float64 lastSample; - Float64 fpNShapeA; - Float64 fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.pbxuser index a26a4bf..35ae242 100755 --- a/plugins/MacAU/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.pbxuser @@ -49,43 +49,43 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 541823423; - PBXWorkspaceStateSaveDate = 541823423; + PBXPerProjectTemplateStateSaveDate = 569648475; + PBXWorkspaceStateSaveDate = 569648475; }; perUserProjectItems = { - 8B1819FB204B936300516BEE /* PBXTextBookmark */ = 8B1819FB204B936300516BEE /* PBXTextBookmark */; - 8B181A0D204B961F00516BEE /* PBXTextBookmark */ = 8B181A0D204B961F00516BEE /* PBXTextBookmark */; + 8B792CEB21F425BC006E9731 /* PBXTextBookmark */ = 8B792CEB21F425BC006E9731 /* PBXTextBookmark */; + 8B792CF121F425DC006E9731 /* PBXTextBookmark */ = 8B792CF121F425DC006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B1819FB204B936300516BEE /* PBXTextBookmark */ = { + 8B792CEB21F425BC006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* HardVacuum.h */; name = "HardVacuum.h: 61"; rLen = 0; rLoc = 3064; rType = 0; - vrLen = 334; + vrLen = 296; vrLoc = 4037; }; - 8B181A0D204B961F00516BEE /* PBXTextBookmark */ = { + 8B792CF121F425DC006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* HardVacuum.h */; name = "HardVacuum.h: 61"; rLen = 0; rLoc = 3064; rType = 0; - vrLen = 334; + vrLen = 296; vrLoc = 4037; }; 8BA05A660720730100365D66 /* HardVacuum.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1098, 4758}}"; - sepNavSelRange = "{13965, 0}"; - sepNavVisRange = "{12718, 1710}"; - sepNavWindowFrame = "{{639, 60}, {1145, 812}}"; + sepNavIntBoundsRect = "{{0, 0}, {1098, 4303}}"; + sepNavSelRange = "{10378, 0}"; + sepNavVisRange = "{9068, 2247}"; + sepNavWindowFrame = "{{157, 66}, {1145, 812}}"; }; }; 8BA05A670720730100365D66 /* HardVacuum.exp */ = { @@ -106,10 +106,10 @@ }; 8BC6025B073B072D006C4272 /* HardVacuum.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {803, 2288}}"; + sepNavIntBoundsRect = "{{0, 0}, {698, 1989}}"; sepNavSelRange = "{3064, 0}"; - sepNavVisRange = "{4037, 334}"; - sepNavWindowFrame = "{{798, 44}, {816, 832}}"; + sepNavVisRange = "{4037, 296}"; + sepNavWindowFrame = "{{624, 44}, {816, 832}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.perspectivev3 index ee4a326..447f391 100755 --- a/plugins/MacAU/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>5</integer> + <integer>4</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> @@ -324,7 +324,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>627 370 810 487 0 0 1440 878 </string> + <string>501 353 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,10 +352,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B181A0D204B961F00516BEE</string> + <string>8B792CF121F425DC006E9731</string> <key>history</key> <array> - <string>8B1819FB204B936300516BEE</string> + <string>8B792CEB21F425BC006E9731</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 132}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> - <string>627 370 810 487 0 0 1440 878 </string> + <string>501 353 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -394,7 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {603, 297}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -448,9 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {603, 297}}</string> <key>RubberWindowFrame</key> - <string>627 370 810 487 0 0 1440 878 </string> + <string>501 353 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -478,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B181A0E204B961F00516BEE</string> + <string>8B792CF221F425DC006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B181A0F204B961F00516BEE</string> + <string>8B792CF321F425DC006E9731</string> <string>8BCA6FBD2027E68400D92BAD</string> - <string>8B181A10204B961F00516BEE</string> + <string>8B792CF421F425DC006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>541824543.72034597</real> + <real>569648604.79217398</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,11 +652,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B181A11204B961F00516BEE</string> + <string>8B792CF521F425DC006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/HardVacuum/HardVacuum.xcodeproj</string> </array> <key>WindowString</key> - <string>627 370 810 487 0 0 1440 878 </string> + <string>501 353 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/HermeTrim/HermeTrim.cpp b/plugins/MacAU/HermeTrim/HermeTrim.cpp index 9964961..d66c78c 100755 --- a/plugins/MacAU/HermeTrim/HermeTrim.cpp +++ b/plugins/MacAU/HermeTrim/HermeTrim.cpp @@ -203,11 +203,8 @@ ComponentResult HermeTrim::Initialize() // this is called the reset the DSP state (clear buffers, reset counters, etc.) ComponentResult HermeTrim::Reset(AudioUnitScope inScope, AudioUnitElement inElement) { - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; return noErr; } @@ -226,11 +223,7 @@ OSStatus HermeTrim::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla Float32 * outputL = (Float32*)(outBuffer.mBuffers[0].mData); Float32 * outputR = (Float32*)(outBuffer.mBuffers[1].mData); UInt32 nSampleFrames = inFramesToProcess; - - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + long double inputSampleL; long double inputSampleR; long double mid; @@ -296,25 +289,14 @@ OSStatus HermeTrim::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla inputSampleR = (mid-side) * rightgain; //contains mastergain and the gain trim fixing the mid/side - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((Float32)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *outputL = inputSampleL; *outputR = inputSampleR; diff --git a/plugins/MacAU/HermeTrim/HermeTrim.h b/plugins/MacAU/HermeTrim/HermeTrim.h index 15b9053..28ed599 100755 --- a/plugins/MacAU/HermeTrim/HermeTrim.h +++ b/plugins/MacAU/HermeTrim/HermeTrim.h @@ -121,11 +121,8 @@ public: virtual ComponentResult Version() { return kHermeTrimVersion; } private: - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff }; diff --git a/plugins/MacAU/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.pbxuser index 7bf93ba..f32d1ce 100755 --- a/plugins/MacAU/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.pbxuser @@ -49,23 +49,43 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 532472000; - PBXWorkspaceStateSaveDate = 532472000; + PBXPerProjectTemplateStateSaveDate = 569648812; + PBXWorkspaceStateSaveDate = 569648812; }; perUserProjectItems = { - 8BB5DCFB1FBCDFA9008B4570 /* PBXTextBookmark */ = 8BB5DCFB1FBCDFA9008B4570 /* PBXTextBookmark */; - 8BB5DD3E1FBCE0D8008B4570 /* PBXTextBookmark */ = 8BB5DD3E1FBCE0D8008B4570 /* PBXTextBookmark */; + 8B792D2821F42723006E9731 /* PBXTextBookmark */ = 8B792D2821F42723006E9731 /* PBXTextBookmark */; + 8B792D2D21F42744006E9731 /* PBXTextBookmark */ = 8B792D2D21F42744006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B792D2821F42723006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* HermeTrim.cpp */; + name = "HermeTrim.cpp: 207"; + rLen = 0; + rLoc = 9408; + rType = 0; + vrLen = 66; + vrLoc = 68; + }; + 8B792D2D21F42744006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* HermeTrim.cpp */; + name = "HermeTrim.cpp: 207"; + rLen = 0; + rLoc = 9408; + rType = 0; + vrLen = 66; + vrLoc = 68; + }; 8BA05A660720730100365D66 /* HermeTrim.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {803, 4368}}"; - sepNavSelRange = "{9429, 0}"; - sepNavVisRange = "{65, 69}"; - sepNavWindowFrame = "{{370, 62}, {1070, 811}}"; + sepNavIntBoundsRect = "{{0, 0}, {803, 4225}}"; + sepNavSelRange = "{9408, 0}"; + sepNavVisRange = "{68, 66}"; + sepNavWindowFrame = "{{185, 67}, {1070, 811}}"; }; }; 8BA05A670720730100365D66 /* HermeTrim.exp */ = { @@ -84,31 +104,11 @@ sepNavWindowFrame = "{{419, 39}, {1024, 839}}"; }; }; - 8BB5DCFB1FBCDFA9008B4570 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* HermeTrim.cpp */; - name = "HermeTrim.cpp: 208"; - rLen = 0; - rLoc = 9429; - rType = 0; - vrLen = 90; - vrLoc = 44; - }; - 8BB5DD3E1FBCE0D8008B4570 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* HermeTrim.cpp */; - name = "HermeTrim.cpp: 208"; - rLen = 0; - rLoc = 9429; - rType = 0; - vrLen = 69; - vrLoc = 65; - }; 8BC6025B073B072D006C4272 /* HermeTrim.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1023, 1768}}"; - sepNavSelRange = "{5173, 131}"; - sepNavVisRange = "{1538, 1957}"; + sepNavIntBoundsRect = "{{0, 0}, {1023, 1729}}"; + sepNavSelRange = "{5221, 0}"; + sepNavVisRange = "{3560, 1785}"; sepNavWindowFrame = "{{370, 67}, {1070, 811}}"; }; }; diff --git a/plugins/MacAU/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.perspectivev3 index c7490f3..a1c5be6 100755 --- a/plugins/MacAU/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>810</integer> + <integer>810</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -301,7 +299,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>7</integer> + <integer>4</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> @@ -325,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>610 324 810 487 0 0 1440 878 </string> + <string>483 338 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -353,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BB5DD3E1FBCE0D8008B4570</string> + <string>8B792D2D21F42744006E9731</string> <key>history</key> <array> - <string>8BB5DCFB1FBCDFA9008B4570</string> + <string>8B792D2821F42723006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 69}}</string> + <string>{{0, 0}, {603, 51}}</string> <key>RubberWindowFrame</key> - <string>610 324 810 487 0 0 1440 878 </string> + <string>483 338 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>69pt</string> + <string>51pt</string> </dict> <dict> <key>Proportion</key> - <string>372pt</string> + <string>390pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 345}}</string> - <key>RubberWindowFrame</key> - <string>610 324 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 363}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {603, 363}}</string> + <key>RubberWindowFrame</key> + <string>483 338 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BB5DD3F1FBCE0D8008B4570</string> + <string>8B792D2E21F42744006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BB5DD401FBCE0D8008B4570</string> + <string>8B792D2F21F42744006E9731</string> <string>8B753E6F1E40231800347157</string> - <string>8BB5DD411FBCE0D8008B4570</string> + <string>8B792D3021F42744006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>532472024.21283603</real> + <real>569648964.14450204</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,11 +651,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BB5DD421FBCE0D8008B4570</string> <string>/Users/christopherjohnson/Desktop/MacAU/HermeTrim/HermeTrim.xcodeproj</string> </array> <key>WindowString</key> - <string>610 324 810 487 0 0 1440 878 </string> + <string>483 338 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Hermepass/Hermepass.cpp b/plugins/MacAU/Hermepass/Hermepass.cpp index 8c8da5d..c969719 100755 --- a/plugins/MacAU/Hermepass/Hermepass.cpp +++ b/plugins/MacAU/Hermepass/Hermepass.cpp @@ -174,8 +174,7 @@ void Hermepass::HermepassKernel::Reset() iirF = 0.0; iirG = 0.0; iirH = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; + fpNShape = 0.0; fpFlip = true; } @@ -194,10 +193,9 @@ void Hermepass::HermepassKernel::Process( const Float32 *inSourceP, long double overallscale = 1.0; overallscale /= 44100.0; overallscale *= GetSampleRate(); - Float32 fpTemp; long double fpOld = 0.618033988749894848204586; //golden ratio! long double fpNew = 1.0 - fpOld; - + Float64 rangescale = 0.1 / overallscale; Float64 cutoff = pow(GetParameter( kParam_One ),3); @@ -301,20 +299,13 @@ void Hermepass::HermepassKernel::Process( const Float32 *inSourceP, //with everything an array value. However, this makes just as much sense for this few poles. inputSample -= correction; - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/Hermepass/Hermepass.h b/plugins/MacAU/Hermepass/Hermepass.h index 24cfb07..3483edc 100755 --- a/plugins/MacAU/Hermepass/Hermepass.h +++ b/plugins/MacAU/Hermepass/Hermepass.h @@ -139,8 +139,7 @@ public: Float64 iirH; //seven poles max, and the final pole is always at 20hz directly. - long double fpNShapeA; - long double fpNShapeB; + long double fpNShape; bool fpFlip; }; }; diff --git a/plugins/MacAU/Hermepass/Hermepass.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Hermepass/Hermepass.xcodeproj/christopherjohnson.pbxuser index b85e0a0..7dff583 100755 --- a/plugins/MacAU/Hermepass/Hermepass.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Hermepass/Hermepass.xcodeproj/christopherjohnson.pbxuser @@ -3,6 +3,8 @@ 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; activeTarget = 8D01CCC60486CAD60068D4B7 /* Hermepass */; + breakpoints = ( + ); codeSenseManager = 8BD3CCB9148830B20062E48C /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,18 +51,18 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528456409; - PBXWorkspaceStateSaveDate = 528456409; + PBXPerProjectTemplateStateSaveDate = 569648641; + PBXWorkspaceStateSaveDate = 569648641; }; perUserProjectItems = { - 8B9D64FF1F7C889C007AB60F /* PlistBookmark */ = 8B9D64FF1F7C889C007AB60F /* PlistBookmark */; - 8B9D74581F7F9AF1007AB60F /* PlistBookmark */ = 8B9D74581F7F9AF1007AB60F /* PlistBookmark */; + 8B792D0521F4265D006E9731 /* PlistBookmark */ = 8B792D0521F4265D006E9731 /* PlistBookmark */; + 8B792D1021F42698006E9731 /* PlistBookmark */ = 8B792D1021F42698006E9731 /* PlistBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B9D64FF1F7C889C007AB60F /* PlistBookmark */ = { + 8B792D0521F4265D006E9731 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; fallbackIsa = PBXBookmark; @@ -70,9 +72,9 @@ ); name = /Users/christopherjohnson/Desktop/MacAU/Hermepass/Info.plist; rLen = 0; - rLoc = 9223372036854775808; + rLoc = 9223372036854775807; }; - 8B9D74581F7F9AF1007AB60F /* PlistBookmark */ = { + 8B792D1021F42698006E9731 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; fallbackIsa = PBXBookmark; @@ -86,10 +88,10 @@ }; 8BA05A660720730100365D66 /* Hermepass.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1006, 4407}}"; - sepNavSelRange = "{10576, 0}"; - sepNavVisRange = "{9818, 2810}"; - sepNavWindowFrame = "{{387, 39}, {1053, 839}}"; + sepNavIntBoundsRect = "{{0, 0}, {1006, 4342}}"; + sepNavSelRange = "{8578, 0}"; + sepNavVisRange = "{7759, 2039}"; + sepNavWindowFrame = "{{235, 39}, {1053, 839}}"; }; }; 8BA05A690720730100365D66 /* HermepassVersion.h */ = { @@ -102,9 +104,9 @@ }; 8BC6025B073B072D006C4272 /* Hermepass.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1006, 1833}}"; - sepNavSelRange = "{1818, 0}"; - sepNavVisRange = "{651, 2568}"; + sepNavIntBoundsRect = "{{0, 0}, {1006, 1937}}"; + sepNavSelRange = "{5697, 0}"; + sepNavVisRange = "{4041, 1775}"; sepNavWindowFrame = "{{387, 39}, {1053, 839}}"; }; }; diff --git a/plugins/MacAU/Hermepass/Hermepass.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Hermepass/Hermepass.xcodeproj/christopherjohnson.perspectivev3 index a56662d..db59c0b 100755 --- a/plugins/MacAU/Hermepass/Hermepass.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Hermepass/Hermepass.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -325,7 +323,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>599 176 841 654 0 0 1440 878 </string> + <string>471 176 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -353,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D74581F7F9AF1007AB60F</string> + <string>8B792D1021F42698006E9731</string> <key>history</key> <array> - <string>8B9D64FF1F7C889C007AB60F</string> + <string>8B792D0521F4265D006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 202}}</string> + <string>{{0, 0}, {531, 188}}</string> <key>RubberWindowFrame</key> - <string>599 176 841 654 0 0 1440 878 </string> + <string>471 176 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>202pt</string> + <string>188pt</string> </dict> <dict> <key>Proportion</key> - <string>406pt</string> + <string>420pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 379}}</string> - <key>RubberWindowFrame</key> - <string>599 176 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 393}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 315}}</string> + <string>{{10, 27}, {531, 393}}</string> + <key>RubberWindowFrame</key> + <string>471 176 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D74591F7F9AF1007AB60F</string> + <string>8B792D1121F42698006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D745A1F7F9AF1007AB60F</string> + <string>8B792D1221F42698006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D745B1F7F9AF1007AB60F</string> + <string>8B792D1321F42698006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -534,12 +532,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>0pt</string> + <string>270pt</string> </dict> <dict> <key>ContentConfiguration</key> @@ -632,14 +630,14 @@ </array> <key>TableOfContents</key> <array> - <string>8BD727EC1D46ECF1000176F0</string> + <string>8B792D1421F42698006E9731</string> <string>1CCC7628064C1048000F2A68</string> <string>1CCC7629064C1048000F2A68</string> - <string>8BD727ED1D46ECF1000176F0</string> - <string>8BD727EE1D46ECF1000176F0</string> - <string>8BD727EF1D46ECF1000176F0</string> - <string>8BD727F01D46ECF1000176F0</string> - <string>8BD727E71D46ECD9000176F0</string> + <string>8B792D1521F42698006E9731</string> + <string>8B792D1621F42698006E9731</string> + <string>8B792D1721F42698006E9731</string> + <string>8B792D1821F42698006E9731</string> + <string>8B792D1921F42698006E9731</string> </array> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> @@ -656,7 +654,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528456433.21989697</real> + <real>569648792.66830301</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -673,11 +671,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D745C1F7F9AF1007AB60F</string> + <string>8B792D1A21F42698006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/Hermepass/Hermepass.xcodeproj</string> </array> <key>WindowString</key> - <string>599 176 841 654 0 0 1440 878 </string> + <string>471 176 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/HighGlossDither/HighGlossDither.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/HighGlossDither/HighGlossDither.xcodeproj/christopherjohnson.pbxuser index c23f043..1e583b1 100755 --- a/plugins/MacAU/HighGlossDither/HighGlossDither.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/HighGlossDither/HighGlossDither.xcodeproj/christopherjohnson.pbxuser @@ -49,11 +49,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528456443; - PBXWorkspaceStateSaveDate = 528456443; + PBXPerProjectTemplateStateSaveDate = 569648994; + PBXWorkspaceStateSaveDate = 569648994; }; perUserProjectItems = { - 8B9D65101F7C88C6007AB60F /* PBXTextBookmark */ = 8B9D65101F7C88C6007AB60F /* PBXTextBookmark */; + 8B792D3921F4276D006E9731 /* PBXTextBookmark */ = 8B792D3921F4276D006E9731 /* PBXTextBookmark */; 8B9D74691F7F9B39007AB60F /* PBXTextBookmark */ = 8B9D74691F7F9B39007AB60F /* PBXTextBookmark */; 8B9E7FA51DDE554B006035FA /* PlistBookmark */ = 8B9E7FA51DDE554B006035FA /* PlistBookmark */; }; @@ -61,14 +61,14 @@ userBuildSettings = { }; }; - 8B9D65101F7C88C6007AB60F /* PBXTextBookmark */ = { + 8B792D3921F4276D006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* HighGlossDither.h */; name = "HighGlossDither.h: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 443; + vrLen = 243; vrLoc = 0; }; 8B9D74691F7F9B39007AB60F /* PBXTextBookmark */ = { @@ -95,9 +95,9 @@ }; 8BA05A660720730100365D66 /* HighGlossDither.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {726, 3133}}"; + sepNavIntBoundsRect = "{{0, 0}, {726, 3224}}"; sepNavSelRange = "{7750, 0}"; - sepNavVisRange = "{6612, 2521}"; + sepNavVisRange = "{7830, 2063}"; sepNavWindowFrame = "{{728, 43}, {679, 835}}"; }; }; @@ -111,9 +111,9 @@ }; 8BC6025B073B072D006C4272 /* HighGlossDither.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {803, 1729}}"; + sepNavIntBoundsRect = "{{0, 0}, {803, 1742}}"; sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 346}"; + sepNavVisRange = "{0, 243}"; sepNavWindowFrame = "{{742, 43}, {679, 835}}"; }; }; diff --git a/plugins/MacAU/HighGlossDither/HighGlossDither.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/HighGlossDither/HighGlossDither.xcodeproj/christopherjohnson.perspectivev3 index 2c6537c..aaa67ee 100755 --- a/plugins/MacAU/HighGlossDither/HighGlossDither.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/HighGlossDither/HighGlossDither.xcodeproj/christopherjohnson.perspectivev3 @@ -353,11 +353,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D74691F7F9B39007AB60F</string> + <string>8B792D3921F4276D006E9731</string> <key>history</key> <array> <string>8B9E7FA51DDE554B006035FA</string> - <string>8B9D65101F7C88C6007AB60F</string> + <string>8B9D74691F7F9B39007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 173}}</string> + <string>{{0, 0}, {531, 158}}</string> <key>RubberWindowFrame</key> <string>599 149 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>173pt</string> + <string>158pt</string> </dict> <dict> <key>Proportion</key> - <string>435pt</string> + <string>450pt</string> <key>Tabs</key> <array> <dict> @@ -396,7 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 408}}</string> + <string>{{10, 27}, {531, 423}}</string> <key>RubberWindowFrame</key> <string>599 149 841 654 0 0 1440 878 </string> </dict> @@ -480,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D746A1F7F9B39007AB60F</string> + <string>8B792D3A21F4276D006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D746B1F7F9B39007AB60F</string> + <string>8B792D3B21F4276D006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D746C1F7F9B39007AB60F</string> + <string>8B792D3C21F4276D006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -657,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528456505.919761</real> + <real>569649005.97733605</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -674,7 +674,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D746D1F7F9B39007AB60F</string> + <string>8B792D3D21F4276D006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/HighGlossDither/HighGlossDither.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacAU/HighImpact/HighImpact.cpp b/plugins/MacAU/HighImpact/HighImpact.cpp index 91cbd6a..43ca1f5 100755 --- a/plugins/MacAU/HighImpact/HighImpact.cpp +++ b/plugins/MacAU/HighImpact/HighImpact.cpp @@ -175,9 +175,7 @@ ComponentResult HighImpact::Initialize() void HighImpact::HighImpactKernel::Reset() { lastSample = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -201,11 +199,7 @@ void HighImpact::HighImpactKernel::Process( const Float32 *inSourceP, Float64 drySample; Float64 output = GetParameter( kParam_Two ); Float64 wet = GetParameter( kParam_Three ); - Float64 dry = 1.0-wet; - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; - + Float64 dry = 1.0-wet; Float64 clamp; Float64 threshold = (1.25 - out); @@ -279,19 +273,11 @@ void HighImpact::HighImpactKernel::Process( const Float32 *inSourceP, //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; diff --git a/plugins/MacAU/HighImpact/HighImpact.h b/plugins/MacAU/HighImpact/HighImpact.h index 1778590..4315822 100755 --- a/plugins/MacAU/HighImpact/HighImpact.h +++ b/plugins/MacAU/HighImpact/HighImpact.h @@ -134,9 +134,7 @@ public: private: Float64 lastSample; - Float64 fpNShapeA; - Float64 fpNShapeB; - bool fpFlip; + Float64 fpNShape; }; }; diff --git a/plugins/MacAU/HighImpact/HighImpact.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/HighImpact/HighImpact.xcodeproj/christopherjohnson.pbxuser index 95f75f7..a4ea24e 100755 --- a/plugins/MacAU/HighImpact/HighImpact.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/HighImpact/HighImpact.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528456515; - PBXWorkspaceStateSaveDate = 528456515; + PBXPerProjectTemplateStateSaveDate = 569649013; + PBXWorkspaceStateSaveDate = 569649013; }; perUserProjectItems = { - 8B9D65211F7C8934007AB60F /* PBXTextBookmark */ = 8B9D65211F7C8934007AB60F /* PBXTextBookmark */; - 8B9D74781F7F9B7D007AB60F /* PBXTextBookmark */ = 8B9D74781F7F9B7D007AB60F /* PBXTextBookmark */; + 8B792D4B21F427D4006E9731 /* PBXTextBookmark */ = 8B792D4B21F427D4006E9731 /* PBXTextBookmark */; + 8B792D5021F427E4006E9731 /* PBXTextBookmark */ = 8B792D5021F427E4006E9731 /* PBXTextBookmark */; 8BD4F5C21E6E137800288155 /* PBXTextBookmark */ = 8BD4F5C21E6E137800288155 /* PBXTextBookmark */; 8BD4F5C31E6E137800288155 /* PBXTextBookmark */ = 8BD4F5C31E6E137800288155 /* PBXTextBookmark */; }; @@ -62,32 +62,32 @@ userBuildSettings = { }; }; - 8B9D65211F7C8934007AB60F /* PBXTextBookmark */ = { + 8B792D4B21F427D4006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* HighImpact.cpp */; - name = "HighImpact.cpp: 201"; + name = "HighImpact.cpp: 199"; rLen = 0; - rLoc = 9245; + rLoc = 9210; rType = 0; - vrLen = 504; - vrLoc = 7848; + vrLen = 584; + vrLoc = 7867; }; - 8B9D74781F7F9B7D007AB60F /* PBXTextBookmark */ = { + 8B792D5021F427E4006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* HighImpact.cpp */; - name = "HighImpact.cpp: 201"; + name = "HighImpact.cpp: 199"; rLen = 0; - rLoc = 9245; + rLoc = 9210; rType = 0; - vrLen = 485; + vrLen = 584; vrLoc = 7867; }; 8BA05A660720730100365D66 /* HighImpact.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {670, 3978}}"; - sepNavSelRange = "{9245, 0}"; - sepNavVisRange = "{7867, 485}"; - sepNavWindowFrame = "{{283, 58}, {1145, 812}}"; + sepNavIntBoundsRect = "{{0, 0}, {670, 3887}}"; + sepNavSelRange = "{9210, 0}"; + sepNavVisRange = "{7867, 584}"; + sepNavWindowFrame = "{{178, 66}, {1145, 812}}"; }; }; 8BA05A670720730100365D66 /* HighImpact.exp */ = { @@ -107,9 +107,9 @@ }; 8BC6025B073B072D006C4272 /* HighImpact.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {824, 1898}}"; - sepNavSelRange = "{5304, 0}"; - sepNavVisRange = "{2715, 570}"; + sepNavIntBoundsRect = "{{0, 0}, {876, 1859}}"; + sepNavSelRange = "{5347, 0}"; + sepNavVisRange = "{3845, 1610}"; sepNavWindowFrame = "{{15, 39}, {923, 837}}"; }; }; diff --git a/plugins/MacAU/HighImpact/HighImpact.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/HighImpact/HighImpact.xcodeproj/christopherjohnson.perspectivev3 index 8773219..a53e030 100755 --- a/plugins/MacAU/HighImpact/HighImpact.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/HighImpact/HighImpact.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>589 316 810 487 0 0 1440 878 </string> + <string>493 322 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,12 +350,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D74781F7F9B7D007AB60F</string> + <string>8B792D5021F427E4006E9731</string> <key>history</key> <array> <string>8BD4F5C21E6E137800288155</string> <string>8BD4F5C31E6E137800288155</string> - <string>8B9D65211F7C8934007AB60F</string> + <string>8B792D4B21F427D4006E9731</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 253}}</string> + <string>{{0, 0}, {603, 244}}</string> <key>RubberWindowFrame</key> - <string>589 316 810 487 0 0 1440 878 </string> + <string>493 322 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>253pt</string> + <string>244pt</string> </dict> <dict> <key>Proportion</key> - <string>188pt</string> + <string>197pt</string> <key>Tabs</key> <array> <dict> @@ -396,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 161}}</string> - <key>RubberWindowFrame</key> - <string>589 316 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 170}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -452,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 170}}</string> + <key>RubberWindowFrame</key> + <string>493 322 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -480,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D74791F7F9B7D007AB60F</string> + <string>8B792D5121F427E4006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D747A1F7F9B7D007AB60F</string> + <string>8B792D5221F427E4006E9731</string> <string>8B753F071E4027BF00347157</string> - <string>8B9D747B1F7F9B7D007AB60F</string> + <string>8B792D5321F427E4006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -637,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528456573.47978503</real> + <real>569649124.25200295</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -654,11 +652,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D747C1F7F9B7D007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/HighImpact/HighImpact.xcodeproj</string> </array> <key>WindowString</key> - <string>589 316 810 487 0 0 1440 878 </string> + <string>493 322 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Highpass/Highpass.cpp b/plugins/MacAU/Highpass/Highpass.cpp index 1f887f4..095a5fd 100755 --- a/plugins/MacAU/Highpass/Highpass.cpp +++ b/plugins/MacAU/Highpass/Highpass.cpp @@ -175,8 +175,7 @@ void Highpass::HighpassKernel::Reset() { iirSampleA = 0.0; iirSampleB = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; + fpNShape = 0.0; fpFlip = true; } @@ -207,9 +206,6 @@ void Highpass::HighpassKernel::Process( const Float32 *inSourceP, Float64 offset; Float64 inputSample; Float64 outputSample; - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; iirAmount += (iirAmount * tight * tight); if (tight > 0) tight /= 1.5; @@ -264,20 +260,13 @@ void Highpass::HighpassKernel::Process( const Float32 *inSourceP, } if (wet < 1.0) outputSample = (outputSample * wet) + (inputSample * dry); - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = outputSample; - fpNShapeA = (fpNShapeA*fpOld)+((outputSample-fpTemp)*fpNew); - outputSample += fpNShapeA; - } - else { - fpTemp = outputSample; - fpNShapeB = (fpNShapeB*fpOld)+((outputSample-fpTemp)*fpNew); - outputSample += fpNShapeB; - } fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = outputSample; sourceP += inNumChannels; diff --git a/plugins/MacAU/Highpass/Highpass.h b/plugins/MacAU/Highpass/Highpass.h index 05f4b8c..d29dcf9 100755 --- a/plugins/MacAU/Highpass/Highpass.h +++ b/plugins/MacAU/Highpass/Highpass.h @@ -136,8 +136,7 @@ public: private: Float64 iirSampleA; Float64 iirSampleB; - long double fpNShapeA; - long double fpNShapeB; + long double fpNShape; bool fpFlip; }; }; diff --git a/plugins/MacAU/Highpass/Highpass.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Highpass/Highpass.xcodeproj/christopherjohnson.pbxuser index 11b4400..10f000e 100755 --- a/plugins/MacAU/Highpass/Highpass.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Highpass/Highpass.xcodeproj/christopherjohnson.pbxuser @@ -49,15 +49,15 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528456582; - PBXWorkspaceStateSaveDate = 528456582; + PBXPerProjectTemplateStateSaveDate = 569649241; + PBXWorkspaceStateSaveDate = 569649241; }; perUserProjectItems = { 8B22B1581DB190F20075D7AA /* PBXTextBookmark */ = 8B22B1581DB190F20075D7AA /* PBXTextBookmark */; 8B22B1591DB190F20075D7AA /* PBXTextBookmark */ = 8B22B1591DB190F20075D7AA /* PBXTextBookmark */; 8B22B15A1DB190F20075D7AA /* PBXTextBookmark */ = 8B22B15A1DB190F20075D7AA /* PBXTextBookmark */; - 8B9D65321F7C8976007AB60F /* PBXTextBookmark */ = 8B9D65321F7C8976007AB60F /* PBXTextBookmark */; - 8B9D74871F7F9B9C007AB60F /* PBXTextBookmark */ = 8B9D74871F7F9B9C007AB60F /* PBXTextBookmark */; + 8B792D6121F428B9006E9731 /* PBXTextBookmark */ = 8B792D6121F428B9006E9731 /* PBXTextBookmark */; + 8B792D6621F428CA006E9731 /* PBXTextBookmark */ = 8B792D6621F428CA006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -93,32 +93,32 @@ vrLen = 772; vrLoc = 5298; }; - 8B9D65321F7C8976007AB60F /* PBXTextBookmark */ = { + 8B792D6121F428B9006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* Highpass.h */; name = "Highpass.h: 125"; rLen = 0; rLoc = 5113; rType = 0; - vrLen = 395; + vrLen = 369; vrLoc = 5287; }; - 8B9D74871F7F9B9C007AB60F /* PBXTextBookmark */ = { + 8B792D6621F428CA006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* Highpass.h */; name = "Highpass.h: 125"; rLen = 0; rLoc = 5113; rType = 0; - vrLen = 394; + vrLen = 369; vrLoc = 5287; }; 8BA05A660720730100365D66 /* Highpass.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {964, 3770}}"; - sepNavSelRange = "{9907, 0}"; - sepNavVisRange = "{9082, 2429}"; - sepNavWindowFrame = "{{584, 39}, {801, 838}}"; + sepNavIntBoundsRect = "{{0, 0}, {964, 3757}}"; + sepNavSelRange = "{12047, 0}"; + sepNavVisRange = "{9888, 2247}"; + sepNavWindowFrame = "{{463, 37}, {801, 838}}"; }; }; 8BA05A670720730100365D66 /* Highpass.exp */ = { @@ -138,10 +138,10 @@ }; 8BC6025B073B072D006C4272 /* Highpass.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {698, 2080}}"; + sepNavIntBoundsRect = "{{0, 0}, {670, 2106}}"; sepNavSelRange = "{5113, 0}"; - sepNavVisRange = "{5287, 394}"; - sepNavWindowFrame = "{{615, 40}, {801, 838}}"; + sepNavVisRange = "{5287, 369}"; + sepNavWindowFrame = "{{143, 40}, {801, 838}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/Highpass/Highpass.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Highpass/Highpass.xcodeproj/christopherjohnson.perspectivev3 index 49ba097..6210205 100755 --- a/plugins/MacAU/Highpass/Highpass.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Highpass/Highpass.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>810</integer> + <integer>810</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>626 387 810 487 0 0 1440 878 </string> + <string>369 385 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,13 +350,13 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D74871F7F9B9C007AB60F</string> + <string>8B792D6621F428CA006E9731</string> <key>history</key> <array> <string>8B22B1581DB190F20075D7AA</string> <string>8B22B1591DB190F20075D7AA</string> <string>8B22B15A1DB190F20075D7AA</string> - <string>8B9D65321F7C8976007AB60F</string> + <string>8B792D6121F428B9006E9731</string> </array> </dict> <key>SplitCount</key> @@ -372,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 264}}</string> + <string>{{0, 0}, {603, 256}}</string> <key>RubberWindowFrame</key> - <string>626 387 810 487 0 0 1440 878 </string> + <string>369 385 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>264pt</string> + <string>256pt</string> </dict> <dict> <key>Proportion</key> - <string>177pt</string> + <string>185pt</string> <key>Tabs</key> <array> <dict> @@ -397,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 150}}</string> - <key>RubberWindowFrame</key> - <string>626 387 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 158}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -453,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 328}}</string> + <string>{{10, 27}, {603, 158}}</string> + <key>RubberWindowFrame</key> + <string>369 385 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -481,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D74881F7F9B9C007AB60F</string> + <string>8B792D6721F428CA006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D74891F7F9B9C007AB60F</string> + <string>8B792D6821F428CA006E9731</string> <string>8BC032A31D66648E0039F36E</string> - <string>8B9D748A1F7F9B9C007AB60F</string> + <string>8B792D6921F428CA006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -638,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528456604.44275099</real> + <real>569649354.665344</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -655,11 +653,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D748B1F7F9B9C007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/Highpass/Highpass.xcodeproj</string> </array> <key>WindowString</key> - <string>626 387 810 487 0 0 1440 878 </string> + <string>369 385 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Hombre/Hombre.cpp b/plugins/MacAU/Hombre/Hombre.cpp index d16d992..420afa5 100755 --- a/plugins/MacAU/Hombre/Hombre.cpp +++ b/plugins/MacAU/Hombre/Hombre.cpp @@ -169,9 +169,7 @@ void Hombre::HombreKernel::Reset() for(int count = 0; count < 4000; count++) {p[count] = 0.0;} gcount = 0; slide = 0.421; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -196,15 +194,10 @@ void Hombre::HombreKernel::Process( const Float32 *inSourceP, int widthB = (int)(7.0*overallscale); //max 364 at 44.1, 792 at 96K Float64 wet = GetParameter( kParam_Two ); Float64 dry = 1.0 - wet; - long double inputSample; Float64 drySample; Float64 total; - int count; - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + int count; while (nSampleFrames-- > 0) { inputSample = *sourceP; @@ -273,23 +266,13 @@ void Hombre::HombreKernel::Process( const Float32 *inSourceP, inputSample = (inputSample * wet) + (drySample * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; - //built in output trim and dry/wet if desired - //*destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; } diff --git a/plugins/MacAU/Hombre/Hombre.h b/plugins/MacAU/Hombre/Hombre.h index fd408c3..0f2225b 100755 --- a/plugins/MacAU/Hombre/Hombre.h +++ b/plugins/MacAU/Hombre/Hombre.h @@ -131,9 +131,7 @@ public: Float64 p[4001]; Float64 slide; int gcount; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/Hombre/Hombre.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Hombre/Hombre.xcodeproj/christopherjohnson.pbxuser index 5ff61b8..31f4928 100755 --- a/plugins/MacAU/Hombre/Hombre.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Hombre/Hombre.xcodeproj/christopherjohnson.pbxuser @@ -49,18 +49,18 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528456614; - PBXWorkspaceStateSaveDate = 528456614; + PBXPerProjectTemplateStateSaveDate = 569649376; + PBXWorkspaceStateSaveDate = 569649376; }; perUserProjectItems = { - 8B9D65431F7C899F007AB60F /* PBXTextBookmark */ = 8B9D65431F7C899F007AB60F /* PBXTextBookmark */; + 8B792D7F21F4297F006E9731 /* PBXTextBookmark */ = 8B792D7F21F4297F006E9731 /* PBXTextBookmark */; 8B9D74961F7F9BB0007AB60F /* PBXTextBookmark */ = 8B9D74961F7F9BB0007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B9D65431F7C899F007AB60F /* PBXTextBookmark */ = { + 8B792D7F21F4297F006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A670720730100365D66 /* Hombre.exp */; name = "Hombre.exp: 2"; @@ -82,10 +82,10 @@ }; 8BA05A660720730100365D66 /* Hombre.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1098, 3900}}"; - sepNavSelRange = "{9060, 0}"; - sepNavVisRange = "{8861, 2038}"; - sepNavWindowFrame = "{{295, 66}, {1145, 812}}"; + sepNavIntBoundsRect = "{{0, 0}, {1098, 3913}}"; + sepNavSelRange = "{11704, 0}"; + sepNavVisRange = "{10307, 1458}"; + sepNavWindowFrame = "{{165, 66}, {1145, 812}}"; }; }; 8BA05A670720730100365D66 /* Hombre.exp */ = { @@ -106,10 +106,10 @@ }; 8BC6025B073B072D006C4272 /* Hombre.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {958, 1859}}"; - sepNavSelRange = "{5132, 0}"; - sepNavVisRange = "{3790, 1531}"; - sepNavWindowFrame = "{{809, 39}, {1005, 839}}"; + sepNavIntBoundsRect = "{{0, 0}, {958, 1833}}"; + sepNavSelRange = "{5170, 0}"; + sepNavVisRange = "{3685, 1595}"; + sepNavWindowFrame = "{{111, 39}, {1005, 839}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/Hombre/Hombre.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Hombre/Hombre.xcodeproj/christopherjohnson.perspectivev3 index 6c54c7c..794a8fd 100755 --- a/plugins/MacAU/Hombre/Hombre.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Hombre/Hombre.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>630 297 810 487 0 0 1440 878 </string> + <string>455 313 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,10 +350,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D74961F7F9BB0007AB60F</string> + <string>8B792D7F21F4297F006E9731</string> <key>history</key> <array> - <string>8B9D65431F7C899F007AB60F</string> + <string>8B9D74961F7F9BB0007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -371,7 +369,7 @@ <key>Frame</key> <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> - <string>630 297 810 487 0 0 1440 878 </string> + <string>455 313 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -395,8 +393,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> - <key>RubberWindowFrame</key> - <string>630 297 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -450,7 +446,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 328}}</string> + <string>{{10, 27}, {603, 414}}</string> + <key>RubberWindowFrame</key> + <string>455 313 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -478,11 +476,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D74971F7F9BB0007AB60F</string> + <string>8B792D7221F428E1006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D74981F7F9BB0007AB60F</string> + <string>8B792D7321F428E1006E9731</string> <string>8BAC23231F1EA3AC009C635C</string> - <string>8B9D74991F7F9BB0007AB60F</string> + <string>8B792D7421F428E1006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +633,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528456624.78481799</real> + <real>569649535.57319403</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,11 +650,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D749A1F7F9BB0007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/Hombre/Hombre.xcodeproj</string> </array> <key>WindowString</key> - <string>630 297 810 487 0 0 1440 878 </string> + <string>455 313 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/IronOxide5/IronOxide5.cpp b/plugins/MacAU/IronOxide5/IronOxide5.cpp index f0c27dd..c64d19a 100755 --- a/plugins/MacAU/IronOxide5/IronOxide5.cpp +++ b/plugins/MacAU/IronOxide5/IronOxide5.cpp @@ -224,9 +224,7 @@ void IronOxide5::IronOxide5Kernel::Reset() sweep = 0.0; rateof = 0.5; nextmax = 0.5; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -288,11 +286,6 @@ void IronOxide5::IronOxide5Kernel::Process( const Float32 *inSourceP, Float64 dry = 1.0; if (invdrywet > 0.0) dry -= invdrywet; - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; - - while (nSampleFrames-- > 0) { inputSample = *sourceP; if (inputSample<1.2e-38 && -inputSample<1.2e-38) { @@ -475,7 +468,7 @@ void IronOxide5::IronOxide5Kernel::Process( const Float32 *inSourceP, inputSample += (prevInputSample*randy); prevInputSample = drySample; - flip = not flip; + flip = !flip; //begin invdrywet block with outputgain if (outputgain != 1.0) inputSample *= outputgain; @@ -484,23 +477,14 @@ void IronOxide5::IronOxide5Kernel::Process( const Float32 *inSourceP, if (fabs(drySample) > 0.0) inputSample += drySample; //end invdrywet block with outputgain - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = not fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; - sourceP += inNumChannels; destP += inNumChannels; } } diff --git a/plugins/MacAU/IronOxide5/IronOxide5.h b/plugins/MacAU/IronOxide5/IronOxide5.h index 2b0b16e..2b3c655 100755 --- a/plugins/MacAU/IronOxide5/IronOxide5.h +++ b/plugins/MacAU/IronOxide5/IronOxide5.h @@ -167,13 +167,8 @@ public: Float64 rateof; Float64 sweep; Float64 nextmax; - - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; - + long double fpNShape; bool flip; - int demotimer; }; }; diff --git a/plugins/MacAU/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.pbxuser index 0cb3aa0..8cbc973 100755 --- a/plugins/MacAU/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.pbxuser @@ -49,18 +49,18 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528456633; - PBXWorkspaceStateSaveDate = 528456633; + PBXPerProjectTemplateStateSaveDate = 569649559; + PBXWorkspaceStateSaveDate = 569649559; }; perUserProjectItems = { - 8B9D65541F7C89D7007AB60F /* PlistBookmark */ = 8B9D65541F7C89D7007AB60F /* PlistBookmark */; + 8B792D9121F42A46006E9731 /* PlistBookmark */ = 8B792D9121F42A46006E9731 /* PlistBookmark */; 8B9D74A51F7F9BC2007AB60F /* PlistBookmark */ = 8B9D74A51F7F9BC2007AB60F /* PlistBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B9D65541F7C89D7007AB60F /* PlistBookmark */ = { + 8B792D9121F42A46006E9731 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; fallbackIsa = PBXBookmark; @@ -70,7 +70,7 @@ ); name = /Users/christopherjohnson/Desktop/MacAU/IronOxide5/Info.plist; rLen = 0; - rLoc = 9223372036854775808; + rLoc = 9223372036854775807; }; 8B9D74A51F7F9BC2007AB60F /* PlistBookmark */ = { isa = PlistBookmark; @@ -82,14 +82,14 @@ ); name = /Users/christopherjohnson/Desktop/MacAU/IronOxide5/Info.plist; rLen = 0; - rLoc = 9223372036854775807; + rLoc = 9223372036854775808; }; 8BA05A660720730100365D66 /* IronOxide5.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1006, 6552}}"; - sepNavSelRange = "{13026, 0}"; - sepNavVisRange = "{12449, 2393}"; - sepNavWindowFrame = "{{387, 39}, {1053, 839}}"; + sepNavIntBoundsRect = "{{0, 0}, {1006, 7072}}"; + sepNavSelRange = "{19392, 0}"; + sepNavVisRange = "{17695, 1759}"; + sepNavWindowFrame = "{{237, 39}, {1053, 839}}"; }; }; 8BA05A690720730100365D66 /* IronOxide5Version.h */ = { @@ -102,10 +102,10 @@ }; 8BC6025B073B072D006C4272 /* IronOxide5.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1006, 2327}}"; - sepNavSelRange = "{3959, 0}"; - sepNavVisRange = "{4993, 1457}"; - sepNavWindowFrame = "{{387, 39}, {1053, 839}}"; + sepNavIntBoundsRect = "{{0, 0}, {1006, 2535}}"; + sepNavSelRange = "{6418, 0}"; + sepNavVisRange = "{5321, 1207}"; + sepNavWindowFrame = "{{130, 39}, {1053, 839}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.perspectivev3 index e2992e0..fd0036a 100755 --- a/plugins/MacAU/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>841</integer> - <integer>841</integer> + <integer>826</integer> + <integer>826</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -325,7 +323,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>607 110 826 502 0 0 1440 878 </string> + <string>386 241 826 502 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -353,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D74A51F7F9BC2007AB60F</string> + <string>8B792D9121F42A46006E9731</string> <key>history</key> <array> - <string>8B9D65541F7C89D7007AB60F</string> + <string>8B9D74A51F7F9BC2007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -372,7 +370,7 @@ <key>Frame</key> <string>{{0, 0}, {516, 0}}</string> <key>RubberWindowFrame</key> - <string>607 110 826 502 0 0 1440 878 </string> + <string>386 241 826 502 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -396,8 +394,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {516, 429}}</string> - <key>RubberWindowFrame</key> - <string>607 110 826 502 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 315}}</string> + <string>{{10, 27}, {516, 429}}</string> + <key>RubberWindowFrame</key> + <string>386 241 826 502 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D74A61F7F9BC2007AB60F</string> + <string>8B792D9221F42A46006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D74A71F7F9BC2007AB60F</string> + <string>8B792D9321F42A46006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D74A81F7F9BC2007AB60F</string> + <string>8B792D9421F42A46006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -656,7 +654,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528456642.85610998</real> + <real>569649734.80982804</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -673,11 +671,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D74A91F7F9BC2007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/IronOxide5/IronOxide5.xcodeproj</string> </array> <key>WindowString</key> - <string>607 110 826 502 0 0 1440 878 </string> + <string>386 241 826 502 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/IronOxideClassic/IronOxideClassic.cpp b/plugins/MacAU/IronOxideClassic/IronOxideClassic.cpp index 54c5821..4bd736f 100755 --- a/plugins/MacAU/IronOxideClassic/IronOxideClassic.cpp +++ b/plugins/MacAU/IronOxideClassic/IronOxideClassic.cpp @@ -180,8 +180,7 @@ void IronOxideClassic::IronOxideClassicKernel::Reset() gcount = 0; fastIIRA = fastIIRB = slowIIRA = slowIIRB = 0.0; iirSampleA = iirSampleB = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; + fpNShape = 0.0; fpFlip = true; } @@ -223,11 +222,6 @@ void IronOxideClassic::IronOxideClassicKernel::Process( const Float32 *inSourc fastTaper = 1.0 + (fastTaper / overallscale); slowTaper = 1.0 + (slowTaper / overallscale); } - - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; - while (nSampleFrames-- > 0) { inputSample = *sourceP; @@ -385,20 +379,13 @@ void IronOxideClassic::IronOxideClassicKernel::Process( const Float32 *inSourc //second stage of overdrive to prevent overs and allow bloody loud extremeness if (outputgain != 1.0) inputSample *= outputgain; + fpFlip = !fpFlip; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = not fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/IronOxideClassic/IronOxideClassic.h b/plugins/MacAU/IronOxideClassic/IronOxideClassic.h index 283ae2b..4dfe41b 100755 --- a/plugins/MacAU/IronOxideClassic/IronOxideClassic.h +++ b/plugins/MacAU/IronOxideClassic/IronOxideClassic.h @@ -142,8 +142,7 @@ public: Float64 slowIIRB; SInt32 gcount; - long double fpNShapeA; - long double fpNShapeB; + long double fpNShape; bool fpFlip; }; }; diff --git a/plugins/MacAU/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.pbxuser index 4f2e20c..46ceb7d 100755 --- a/plugins/MacAU/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.pbxuser @@ -49,44 +49,44 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528456653; - PBXWorkspaceStateSaveDate = 528456653; + PBXPerProjectTemplateStateSaveDate = 569649756; + PBXWorkspaceStateSaveDate = 569649756; }; perUserProjectItems = { - 8B9D65651F7C8A00007AB60F /* PBXTextBookmark */ = 8B9D65651F7C8A00007AB60F /* PBXTextBookmark */; - 8B9D74B41F7F9BE8007AB60F /* PBXTextBookmark */ = 8B9D74B41F7F9BE8007AB60F /* PBXTextBookmark */; + 8B792DA221F42AC7006E9731 /* PBXTextBookmark */ = 8B792DA221F42AC7006E9731 /* PBXTextBookmark */; + 8B792DA721F42AD9006E9731 /* PBXTextBookmark */ = 8B792DA721F42AD9006E9731 /* PBXTextBookmark */; 8BCB78421ED90EBD001D6861 /* PlistBookmark */ = 8BCB78421ED90EBD001D6861 /* PlistBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B9D65651F7C8A00007AB60F /* PBXTextBookmark */ = { + 8B792DA221F42AC7006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* IronOxideClassic.cpp */; - name = "IronOxideClassic.cpp: 271"; + name = "IronOxideClassic.cpp: 265"; rLen = 50; - rLoc = 11952; + rLoc = 11820; rType = 0; - vrLen = 342; - vrLoc = 13099; + vrLen = 250; + vrLoc = 13063; }; - 8B9D74B41F7F9BE8007AB60F /* PBXTextBookmark */ = { + 8B792DA721F42AD9006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* IronOxideClassic.cpp */; - name = "IronOxideClassic.cpp: 271"; + name = "IronOxideClassic.cpp: 265"; rLen = 50; - rLoc = 11952; + rLoc = 11820; rType = 0; - vrLen = 263; - vrLoc = 13099; + vrLen = 250; + vrLoc = 13063; }; 8BA05A660720730100365D66 /* IronOxideClassic.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {482, 5538}}"; - sepNavSelRange = "{11952, 50}"; - sepNavVisRange = "{13099, 263}"; - sepNavWindowFrame = "{{408, 39}, {952, 839}}"; + sepNavIntBoundsRect = "{{0, 0}, {482, 5421}}"; + sepNavSelRange = "{11820, 50}"; + sepNavVisRange = "{13063, 250}"; + sepNavWindowFrame = "{{215, 32}, {952, 839}}"; }; }; 8BA05A690720730100365D66 /* IronOxideClassicVersion.h */ = { @@ -100,8 +100,8 @@ 8BC6025B073B072D006C4272 /* IronOxideClassic.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {905, 2002}}"; - sepNavSelRange = "{5476, 159}"; - sepNavVisRange = "{955, 2468}"; + sepNavSelRange = "{5661, 0}"; + sepNavVisRange = "{4268, 1518}"; sepNavWindowFrame = "{{5, 39}, {952, 839}}"; }; }; diff --git a/plugins/MacAU/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.perspectivev3 index 11ad553..4aa0a49 100755 --- a/plugins/MacAU/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>810</integer> - <integer>810</integer> + <integer>841</integer> + <integer>841</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -301,7 +299,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>4</integer> + <integer>3</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> @@ -353,11 +351,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D74B41F7F9BE8007AB60F</string> + <string>8B792DA721F42AD9006E9731</string> <key>history</key> <array> <string>8BCB78421ED90EBD001D6861</string> - <string>8B9D65651F7C8A00007AB60F</string> + <string>8B792DA221F42AC7006E9731</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 188}}</string> + <string>{{0, 0}, {531, 173}}</string> <key>RubberWindowFrame</key> <string>396 187 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>188pt</string> + <string>173pt</string> </dict> <dict> <key>Proportion</key> - <string>420pt</string> + <string>435pt</string> <key>Tabs</key> <array> <dict> @@ -396,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 393}}</string> - <key>RubberWindowFrame</key> - <string>396 187 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 408}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -452,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {531, 408}}</string> + <key>RubberWindowFrame</key> + <string>396 187 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -480,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D74B51F7F9BE8007AB60F</string> + <string>8B792DA821F42AD9006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D74B61F7F9BE8007AB60F</string> + <string>8B792DA921F42AD9006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D74B71F7F9BE8007AB60F</string> + <string>8B792DAA21F42AD9006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -657,7 +655,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528456680.36902398</real> + <real>569649881.95772898</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -674,7 +672,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D74B81F7F9BE8007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/IronOxideClassic/IronOxideClassic.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacAU/Logical4/Logical4.cpp b/plugins/MacAU/Logical4/Logical4.cpp index 32e4312..af228c2 100755 --- a/plugins/MacAU/Logical4/Logical4.cpp +++ b/plugins/MacAU/Logical4/Logical4.cpp @@ -267,10 +267,9 @@ ComponentResult Logical4::Reset(AudioUnitScope inScope, AudioUnitElement inElem gcount = 0; //end Power Sags - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; + + fpNShapeL = 0.0; + fpNShapeR = 0.0; fpFlip = true; return noErr; } @@ -293,16 +292,16 @@ OSStatus Logical4::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlag Float64 overallscale = 1.0; overallscale /= 44100.0; overallscale *= GetSampleRate(); - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; UInt32 nSampleFrames = inFramesToProcess; Float32 drySampleL; Float32 drySampleR; - Float64 inputSampleL; - Float64 inputSampleR; - + long double inputSampleL; + long double inputSampleR; + + long double fpOld = 0.618033988749894848204586; //golden ratio! + long double fpNew = 1.0 - fpOld; + //begin ButterComp Float64 inputpos; Float64 inputneg; @@ -1145,26 +1144,16 @@ OSStatus Logical4::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlag inputSampleL = (inputSampleL * wet) + (drySampleL * dry); inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = drySampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((drySampleL-fpTemp)*fpNew); - drySampleL += fpNShapeAL; - fpTemp = drySampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((drySampleR-fpTemp)*fpNew); - drySampleR += fpNShapeAR; - } - else { - fpTemp = drySampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((drySampleL-fpTemp)*fpNew); - drySampleL += fpNShapeBL; - fpTemp = drySampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((drySampleR-fpTemp)*fpNew); - drySampleR += fpNShapeBR; - } fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((Float32)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *outputL = inputSampleL; *outputR = inputSampleR; diff --git a/plugins/MacAU/Logical4/Logical4.h b/plugins/MacAU/Logical4/Logical4.h index 269fb08..31b3c1a 100755 --- a/plugins/MacAU/Logical4/Logical4.h +++ b/plugins/MacAU/Logical4/Logical4.h @@ -210,10 +210,8 @@ private: int gcount; - Float64 fpNShapeAL; - Float64 fpNShapeAR; - Float64 fpNShapeBL; - Float64 fpNShapeBR; + long double fpNShapeR; + long double fpNShapeL; bool fpFlip; }; diff --git a/plugins/MacAU/Logical4/Logical4.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Logical4/Logical4.xcodeproj/christopherjohnson.pbxuser index aeec156..7396e6c 100755 --- a/plugins/MacAU/Logical4/Logical4.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Logical4/Logical4.xcodeproj/christopherjohnson.pbxuser @@ -49,43 +49,19 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528456690; - PBXWorkspaceStateSaveDate = 528456690; - }; - perUserProjectItems = { - 8B9D65761F7C8A4B007AB60F /* PBXTextBookmark */ = 8B9D65761F7C8A4B007AB60F /* PBXTextBookmark */; - 8B9D74C31F7F9C65007AB60F /* PBXTextBookmark */ = 8B9D74C31F7F9C65007AB60F /* PBXTextBookmark */; + PBXPerProjectTemplateStateSaveDate = 569649914; + PBXWorkspaceStateSaveDate = 569649914; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B9D65761F7C8A4B007AB60F /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* Logical4.h */; - name = "Logical4.h: 65"; - rLen = 0; - rLoc = 3218; - rType = 0; - vrLen = 0; - vrLoc = 0; - }; - 8B9D74C31F7F9C65007AB60F /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* Logical4.h */; - name = "Logical4.h: 65"; - rLen = 0; - rLoc = 3218; - rType = 0; - vrLen = 0; - vrLoc = 0; - }; 8BA05A660720730100365D66 /* Logical4.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1156, 15431}}"; - sepNavSelRange = "{14451, 0}"; - sepNavVisRange = "{14181, 2352}"; - sepNavWindowFrame = "{{237, 42}, {1203, 836}}"; + sepNavIntBoundsRect = "{{0, 0}, {1156, 15860}}"; + sepNavSelRange = "{11365, 0}"; + sepNavVisRange = "{10694, 1692}"; + sepNavWindowFrame = "{{85, 42}, {1203, 836}}"; }; }; 8BA05A690720730100365D66 /* Logical4Version.h */ = { @@ -98,10 +74,10 @@ }; 8BC6025B073B072D006C4272 /* Logical4.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 2925}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 2912}}"; sepNavSelRange = "{3218, 0}"; sepNavVisRange = "{0, 0}"; - sepNavWindowFrame = "{{767, -61}, {932, 815}}"; + sepNavWindowFrame = "{{508, 39}, {932, 815}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/Logical4/Logical4.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Logical4/Logical4.xcodeproj/christopherjohnson.perspectivev3 index 2664542..65ca7eb 100755 --- a/plugins/MacAU/Logical4/Logical4.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Logical4/Logical4.xcodeproj/christopherjohnson.perspectivev3 @@ -325,7 +325,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>630 344 810 487 0 0 1440 878 </string> + <string>489 322 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -341,23 +341,13 @@ <key>PBXProjectModuleGUID</key> <string>8BAC22EC1F1EA26E009C635C</string> <key>PBXProjectModuleLabel</key> - <string>Logical4.h</string> + <string><No Editor></string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> <dict> <key>PBXProjectModuleGUID</key> <string>8BAC22ED1F1EA26E009C635C</string> - <key>PBXProjectModuleLabel</key> - <string>Logical4.h</string> - <key>_historyCapacity</key> - <integer>0</integer> - <key>bookmark</key> - <string>8B9D74C31F7F9C65007AB60F</string> - <key>history</key> - <array> - <string>8B9D65761F7C8A4B007AB60F</string> - </array> </dict> <key>SplitCount</key> <string>1</string> @@ -372,7 +362,7 @@ <key>Frame</key> <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> - <string>630 344 810 487 0 0 1440 878 </string> + <string>489 322 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -396,8 +386,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> - <key>RubberWindowFrame</key> - <string>630 344 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +439,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 363}}</string> + <string>{{10, 27}, {603, 414}}</string> + <key>RubberWindowFrame</key> + <string>489 322 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D74C41F7F9C65007AB60F</string> + <string>8B792DC121F42BF4006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D74C51F7F9C65007AB60F</string> + <string>8B792DC221F42BF4006E9731</string> <string>8BAC22EC1F1EA26E009C635C</string> - <string>8B9D74C61F7F9C65007AB60F</string> + <string>8B792DC321F42BF4006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528456805.22078699</real> + <real>569650164.73212397</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,11 +643,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D74C71F7F9C65007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/Logical4/Logical4.xcodeproj</string> </array> <key>WindowString</key> - <string>630 344 810 487 0 0 1440 878 </string> + <string>489 322 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Loud/Loud.cpp b/plugins/MacAU/Loud/Loud.cpp index 3d954d6..8be40d2 100755 --- a/plugins/MacAU/Loud/Loud.cpp +++ b/plugins/MacAU/Loud/Loud.cpp @@ -175,9 +175,7 @@ ComponentResult Loud::Initialize() void Loud::LoudKernel::Reset() { lastSample = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -196,9 +194,6 @@ void Loud::LoudKernel::Process( const Float32 *inSourceP, overallscale /= 44100.0; overallscale *= GetSampleRate(); Float64 boost = pow(GetParameter( kParam_One )+1.0,5); - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - Float32 fpTemp; Float64 output = GetParameter( kParam_Two ); Float64 wet = GetParameter( kParam_Three ); @@ -267,19 +262,11 @@ void Loud::LoudKernel::Process( const Float32 *inSourceP, //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/Loud/Loud.h b/plugins/MacAU/Loud/Loud.h index 4f15994..289716f 100755 --- a/plugins/MacAU/Loud/Loud.h +++ b/plugins/MacAU/Loud/Loud.h @@ -134,9 +134,7 @@ public: private: Float64 lastSample; - Float64 fpNShapeA; - Float64 fpNShapeB; - bool fpFlip; + Float64 fpNShape; }; }; diff --git a/plugins/MacAU/Loud/Loud.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Loud/Loud.xcodeproj/christopherjohnson.pbxuser index 987043f..77ce748 100755 --- a/plugins/MacAU/Loud/Loud.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Loud/Loud.xcodeproj/christopherjohnson.pbxuser @@ -49,37 +49,37 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 547640834; - PBXWorkspaceStateSaveDate = 547640834; + PBXPerProjectTemplateStateSaveDate = 569650197; + PBXWorkspaceStateSaveDate = 569650197; }; perUserProjectItems = { - 8B904D5820A4584C008CBAD8 /* PBXTextBookmark */ = 8B904D5820A4584C008CBAD8 /* PBXTextBookmark */; - 8B904D5920A4584C008CBAD8 /* PBXTextBookmark */ = 8B904D5920A4584C008CBAD8 /* PBXTextBookmark */; + 8B792DD221F42C71006E9731 /* PBXTextBookmark */ = 8B792DD221F42C71006E9731 /* PBXTextBookmark */; + 8B792DD721F42C90006E9731 /* PBXTextBookmark */ = 8B792DD721F42C90006E9731 /* PBXTextBookmark */; 8B9F0C141EB4035300D3B900 /* PBXTextBookmark */ = 8B9F0C141EB4035300D3B900 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B904D5820A4584C008CBAD8 /* PBXTextBookmark */ = { + 8B792DD221F42C71006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Loud.cpp */; - name = "Loud.cpp: 237"; + name = "Loud.cpp: 232"; rLen = 983; - rLoc = 10671; + rLoc = 10520; rType = 0; - vrLen = 140; - vrLoc = 9658; + vrLen = 0; + vrLoc = 0; }; - 8B904D5920A4584C008CBAD8 /* PBXTextBookmark */ = { + 8B792DD721F42C90006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Loud.cpp */; - name = "Loud.cpp: 237"; + name = "Loud.cpp: 232"; rLen = 983; - rLoc = 10671; + rLoc = 10520; rType = 0; - vrLen = 140; - vrLoc = 9658; + vrLen = 0; + vrLoc = 0; }; 8B9F0C141EB4035300D3B900 /* PBXTextBookmark */ = { isa = PBXTextBookmark; @@ -93,10 +93,10 @@ }; 8BA05A660720730100365D66 /* Loud.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {691, 3809}}"; - sepNavSelRange = "{10671, 983}"; - sepNavVisRange = "{9658, 140}"; - sepNavWindowFrame = "{{477, 66}, {1145, 812}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 3718}}"; + sepNavSelRange = "{10520, 983}"; + sepNavVisRange = "{0, 0}"; + sepNavWindowFrame = "{{92, 66}, {1145, 812}}"; }; }; 8BA05A670720730100365D66 /* Loud.exp */ = { @@ -117,10 +117,10 @@ }; 8BC6025B073B072D006C4272 /* Loud.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1006, 1898}}"; - sepNavSelRange = "{2999, 121}"; - sepNavVisRange = "{3795, 1551}"; - sepNavWindowFrame = "{{89, -6}, {1053, 839}}"; + sepNavIntBoundsRect = "{{0, 0}, {1006, 1846}}"; + sepNavSelRange = "{5199, 0}"; + sepNavVisRange = "{3721, 1588}"; + sepNavWindowFrame = "{{89, 39}, {1053, 839}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/Loud/Loud.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Loud/Loud.xcodeproj/christopherjohnson.perspectivev3 index 2b8deb6..fc5744d 100755 --- a/plugins/MacAU/Loud/Loud.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Loud/Loud.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -352,11 +350,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B904D5920A4584C008CBAD8</string> + <string>8B792DD721F42C90006E9731</string> <key>history</key> <array> <string>8B9F0C141EB4035300D3B900</string> - <string>8B904D5820A4584C008CBAD8</string> + <string>8B792DD221F42C71006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 51}}</string> + <string>{{0, 0}, {603, 32}}</string> <key>RubberWindowFrame</key> <string>337 373 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>51pt</string> + <string>32pt</string> </dict> <dict> <key>Proportion</key> - <string>390pt</string> + <string>409pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 363}}</string> - <key>RubberWindowFrame</key> - <string>337 373 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 382}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 382}}</string> + <key>RubberWindowFrame</key> + <string>337 373 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B904D5A20A4584C008CBAD8</string> + <string>8B792DD821F42C90006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B904D5B20A4584C008CBAD8</string> + <string>8B792DD921F42C90006E9731</string> <string>8BDB26991EAA805E001F42B2</string> - <string>8B904D5C20A4584C008CBAD8</string> + <string>8B792DDA21F42C90006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>547641420.42251396</real> + <real>569650320.319924</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,7 +651,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B904D5D20A4584C008CBAD8</string> <string>/Users/christopherjohnson/Desktop/MacAU/Loud/Loud.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacAU/Lowpass/Lowpass.cpp b/plugins/MacAU/Lowpass/Lowpass.cpp index 234b763..f727829 100755 --- a/plugins/MacAU/Lowpass/Lowpass.cpp +++ b/plugins/MacAU/Lowpass/Lowpass.cpp @@ -176,8 +176,7 @@ void Lowpass::LowpassKernel::Reset() { iirSampleA = 0.0; iirSampleB = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; + fpNShape = 0.0; fpFlip = true; } @@ -205,9 +204,6 @@ void Lowpass::LowpassKernel::Process( const Float32 *inSourceP, Float64 offset; Float64 inputSample; Float64 outputSample; - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; iirAmount += (iirAmount * tight * tight); if (tight > 0) tight /= 1.5; @@ -262,20 +258,13 @@ void Lowpass::LowpassKernel::Process( const Float32 *inSourceP, } if (wet < 1.0) outputSample = (outputSample * wet) + (inputSample * dry); - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = outputSample; - fpNShapeA = (fpNShapeA*fpOld)+((outputSample-fpTemp)*fpNew); - outputSample += fpNShapeA; - } - else { - fpTemp = outputSample; - fpNShapeB = (fpNShapeB*fpOld)+((outputSample-fpTemp)*fpNew); - outputSample += fpNShapeB; - } fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = outputSample; sourceP += inNumChannels; diff --git a/plugins/MacAU/Lowpass/Lowpass.h b/plugins/MacAU/Lowpass/Lowpass.h index 695a116..cf12e75 100755 --- a/plugins/MacAU/Lowpass/Lowpass.h +++ b/plugins/MacAU/Lowpass/Lowpass.h @@ -133,8 +133,7 @@ public: private: Float64 iirSampleA; Float64 iirSampleB; - long double fpNShapeA; - long double fpNShapeB; + long double fpNShape; bool fpFlip; }; }; diff --git a/plugins/MacAU/Lowpass/Lowpass.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Lowpass/Lowpass.xcodeproj/christopherjohnson.pbxuser index f5f0bfd..badd1c8 100755 --- a/plugins/MacAU/Lowpass/Lowpass.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Lowpass/Lowpass.xcodeproj/christopherjohnson.pbxuser @@ -49,14 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528456837; - PBXWorkspaceStateSaveDate = 528456837; + PBXPerProjectTemplateStateSaveDate = 569650365; + PBXWorkspaceStateSaveDate = 569650365; }; perUserProjectItems = { 8B22B12A1DB18F4E0075D7AA /* PBXTextBookmark */ = 8B22B12A1DB18F4E0075D7AA /* PBXTextBookmark */; 8B22B12B1DB18F4E0075D7AA /* PBXTextBookmark */ = 8B22B12B1DB18F4E0075D7AA /* PBXTextBookmark */; - 8B9D65961F7C8AEB007AB60F /* PBXTextBookmark */ = 8B9D65961F7C8AEB007AB60F /* PBXTextBookmark */; - 8B9D74E11F7F9CD5007AB60F /* PBXTextBookmark */ = 8B9D74E11F7F9CD5007AB60F /* PBXTextBookmark */; + 8B792DE821F42D38006E9731 /* PBXTextBookmark */ = 8B792DE821F42D38006E9731 /* PBXTextBookmark */; + 8B792DED21F42D64006E9731 /* PBXTextBookmark */ = 8B792DED21F42D64006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -82,7 +82,7 @@ vrLen = 672; vrLoc = 7641; }; - 8B9D65961F7C8AEB007AB60F /* PBXTextBookmark */ = { + 8B792DE821F42D38006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* Lowpass.h */; name = "Lowpass.h: 134"; @@ -92,21 +92,21 @@ vrLen = 647; vrLoc = 2906; }; - 8B9D74E11F7F9CD5007AB60F /* PBXTextBookmark */ = { + 8B792DED21F42D64006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* Lowpass.h */; name = "Lowpass.h: 134"; rLen = 44; rLoc = 5247; rType = 0; - vrLen = 647; + vrLen = 379; vrLoc = 2906; }; 8BA05A660720730100365D66 /* Lowpass.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {964, 3770}}"; - sepNavSelRange = "{9874, 0}"; - sepNavVisRange = "{9374, 2090}"; + sepNavIntBoundsRect = "{{0, 0}, {964, 3796}}"; + sepNavSelRange = "{11986, 0}"; + sepNavVisRange = "{10557, 1517}"; sepNavWindowFrame = "{{418, 133}, {903, 692}}"; }; }; @@ -128,9 +128,9 @@ }; 8BC6025B073B072D006C4272 /* Lowpass.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {824, 2080}}"; + sepNavIntBoundsRect = "{{0, 0}, {824, 1911}}"; sepNavSelRange = "{5247, 44}"; - sepNavVisRange = "{2906, 647}"; + sepNavVisRange = "{2906, 379}"; sepNavWindowFrame = "{{15, 54}, {895, 819}}"; }; }; diff --git a/plugins/MacAU/Lowpass/Lowpass.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Lowpass/Lowpass.xcodeproj/christopherjohnson.perspectivev3 index 77c2c6b..1791e2f 100755 --- a/plugins/MacAU/Lowpass/Lowpass.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Lowpass/Lowpass.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>810</integer> + <integer>810</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>548 245 810 487 0 0 1440 878 </string> + <string>445 250 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,12 +350,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D74E11F7F9CD5007AB60F</string> + <string>8B792DED21F42D64006E9731</string> <key>history</key> <array> <string>8B22B12A1DB18F4E0075D7AA</string> <string>8B22B12B1DB18F4E0075D7AA</string> - <string>8B9D65961F7C8AEB007AB60F</string> + <string>8B792DE821F42D38006E9731</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 325}}</string> + <string>{{0, 0}, {603, 146}}</string> <key>RubberWindowFrame</key> - <string>548 245 810 487 0 0 1440 878 </string> + <string>445 250 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>325pt</string> + <string>146pt</string> </dict> <dict> <key>Proportion</key> - <string>116pt</string> + <string>295pt</string> <key>Tabs</key> <array> <dict> @@ -396,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 89}}</string> - <key>RubberWindowFrame</key> - <string>548 245 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 95}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -452,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 268}}</string> + <key>RubberWindowFrame</key> + <string>445 250 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -480,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D74E21F7F9CD5007AB60F</string> + <string>8B792DEE21F42D64006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D74E31F7F9CD5007AB60F</string> + <string>8B792DEF21F42D64006E9731</string> <string>8B48C3411DAAD496009A0ADD</string> - <string>8B9D74E41F7F9CD5007AB60F</string> + <string>8B792DF021F42D64006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -637,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528456917.709867</real> + <real>569650532.61439598</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -654,11 +652,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D74E51F7F9CD5007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/Lowpass/Lowpass.xcodeproj</string> </array> <key>WindowString</key> - <string>548 245 810 487 0 0 1440 878 </string> + <string>445 250 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Melt/Melt.cpp b/plugins/MacAU/Melt/Melt.cpp index 8da35b4..eaca93d 100755 --- a/plugins/MacAU/Melt/Melt.cpp +++ b/plugins/MacAU/Melt/Melt.cpp @@ -189,10 +189,7 @@ void Melt::MeltKernel::Reset() stepCount = 0; slowCount = 0; gcount = 0; - - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -245,10 +242,6 @@ void Melt::MeltKernel::Process( const Float32 *inSourceP, minTap[28] = floor(109 * depthA); maxTap[28] = floor(109 * depthB); minTap[29] = floor(113 * depthA); maxTap[29] = floor(113 * depthB); minTap[30] = floor(117 * depthA); maxTap[30] = floor(117 * depthB); - - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double drySample; long double inputSample; @@ -370,20 +363,11 @@ void Melt::MeltKernel::Process( const Float32 *inSourceP, //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/Melt/Melt.h b/plugins/MacAU/Melt/Melt.h index b8e7122..4473fb5 100755 --- a/plugins/MacAU/Melt/Melt.h +++ b/plugins/MacAU/Melt/Melt.h @@ -145,9 +145,7 @@ public: Float32 scalefactor; int gcount; //we're using 32 bit because we want to build some truncation into the tails to noise them. - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/Melt/Melt.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Melt/Melt.xcodeproj/christopherjohnson.pbxuser index 608567f..0973f73 100755 --- a/plugins/MacAU/Melt/Melt.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Melt/Melt.xcodeproj/christopherjohnson.pbxuser @@ -49,14 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528456926; - PBXWorkspaceStateSaveDate = 528456926; + PBXPerProjectTemplateStateSaveDate = 569650600; + PBXWorkspaceStateSaveDate = 569650600; }; perUserProjectItems = { 8B3483971E27D980007B1BF6 /* PlistBookmark */ = 8B3483971E27D980007B1BF6 /* PlistBookmark */; 8B4296221E6DCF55007D8787 /* PBXTextBookmark */ = 8B4296221E6DCF55007D8787 /* PBXTextBookmark */; - 8B9D65A91F7C8B27007AB60F /* PBXTextBookmark */ = 8B9D65A91F7C8B27007AB60F /* PBXTextBookmark */; - 8B9D74F01F7F9D02007AB60F /* PBXTextBookmark */ = 8B9D74F01F7F9D02007AB60F /* PBXTextBookmark */; + 8B792DFF21F42E3C006E9731 /* PBXTextBookmark */ = 8B792DFF21F42E3C006E9731 /* PBXTextBookmark */; + 8B792E0421F42E5D006E9731 /* PBXTextBookmark */ = 8B792E0421F42E5D006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -84,48 +84,48 @@ vrLen = 354; vrLoc = 5375; }; - 8B9D65A91F7C8B27007AB60F /* PBXTextBookmark */ = { + 8B792DFF21F42E3C006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A690720730100365D66 /* MeltVersion.h */; name = "MeltVersion.h: 56"; rLen = 0; rLoc = 2913; rType = 0; - vrLen = 326; - vrLoc = 2595; + vrLen = 274; + vrLoc = 2647; }; - 8B9D74F01F7F9D02007AB60F /* PBXTextBookmark */ = { + 8B792E0421F42E5D006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A690720730100365D66 /* MeltVersion.h */; name = "MeltVersion.h: 56"; rLen = 0; rLoc = 2913; rType = 0; - vrLen = 300; - vrLoc = 2621; + vrLen = 274; + vrLoc = 2647; }; 8BA05A660720730100365D66 /* Melt.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {880, 4914}}"; - sepNavSelRange = "{12007, 0}"; - sepNavVisRange = "{11242, 2563}"; - sepNavWindowFrame = "{{516, 41}, {923, 837}}"; + sepNavIntBoundsRect = "{{0, 0}, {876, 5252}}"; + sepNavSelRange = "{16035, 0}"; + sepNavVisRange = "{14613, 1510}"; + sepNavWindowFrame = "{{351, 41}, {923, 837}}"; }; }; 8BA05A690720730100365D66 /* MeltVersion.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {824, 793}}"; + sepNavIntBoundsRect = "{{0, 0}, {824, 832}}"; sepNavSelRange = "{2913, 0}"; - sepNavVisRange = "{2621, 300}"; + sepNavVisRange = "{2647, 274}"; sepNavWindowFrame = "{{15, 39}, {923, 837}}"; }; }; 8BC6025B073B072D006C4272 /* Melt.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 2041}}"; - sepNavSelRange = "{5375, 185}"; - sepNavVisRange = "{2703, 1607}"; - sepNavWindowFrame = "{{780, 30}, {923, 837}}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 2028}}"; + sepNavSelRange = "{5681, 0}"; + sepNavVisRange = "{4205, 1578}"; + sepNavWindowFrame = "{{358, 41}, {923, 837}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/Melt/Melt.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Melt/Melt.xcodeproj/christopherjohnson.perspectivev3 index a3708e3..09058db 100755 --- a/plugins/MacAU/Melt/Melt.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Melt/Melt.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -325,7 +323,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>599 164 841 654 0 0 1440 878 </string> + <string>461 194 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -353,12 +351,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D74F01F7F9D02007AB60F</string> + <string>8B792E0421F42E5D006E9731</string> <key>history</key> <array> <string>8B3483971E27D980007B1BF6</string> <string>8B4296221E6DCF55007D8787</string> - <string>8B9D65A91F7C8B27007AB60F</string> + <string>8B792DFF21F42E3C006E9731</string> </array> </dict> <key>SplitCount</key> @@ -372,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 216}}</string> + <string>{{0, 0}, {531, 202}}</string> <key>RubberWindowFrame</key> - <string>599 164 841 654 0 0 1440 878 </string> + <string>461 194 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>216pt</string> + <string>202pt</string> </dict> <dict> <key>Proportion</key> - <string>392pt</string> + <string>406pt</string> <key>Tabs</key> <array> <dict> @@ -397,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 365}}</string> - <key>RubberWindowFrame</key> - <string>599 164 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 379}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -453,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 315}}</string> + <string>{{10, 27}, {531, 379}}</string> + <key>RubberWindowFrame</key> + <string>461 194 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -481,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D74F11F7F9D02007AB60F</string> + <string>8B792E0521F42E5D006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D74F21F7F9D02007AB60F</string> + <string>8B792E0621F42E5D006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D74F31F7F9D02007AB60F</string> + <string>8B792E0721F42E5D006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -658,7 +656,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528456962.27142799</real> + <real>569650781.22719395</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -675,11 +673,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D74F41F7F9D02007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/Melt/Melt.xcodeproj</string> </array> <key>WindowString</key> - <string>599 164 841 654 0 0 1440 878 </string> + <string>461 194 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/MidSide/MidSide.cpp b/plugins/MacAU/MidSide/MidSide.cpp index 32dfa00..8330aa1 100755 --- a/plugins/MacAU/MidSide/MidSide.cpp +++ b/plugins/MacAU/MidSide/MidSide.cpp @@ -171,11 +171,8 @@ ComponentResult MidSide::Initialize() // this is called the reset the DSP state (clear buffers, reset counters, etc.) ComponentResult MidSide::Reset(AudioUnitScope inScope, AudioUnitElement inElement) { - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; return noErr; } @@ -194,11 +191,7 @@ OSStatus MidSide::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags Float32 * outputL = (Float32*)(outBuffer.mBuffers[0].mData); Float32 * outputR = (Float32*)(outBuffer.mBuffers[1].mData); UInt32 nSampleFrames = inFramesToProcess; - - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + long double inputSampleL; long double inputSampleR; long double mid; @@ -256,25 +249,14 @@ OSStatus MidSide::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags mid *= midgain; side *= sidegain; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = mid; - fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLA; - fpTemp = side; - fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRA; - } - else { - fpTemp = mid; - fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLB; - fpTemp = side; - fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((Float32)mid, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + mid += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((Float32)side, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + side += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *outputL = mid; *outputR = side; diff --git a/plugins/MacAU/MidSide/MidSide.h b/plugins/MacAU/MidSide/MidSide.h index 9d78006..643457a 100755 --- a/plugins/MacAU/MidSide/MidSide.h +++ b/plugins/MacAU/MidSide/MidSide.h @@ -111,11 +111,8 @@ public: virtual ComponentResult Version() { return kMidSideVersion; } private: - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff }; diff --git a/plugins/MacAU/MidSide/MidSide.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/MidSide/MidSide.xcodeproj/christopherjohnson.pbxuser index 4bb0c76..854d5ed 100755 --- a/plugins/MacAU/MidSide/MidSide.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/MidSide/MidSide.xcodeproj/christopherjohnson.pbxuser @@ -49,43 +49,43 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528457068; - PBXWorkspaceStateSaveDate = 528457068; + PBXPerProjectTemplateStateSaveDate = 569650825; + PBXWorkspaceStateSaveDate = 569650825; }; perUserProjectItems = { - 8B9D65B91F7C8B49007AB60F /* PBXTextBookmark */ = 8B9D65B91F7C8B49007AB60F /* PBXTextBookmark */; - 8B9D74FF1F7F9D7C007AB60F /* PBXTextBookmark */ = 8B9D74FF1F7F9D7C007AB60F /* PBXTextBookmark */; + 8B792E1621F42F27006E9731 /* PBXTextBookmark */ = 8B792E1621F42F27006E9731 /* PBXTextBookmark */; + 8B792E1B21F42F3C006E9731 /* PBXTextBookmark */ = 8B792E1B21F42F3C006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B9D65B91F7C8B49007AB60F /* PBXTextBookmark */ = { + 8B792E1621F42F27006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* MidSide.cpp */; - name = "MidSide.cpp: 179"; + name = "MidSide.cpp: 176"; rLen = 0; - rLoc = 7698; + rLoc = 7642; rType = 0; - vrLen = 71; - vrLoc = 7644; + vrLen = 4; + vrLoc = 7657; }; - 8B9D74FF1F7F9D7C007AB60F /* PBXTextBookmark */ = { + 8B792E1B21F42F3C006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* MidSide.cpp */; - name = "MidSide.cpp: 179"; + name = "MidSide.cpp: 176"; rLen = 0; - rLoc = 7698; + rLoc = 7642; rType = 0; - vrLen = 33; - vrLoc = 7682; + vrLen = 3; + vrLoc = 7657; }; 8BA05A660720730100365D66 /* MidSide.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {656, 3848}}"; - sepNavSelRange = "{7698, 0}"; - sepNavVisRange = "{7682, 33}"; - sepNavWindowFrame = "{{370, 56}, {1070, 811}}"; + sepNavIntBoundsRect = "{{0, 0}, {656, 3770}}"; + sepNavSelRange = "{7642, 0}"; + sepNavVisRange = "{7657, 3}"; + sepNavWindowFrame = "{{199, 67}, {1070, 811}}"; }; }; 8BA05A670720730100365D66 /* MidSide.exp */ = { @@ -106,10 +106,10 @@ }; 8BC6025B073B072D006C4272 /* MidSide.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1023, 1638}}"; - sepNavSelRange = "{4794, 131}"; - sepNavVisRange = "{3189, 1836}"; - sepNavWindowFrame = "{{612, 23}, {1070, 811}}"; + sepNavIntBoundsRect = "{{0, 0}, {1023, 1599}}"; + sepNavSelRange = "{4842, 0}"; + sepNavVisRange = "{3187, 1779}"; + sepNavWindowFrame = "{{370, 39}, {1070, 811}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/MidSide/MidSide.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/MidSide/MidSide.xcodeproj/christopherjohnson.perspectivev3 index 32ff114..3db9e85 100755 --- a/plugins/MacAU/MidSide/MidSide.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/MidSide/MidSide.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>810</integer> + <integer>810</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>612 261 810 487 0 0 1440 878 </string> + <string>444 290 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,10 +350,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D74FF1F7F9D7C007AB60F</string> + <string>8B792E1B21F42F3C006E9731</string> <key>history</key> <array> - <string>8B9D65B91F7C8B49007AB60F</string> + <string>8B792E1621F42F27006E9731</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +367,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 69}}</string> + <string>{{0, 0}, {603, 51}}</string> <key>RubberWindowFrame</key> - <string>612 261 810 487 0 0 1440 878 </string> + <string>444 290 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>69pt</string> + <string>51pt</string> </dict> <dict> <key>Proportion</key> - <string>372pt</string> + <string>390pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +392,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 345}}</string> - <key>RubberWindowFrame</key> - <string>612 261 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 363}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -450,7 +446,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {603, 363}}</string> + <key>RubberWindowFrame</key> + <string>444 290 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -478,11 +476,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D75001F7F9D7C007AB60F</string> + <string>8B792E1C21F42F3C006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D75011F7F9D7C007AB60F</string> + <string>8B792E1D21F42F3C006E9731</string> <string>8B753E6F1E40231800347157</string> - <string>8B9D75021F7F9D7C007AB60F</string> + <string>8B792E1E21F42F3C006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +633,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528457084.46547401</real> + <real>569651004.49607897</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,11 +650,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D75031F7F9D7C007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/MidSide/MidSide.xcodeproj</string> </array> <key>WindowString</key> - <string>612 261 810 487 0 0 1440 878 </string> + <string>444 290 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/NCSeventeen/NCSeventeen.cpp b/plugins/MacAU/NCSeventeen/NCSeventeen.cpp index cc27033..14f0cf2 100755 --- a/plugins/MacAU/NCSeventeen/NCSeventeen.cpp +++ b/plugins/MacAU/NCSeventeen/NCSeventeen.cpp @@ -173,9 +173,7 @@ void NCSeventeen::NCSeventeenKernel::Reset() basslev = 0.0; treblev = 0.0; cheblev = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -189,12 +187,7 @@ void NCSeventeen::NCSeventeenKernel::Process( const Float32 *inSourceP, { UInt32 nSampleFrames = inFramesToProcess; const Float32 *sourceP = inSourceP; - Float32 *destP = inDestP; - - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + Float32 *destP = inDestP; Float64 inP2; Float64 chebyshev; Float64 overallscale = 1.0; @@ -389,19 +382,11 @@ void NCSeventeen::NCSeventeenKernel::Process( const Float32 *inSourceP, if (inputSample < -0.95) inputSample = -0.95; //iron bar - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; //built in output trim and dry/wet by default diff --git a/plugins/MacAU/NCSeventeen/NCSeventeen.h b/plugins/MacAU/NCSeventeen/NCSeventeen.h index 80575ef..571f64f 100755 --- a/plugins/MacAU/NCSeventeen/NCSeventeen.h +++ b/plugins/MacAU/NCSeventeen/NCSeventeen.h @@ -133,9 +133,7 @@ public: Float64 basslev; Float64 treblev; Float64 cheblev; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; //default stuff }; diff --git a/plugins/MacAU/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.pbxuser index f9c1f79..6f69541 100755 --- a/plugins/MacAU/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.pbxuser @@ -49,43 +49,43 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 531741948; - PBXWorkspaceStateSaveDate = 531741948; + PBXPerProjectTemplateStateSaveDate = 569651037; + PBXWorkspaceStateSaveDate = 569651037; }; perUserProjectItems = { - 8B66929D1FA3B6DF007B3434 /* PBXTextBookmark */ = 8B66929D1FA3B6DF007B3434 /* PBXTextBookmark */; - 8B6692BF1FB1BEBD007B3434 /* PBXTextBookmark */ = 8B6692BF1FB1BEBD007B3434 /* PBXTextBookmark */; + 8B792E2D21F42FE2006E9731 /* PBXTextBookmark */ = 8B792E2D21F42FE2006E9731 /* PBXTextBookmark */; + 8B792E3221F43005006E9731 /* PBXTextBookmark */ = 8B792E3221F43005006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B66929D1FA3B6DF007B3434 /* PBXTextBookmark */ = { + 8B792E2D21F42FE2006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* NCSeventeen.h */; name = "NCSeventeen.h: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 47; + vrLen = 26; vrLoc = 0; }; - 8B6692BF1FB1BEBD007B3434 /* PBXTextBookmark */ = { + 8B792E3221F43005006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* NCSeventeen.h */; name = "NCSeventeen.h: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 29; + vrLen = 26; vrLoc = 0; }; 8BA05A660720730100365D66 /* NCSeventeen.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1098, 5460}}"; - sepNavSelRange = "{16304, 0}"; - sepNavVisRange = "{15087, 1879}"; - sepNavWindowFrame = "{{295, 66}, {1145, 812}}"; + sepNavIntBoundsRect = "{{0, 0}, {1098, 5317}}"; + sepNavSelRange = "{16560, 0}"; + sepNavVisRange = "{14728, 1968}"; + sepNavWindowFrame = "{{152, 66}, {1145, 812}}"; }; }; 8BA05A690720730100365D66 /* NCSeventeenVersion.h */ = { @@ -98,10 +98,10 @@ }; 8BC6025B073B072D006C4272 /* NCSeventeen.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 1963}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 1937}}"; sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 29}"; - sepNavWindowFrame = "{{413, 43}, {1027, 835}}"; + sepNavVisRange = "{0, 26}"; + sepNavWindowFrame = "{{244, 43}, {1027, 835}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.perspectivev3 index 8047d9f..b049979 100755 --- a/plugins/MacAU/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>810</integer> + <integer>810</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -300,7 +298,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>4</integer> + <integer>3</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>613 385 810 487 0 0 1440 878 </string> + <string>460 371 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,10 +350,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B6692BF1FB1BEBD007B3434</string> + <string>8B792E3221F43005006E9731</string> <key>history</key> <array> - <string>8B66929D1FA3B6DF007B3434</string> + <string>8B792E2D21F42FE2006E9731</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +367,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 69}}</string> + <string>{{0, 0}, {603, 51}}</string> <key>RubberWindowFrame</key> - <string>613 385 810 487 0 0 1440 878 </string> + <string>460 371 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>69pt</string> + <string>51pt</string> </dict> <dict> <key>Proportion</key> - <string>372pt</string> + <string>390pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +392,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 345}}</string> - <key>RubberWindowFrame</key> - <string>613 385 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 363}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -450,7 +446,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {603, 363}}</string> + <key>RubberWindowFrame</key> + <string>460 371 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -478,11 +476,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B6692C01FB1BEBD007B3434</string> + <string>8B792E3321F43005006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B6692C11FB1BEBD007B3434</string> + <string>8B792E3421F43005006E9731</string> <string>8B67C76A1FA2B03A008C64D6</string> - <string>8B6692C21FB1BEBD007B3434</string> + <string>8B792E3521F43005006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +633,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>531742397.05920899</real> + <real>569651205.03675902</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,11 +650,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B6692C31FB1BEBD007B3434</string> <string>/Users/christopherjohnson/Desktop/MacAU/NCSeventeen/NCSeventeen.xcodeproj</string> </array> <key>WindowString</key> - <string>613 385 810 487 0 0 1440 878 </string> + <string>460 371 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Noise/Noise.cpp b/plugins/MacAU/Noise/Noise.cpp index b528b4b..15ca903 100755 --- a/plugins/MacAU/Noise/Noise.cpp +++ b/plugins/MacAU/Noise/Noise.cpp @@ -209,9 +209,7 @@ void Noise::NoiseKernel::Reset() flip = false; filterflip = false; for(int count = 0; count < 11; count++) {b[count] = 0.0; f[count] = 0.0;} - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -311,10 +309,6 @@ void Noise::NoiseKernel::Process( const Float32 *inSourceP, f[9] /= overallscale; //and now it's neatly scaled, too - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - while (nSampleFrames-- > 0) { inputSample = *sourceP; if (inputSample<1.2e-38 && -inputSample<1.2e-38) { @@ -359,8 +353,8 @@ void Noise::NoiseKernel::Process( const Float32 *inSourceP, invcutoff = 1.0 - cutoff; //set up modified cutoff - flip = not flip; - filterflip = not filterflip; + flip = !flip; + filterflip = !filterflip; quadratic -= 1; if (quadratic < 0) { @@ -428,19 +422,11 @@ void Noise::NoiseKernel::Process( const Float32 *inSourceP, inputSample -= correctionSample; //applying the distance calculation to both the dry AND the noise output to blend them - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/Noise/Noise.h b/plugins/MacAU/Noise/Noise.h index 7d0a6d7..452a603 100755 --- a/plugins/MacAU/Noise/Noise.h +++ b/plugins/MacAU/Noise/Noise.h @@ -152,9 +152,7 @@ public: bool filterflip; Float64 b[11]; Float64 f[11]; - Float64 fpNShapeA; - Float64 fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/Noise/Noise.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Noise/Noise.xcodeproj/christopherjohnson.pbxuser index 5aa8db5..fd77959 100755 --- a/plugins/MacAU/Noise/Noise.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Noise/Noise.xcodeproj/christopherjohnson.pbxuser @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 538271590; - PBXWorkspaceStateSaveDate = 538271590; + PBXPerProjectTemplateStateSaveDate = 569651243; + PBXWorkspaceStateSaveDate = 569651243; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -58,10 +58,10 @@ }; 8BA05A660720730100365D66 /* Noise.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {934, 6162}}"; - sepNavSelRange = "{17598, 1}"; - sepNavVisRange = "{16371, 1511}"; - sepNavWindowFrame = "{{449, 62}, {981, 816}}"; + sepNavIntBoundsRect = "{{0, 0}, {934, 5928}}"; + sepNavSelRange = "{13301, 0}"; + sepNavVisRange = "{10580, 1962}"; + sepNavWindowFrame = "{{302, 62}, {981, 816}}"; }; }; 8BA05A680720730100365D66 /* Noise.r */ = { @@ -82,10 +82,10 @@ }; 8BC6025B073B072D006C4272 /* Noise.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {934, 1911}}"; - sepNavSelRange = "{3042, 0}"; - sepNavVisRange = "{1672, 2009}"; - sepNavWindowFrame = "{{763, 62}, {981, 816}}"; + sepNavIntBoundsRect = "{{0, 0}, {934, 2223}}"; + sepNavSelRange = "{5824, 0}"; + sepNavVisRange = "{4614, 1330}"; + sepNavWindowFrame = "{{459, 62}, {981, 816}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/Noise/Noise.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Noise/Noise.xcodeproj/christopherjohnson.perspectivev3 index bc7c41e..3d7c6a5 100755 --- a/plugins/MacAU/Noise/Noise.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Noise/Noise.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>810</integer> + <integer>810</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>614 382 810 487 0 0 1440 878 </string> + <string>455 339 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -363,7 +361,7 @@ <key>Frame</key> <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> - <string>614 382 810 487 0 0 1440 878 </string> + <string>455 339 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -387,8 +385,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> - <key>RubberWindowFrame</key> - <string>614 382 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -442,7 +438,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {603, 414}}</string> + <key>RubberWindowFrame</key> + <string>455 339 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -470,11 +468,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BA11D6C20155F6900D31247</string> + <string>8B792E4721F430DD006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BA11D6D20155F6900D31247</string> + <string>8B792E4821F430DD006E9731</string> <string>8B6FC0582010B87E003CA5F7</string> - <string>8BA11D6E20155F6900D31247</string> + <string>8B792E4921F430DD006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -627,7 +625,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>538274889.58884597</real> + <real>569651421.60977602</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -647,7 +645,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/Noise/Noise.xcodeproj</string> </array> <key>WindowString</key> - <string>614 382 810 487 0 0 1440 878 </string> + <string>455 339 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/NonlinearSpace/NonlinearSpace.cpp b/plugins/MacAU/NonlinearSpace/NonlinearSpace.cpp index 4c11ff3..d91e997 100755 --- a/plugins/MacAU/NonlinearSpace/NonlinearSpace.cpp +++ b/plugins/MacAU/NonlinearSpace/NonlinearSpace.cpp @@ -408,11 +408,8 @@ ComponentResult NonlinearSpace::Reset(AudioUnitScope inScope, AudioUnitElement countdown = -1; flip = true; - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; return noErr; } @@ -430,9 +427,6 @@ OSStatus NonlinearSpace::ProcessBufferLists(AudioUnitRenderActionFlags & ioActi Float32 * inputR = (Float32*)(inBuffer.mBuffers[1].mData); Float32 * outputL = (Float32*)(outBuffer.mBuffers[0].mData); Float32 * outputR = (Float32*)(outBuffer.mBuffers[1].mData); - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; UInt32 nSampleFrames = inFramesToProcess; long double drySampleL; long double drySampleR; @@ -1161,25 +1155,14 @@ OSStatus NonlinearSpace::ProcessBufferLists(AudioUnitRenderActionFlags & ioActi drySampleR += inputSampleR; //here we combine the tanks with the dry signal - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = drySampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((drySampleL-fpTemp)*fpNew); - drySampleL += fpNShapeAL; - fpTemp = drySampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((drySampleR-fpTemp)*fpNew); - drySampleR += fpNShapeAR; - } - else { - fpTemp = drySampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((drySampleL-fpTemp)*fpNew); - drySampleL += fpNShapeBL; - fpTemp = drySampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((drySampleR-fpTemp)*fpNew); - drySampleR += fpNShapeBR; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((Float32)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither flip = !flip; *outputL = drySampleL; diff --git a/plugins/MacAU/NonlinearSpace/NonlinearSpace.h b/plugins/MacAU/NonlinearSpace/NonlinearSpace.h index 4e1fa8c..2c9b3d0 100755 --- a/plugins/MacAU/NonlinearSpace/NonlinearSpace.h +++ b/plugins/MacAU/NonlinearSpace/NonlinearSpace.h @@ -293,12 +293,8 @@ private: Float64 nonlin; - - Float64 fpNShapeAL; - Float64 fpNShapeAR; - Float64 fpNShapeBL; - Float64 fpNShapeBR; - bool fpFlip; + Float64 fpNShapeR; + Float64 fpNShapeL; }; diff --git a/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.pbxuser index 3db0ed1..2fc6ea7 100755 --- a/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.pbxuser @@ -49,28 +49,28 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 541885687; - PBXWorkspaceStateSaveDate = 541885687; + PBXPerProjectTemplateStateSaveDate = 569651447; + PBXWorkspaceStateSaveDate = 569651447; }; perUserProjectItems = { - 8B18199D204B916F00516BEE /* PBXTextBookmark */ = 8B18199D204B916F00516BEE /* PBXTextBookmark */; - 8B181A99204C8C0B00516BEE /* PBXTextBookmark */ = 8B181A99204C8C0B00516BEE /* PBXTextBookmark */; + 8B792E5721F4316F006E9731 /* PBXTextBookmark */ = 8B792E5721F4316F006E9731 /* PBXTextBookmark */; + 8B792E5D21F4318F006E9731 /* PBXTextBookmark */ = 8B792E5D21F4318F006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B18199D204B916F00516BEE /* PBXTextBookmark */ = { + 8B792E5721F4316F006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A690720730100365D66 /* NonlinearSpaceVersion.h */; name = "NonlinearSpaceVersion.h: 54"; rLen = 0; rLoc = 2930; rType = 0; - vrLen = 291; - vrLoc = 2693; + vrLen = 242; + vrLoc = 2742; }; - 8B181A99204C8C0B00516BEE /* PBXTextBookmark */ = { + 8B792E5D21F4318F006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A690720730100365D66 /* NonlinearSpaceVersion.h */; name = "NonlinearSpaceVersion.h: 54"; @@ -82,10 +82,10 @@ }; 8BA05A660720730100365D66 /* NonlinearSpace.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {950, 15535}}"; - sepNavSelRange = "{48346, 16}"; - sepNavVisRange = "{47066, 1488}"; - sepNavWindowFrame = "{{443, 40}, {997, 838}}"; + sepNavIntBoundsRect = "{{0, 0}, {1020, 15964}}"; + sepNavSelRange = "{16757, 0}"; + sepNavVisRange = "{15636, 1745}"; + sepNavWindowFrame = "{{278, 40}, {997, 838}}"; }; }; 8BA05A670720730100365D66 /* NonlinearSpace.exp */ = { @@ -97,7 +97,7 @@ }; 8BA05A690720730100365D66 /* NonlinearSpaceVersion.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {803, 897}}"; + sepNavIntBoundsRect = "{{0, 0}, {803, 910}}"; sepNavSelRange = "{2930, 0}"; sepNavVisRange = "{2742, 242}"; sepNavWindowFrame = "{{15, 40}, {997, 838}}"; @@ -105,9 +105,9 @@ }; 8BC6025B073B072D006C4272 /* NonlinearSpace.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {950, 4004}}"; - sepNavSelRange = "{3309, 0}"; - sepNavVisRange = "{9015, 1297}"; + sepNavIntBoundsRect = "{{0, 0}, {950, 4446}}"; + sepNavSelRange = "{10101, 0}"; + sepNavVisRange = "{8847, 1404}"; sepNavWindowFrame = "{{443, 40}, {997, 838}}"; }; }; diff --git a/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.perspectivev3 index 71cc409..93eb68c 100755 --- a/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>810</integer> + <integer>810</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>605 353 810 487 0 0 1440 878 </string> + <string>474 350 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,10 +350,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B181A99204C8C0B00516BEE</string> + <string>8B792E5D21F4318F006E9731</string> <key>history</key> <array> - <string>8B18199D204B916F00516BEE</string> + <string>8B792E5721F4316F006E9731</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +367,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 117}}</string> + <string>{{0, 0}, {603, 102}}</string> <key>RubberWindowFrame</key> - <string>605 353 810 487 0 0 1440 878 </string> + <string>474 350 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>117pt</string> + <string>102pt</string> </dict> <dict> <key>Proportion</key> - <string>324pt</string> + <string>339pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +392,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 297}}</string> - <key>RubberWindowFrame</key> - <string>605 353 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 312}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -450,7 +446,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {603, 312}}</string> + <key>RubberWindowFrame</key> + <string>474 350 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -478,11 +476,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B181A9A204C8C0B00516BEE</string> + <string>8B792E5E21F4318F006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B181A9B204C8C0B00516BEE</string> + <string>8B792E5F21F4318F006E9731</string> <string>8BCA70082027EAB800D92BAD</string> - <string>8B181A9C204C8C0B00516BEE</string> + <string>8B792E6021F4318F006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +633,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>541887499.900267</real> + <real>569651599.64848602</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,10 +650,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> + <string>8B792E6121F4318F006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj</string> </array> <key>WindowString</key> - <string>605 353 810 487 0 0 1440 878 </string> + <string>474 350 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/NotJustAnotherCD/NotJustAnotherCD.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/NotJustAnotherCD/NotJustAnotherCD.xcodeproj/christopherjohnson.pbxuser index f4dc55f..f23ecda 100755 --- a/plugins/MacAU/NotJustAnotherCD/NotJustAnotherCD.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/NotJustAnotherCD/NotJustAnotherCD.xcodeproj/christopherjohnson.pbxuser @@ -49,13 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528457201; - PBXWorkspaceStateSaveDate = 528457201; + PBXPerProjectTemplateStateSaveDate = 568767039; + PBXWorkspaceStateSaveDate = 568767039; }; perUserProjectItems = { 8B5B839E1E419C8A00ECA542 /* PlistBookmark */ = 8B5B839E1E419C8A00ECA542 /* PlistBookmark */; - 8B9D65E71F7C8B79007AB60F /* PBXTextBookmark */ = 8B9D65E71F7C8B79007AB60F /* PBXTextBookmark */; - 8B9D752B1F7F9E40007AB60F /* PBXTextBookmark */ = 8B9D752B1F7F9E40007AB60F /* PBXTextBookmark */; + 8BAF09C721E6BA6000C38394 /* PBXTextBookmark */ = 8BAF09C721E6BA6000C38394 /* PBXTextBookmark */; + 8BBB307421B7EF7400825986 /* PBXTextBookmark */ = 8BBB307421B7EF7400825986 /* PBXTextBookmark */; + 8BBB307621B7EF7400825986 /* PBXTextBookmark */ = 8BBB307621B7EF7400825986 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -73,41 +74,51 @@ rLen = 0; rLoc = 9223372036854775808; }; - 8B9D65E71F7C8B79007AB60F /* PBXTextBookmark */ = { + 8BA05A660720730100365D66 /* NotJustAnotherCD.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {691, 3991}}"; + sepNavSelRange = "{9514, 0}"; + sepNavVisRange = "{9386, 305}"; + sepNavWindowFrame = "{{517, 41}, {923, 837}}"; + }; + }; + 8BA05A690720730100365D66 /* NotJustAnotherCDVersion.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {803, 819}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 561}"; + sepNavWindowFrame = "{{15, 39}, {923, 837}}"; + }; + }; + 8BAF09C721E6BA6000C38394 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BA05A690720730100365D66 /* NotJustAnotherCDVersion.h */; - name = "NotJustAnotherCDVersion.h: 1"; + fRef = 8BA05A660720730100365D66 /* NotJustAnotherCD.cpp */; + name = "NotJustAnotherCD.cpp: 221"; rLen = 0; - rLoc = 0; + rLoc = 9514; rType = 0; - vrLen = 756; - vrLoc = 0; + vrLen = 305; + vrLoc = 9386; }; - 8B9D752B1F7F9E40007AB60F /* PBXTextBookmark */ = { + 8BBB307421B7EF7400825986 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A690720730100365D66 /* NotJustAnotherCDVersion.h */; name = "NotJustAnotherCDVersion.h: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 665; + vrLen = 561; vrLoc = 0; }; - 8BA05A660720730100365D66 /* NotJustAnotherCD.cpp */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {876, 4082}}"; - sepNavSelRange = "{8015, 0}"; - sepNavVisRange = "{7112, 2405}"; - sepNavWindowFrame = "{{464, 41}, {923, 837}}"; - }; - }; - 8BA05A690720730100365D66 /* NotJustAnotherCDVersion.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {803, 806}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 665}"; - sepNavWindowFrame = "{{15, 39}, {923, 837}}"; - }; + 8BBB307621B7EF7400825986 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* NotJustAnotherCD.cpp */; + name = "NotJustAnotherCD.cpp: 221"; + rLen = 0; + rLoc = 9514; + rType = 0; + vrLen = 393; + vrLoc = 9386; }; 8BC6025B073B072D006C4272 /* NotJustAnotherCD.h */ = { uiCtxt = { diff --git a/plugins/MacAU/NotJustAnotherCD/NotJustAnotherCD.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/NotJustAnotherCD/NotJustAnotherCD.xcodeproj/christopherjohnson.perspectivev3 index 2032d51..0ddef39 100755 --- a/plugins/MacAU/NotJustAnotherCD/NotJustAnotherCD.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/NotJustAnotherCD/NotJustAnotherCD.xcodeproj/christopherjohnson.perspectivev3 @@ -341,7 +341,7 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274A1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>NotJustAnotherCDVersion.h</string> + <string>NotJustAnotherCD.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -349,15 +349,16 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274B1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>NotJustAnotherCDVersion.h</string> + <string>NotJustAnotherCD.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D752B1F7F9E40007AB60F</string> + <string>8BAF09C721E6BA6000C38394</string> <key>history</key> <array> <string>8B5B839E1E419C8A00ECA542</string> - <string>8B9D65E71F7C8B79007AB60F</string> + <string>8BBB307421B7EF7400825986</string> + <string>8BBB307621B7EF7400825986</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +372,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 229}}</string> + <string>{{0, 0}, {531, 188}}</string> <key>RubberWindowFrame</key> <string>405 167 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>229pt</string> + <string>188pt</string> </dict> <dict> <key>Proportion</key> - <string>379pt</string> + <string>420pt</string> <key>Tabs</key> <array> <dict> @@ -396,7 +397,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 352}}</string> + <string>{{10, 27}, {531, 393}}</string> <key>RubberWindowFrame</key> <string>405 167 841 654 0 0 1440 878 </string> </dict> @@ -480,11 +481,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D752C1F7F9E40007AB60F</string> + <string>8BAF09C821E6BA6000C38394</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D752D1F7F9E40007AB60F</string> + <string>8BAF09C921E6BA6000C38394</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D752E1F7F9E40007AB60F</string> + <string>8BAF09CA21E6BA6000C38394</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -657,7 +658,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528457280.83582401</real> + <real>568769120.05031896</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -674,7 +675,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D752F1F7F9E40007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/NotJustAnotherCD/NotJustAnotherCD.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacAU/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.pbxuser index d3268bb..3aee3d6 100755 --- a/plugins/MacAU/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.pbxuser @@ -49,38 +49,18 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 557543049; - PBXWorkspaceStateSaveDate = 557543049; + PBXPerProjectTemplateStateSaveDate = 568766952; + PBXWorkspaceStateSaveDate = 568766952; }; perUserProjectItems = { - 8B39A172213B703300112CCA /* PBXTextBookmark */ = 8B39A172213B703300112CCA /* PBXTextBookmark */; - 8B39A173213B703300112CCA /* PBXTextBookmark */ = 8B39A173213B703300112CCA /* PBXTextBookmark */; 8B8D6A12207ABF2E0029B7B0 /* PlistBookmark */ = 8B8D6A12207ABF2E0029B7B0 /* PlistBookmark */; + 8BAF09C221E6BA5C00C38394 /* PBXTextBookmark */ = 8BAF09C221E6BA5C00C38394 /* PBXTextBookmark */; + 8BBB2F6D21B620F100825986 /* PBXTextBookmark */ = 8BBB2F6D21B620F100825986 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B39A172213B703300112CCA /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* NotJustAnotherDither.cpp */; - name = "NotJustAnotherDither.cpp: 190"; - rLen = 0; - rLoc = 8123; - rType = 0; - vrLen = 447; - vrLoc = 8049; - }; - 8B39A173213B703300112CCA /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* NotJustAnotherDither.cpp */; - name = "NotJustAnotherDither.cpp: 190"; - rLen = 0; - rLoc = 8123; - rType = 0; - vrLen = 447; - vrLoc = 8049; - }; 8B8D6A12207ABF2E0029B7B0 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; @@ -95,10 +75,10 @@ }; 8BA05A660720730100365D66 /* NotJustAnotherDither.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {705, 4004}}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 4082}}"; sepNavSelRange = "{8123, 0}"; - sepNavVisRange = "{8049, 447}"; - sepNavWindowFrame = "{{818, 41}, {923, 837}}"; + sepNavVisRange = "{8086, 233}"; + sepNavWindowFrame = "{{517, 41}, {923, 837}}"; }; }; 8BA05A680720730100365D66 /* NotJustAnotherDither.r */ = { @@ -117,10 +97,30 @@ sepNavWindowFrame = "{{15, 39}, {923, 837}}"; }; }; + 8BAF09C221E6BA5C00C38394 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* NotJustAnotherDither.cpp */; + name = "NotJustAnotherDither.cpp: 190"; + rLen = 0; + rLoc = 8123; + rType = 0; + vrLen = 233; + vrLoc = 8086; + }; + 8BBB2F6D21B620F100825986 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* NotJustAnotherDither.cpp */; + name = "NotJustAnotherDither.cpp: 190"; + rLen = 0; + rLoc = 8123; + rType = 0; + vrLen = 253; + vrLoc = 8066; + }; 8BC6025B073B072D006C4272 /* NotJustAnotherDither.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {894, 1716}}"; - sepNavSelRange = "{5108, 28}"; + sepNavSelRange = "{4975, 0}"; sepNavVisRange = "{3502, 1743}"; sepNavWindowFrame = "{{517, 39}, {923, 837}}"; }; diff --git a/plugins/MacAU/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.perspectivev3 index 7bc8b6d..faa330c 100755 --- a/plugins/MacAU/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.perspectivev3 @@ -325,7 +325,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>572 175 841 654 0 0 1440 878 </string> + <string>780 134 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -353,11 +353,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B39A173213B703300112CCA</string> + <string>8BAF09C221E6BA5C00C38394</string> <key>history</key> <array> <string>8B8D6A12207ABF2E0029B7B0</string> - <string>8B39A172213B703300112CCA</string> + <string>8BBB2F6D21B620F100825986</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 158}}</string> + <string>{{0, 0}, {531, 109}}</string> <key>RubberWindowFrame</key> - <string>572 175 841 654 0 0 1440 878 </string> + <string>780 134 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>158pt</string> + <string>109pt</string> </dict> <dict> <key>Proportion</key> - <string>450pt</string> + <string>499pt</string> <key>Tabs</key> <array> <dict> @@ -396,9 +396,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 423}}</string> + <string>{{10, 27}, {531, 472}}</string> <key>RubberWindowFrame</key> - <string>572 175 841 654 0 0 1440 878 </string> + <string>780 134 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -480,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B39A174213B703300112CCA</string> + <string>8BAF09C321E6BA5C00C38394</string> <string>1CA23ED40692098700951B8B</string> - <string>8B39A175213B703300112CCA</string> + <string>8BAF09C421E6BA5C00C38394</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B39A176213B703300112CCA</string> + <string>8BAF09C521E6BA5C00C38394</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -657,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>557543475.44966102</real> + <real>568769116.18578196</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -674,11 +674,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B39A177213B703300112CCA</string> + <string>8BAF09C621E6BA5C00C38394</string> <string>/Users/christopherjohnson/Desktop/MacAU/NotJustAnotherDither/NotJustAnotherDither.xcodeproj</string> </array> <key>WindowString</key> - <string>572 175 841 654 0 0 1440 878 </string> + <string>780 134 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/OneCornerClip/OneCornerClip.cpp b/plugins/MacAU/OneCornerClip/OneCornerClip.cpp index db4dcd0..9ddb8db 100755 --- a/plugins/MacAU/OneCornerClip/OneCornerClip.cpp +++ b/plugins/MacAU/OneCornerClip/OneCornerClip.cpp @@ -193,9 +193,7 @@ void OneCornerClip::OneCornerClipKernel::Reset() lastSample = 0.0; limitPos = 0.0; limitNeg = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -213,9 +211,6 @@ void OneCornerClip::OneCornerClipKernel::Process( const Float32 *inSourceP, long double overallscale = 1.0; overallscale /= 44100.0; overallscale *= GetSampleRate(); - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; Float64 inputGain = pow(10.0,(GetParameter( kParam_One ))/20.0); Float64 posThreshold = pow(10.0,(GetParameter( kParam_Two ))/20.0); @@ -309,21 +304,11 @@ void OneCornerClip::OneCornerClipKernel::Process( const Float32 *inSourceP, inputSample = (inputSample * wet) + (drySample * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = not fpFlip; - //end noise shaping on 32 bit output - //we are making an 80 bit arbitrary curve, woot - //at least we can say it's either 80 bit or pure bypass + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither if (clipEngage == false) { diff --git a/plugins/MacAU/OneCornerClip/OneCornerClip.h b/plugins/MacAU/OneCornerClip/OneCornerClip.h index 0931824..013fc94 100755 --- a/plugins/MacAU/OneCornerClip/OneCornerClip.h +++ b/plugins/MacAU/OneCornerClip/OneCornerClip.h @@ -140,9 +140,7 @@ public: Float64 lastSample; Float64 limitPos; Float64 limitNeg; - Float64 fpNShapeA; - Float64 fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.pbxuser index 13fb85a..872b672 100755 --- a/plugins/MacAU/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.pbxuser @@ -49,59 +49,59 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 541882937; - PBXWorkspaceStateSaveDate = 541882937; + PBXPerProjectTemplateStateSaveDate = 569651957; + PBXWorkspaceStateSaveDate = 569651957; }; perUserProjectItems = { - 8B181972204B914C00516BEE /* PBXTextBookmark */ = 8B181972204B914C00516BEE /* PBXTextBookmark */; - 8B181A47204C83CC00516BEE /* PBXTextBookmark */ = 8B181A47204C83CC00516BEE /* PBXTextBookmark */; + 8B792E6F21F43380006E9731 /* PBXTextBookmark */ = 8B792E6F21F43380006E9731 /* PBXTextBookmark */; + 8B792E7421F43391006E9731 /* PBXTextBookmark */ = 8B792E7421F43391006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B181972204B914C00516BEE /* PBXTextBookmark */ = { + 8B792E6F21F43380006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A690720730100365D66 /* OneCornerClipVersion.h */; name = "OneCornerClipVersion.h: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 240; + vrLen = 187; vrLoc = 2736; }; - 8B181A47204C83CC00516BEE /* PBXTextBookmark */ = { + 8B792E7421F43391006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A690720730100365D66 /* OneCornerClipVersion.h */; name = "OneCornerClipVersion.h: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 239; + vrLen = 187; vrLoc = 2736; }; 8BA05A660720730100365D66 /* OneCornerClip.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {885, 4251}}"; - sepNavSelRange = "{13850, 0}"; - sepNavVisRange = "{9777, 2480}"; - sepNavWindowFrame = "{{488, 63}, {932, 815}}"; + sepNavIntBoundsRect = "{{0, 0}, {885, 4667}}"; + sepNavSelRange = "{13380, 0}"; + sepNavVisRange = "{12469, 1116}"; + sepNavWindowFrame = "{{356, 63}, {932, 815}}"; }; }; 8BA05A690720730100365D66 /* OneCornerClipVersion.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {803, 949}}"; + sepNavIntBoundsRect = "{{0, 0}, {803, 936}}"; sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{2736, 239}"; + sepNavVisRange = "{2736, 187}"; sepNavWindowFrame = "{{15, 58}, {932, 815}}"; }; }; 8BC6025B073B072D006C4272 /* OneCornerClip.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {894, 1976}}"; - sepNavSelRange = "{5638, 62}"; - sepNavVisRange = "{0, 2780}"; - sepNavWindowFrame = "{{837, 56}, {932, 815}}"; + sepNavSelRange = "{5723, 0}"; + sepNavVisRange = "{4252, 1581}"; + sepNavWindowFrame = "{{508, 56}, {932, 815}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.perspectivev3 index 84e772a..73a7a50 100755 --- a/plugins/MacAU/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -300,7 +298,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>4</integer> + <integer>3</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>630 365 810 487 0 0 1440 878 </string> + <string>428 370 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,10 +350,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B181A47204C83CC00516BEE</string> + <string>8B792E7421F43391006E9731</string> <key>history</key> <array> - <string>8B181972204B914C00516BEE</string> + <string>8B792E6F21F43380006E9731</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +367,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 117}}</string> + <string>{{0, 0}, {603, 102}}</string> <key>RubberWindowFrame</key> - <string>630 365 810 487 0 0 1440 878 </string> + <string>428 370 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>117pt</string> + <string>102pt</string> </dict> <dict> <key>Proportion</key> - <string>324pt</string> + <string>339pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +392,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 297}}</string> - <key>RubberWindowFrame</key> - <string>630 365 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 312}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -450,7 +446,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 312}}</string> + <key>RubberWindowFrame</key> + <string>428 370 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -478,11 +476,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B181A48204C83CC00516BEE</string> + <string>8B792E7521F43391006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B181A49204C83CC00516BEE</string> + <string>8B792E7621F43391006E9731</string> <string>8BCA0F591D871CB100A4EFAF</string> - <string>8B181A4A204C83CC00516BEE</string> + <string>8B792E7721F43391006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +633,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>541885388.89707994</real> + <real>569652113.25814903</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,11 +650,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B181A4B204C83CC00516BEE</string> <string>/Users/christopherjohnson/Desktop/MacAU/OneCornerClip/OneCornerClip.xcodeproj</string> </array> <key>WindowString</key> - <string>630 365 810 487 0 0 1440 878 </string> + <string>428 370 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/PDBuss/PDBuss.cpp b/plugins/MacAU/PDBuss/PDBuss.cpp index 5e27a7c..6f450c6 100755 --- a/plugins/MacAU/PDBuss/PDBuss.cpp +++ b/plugins/MacAU/PDBuss/PDBuss.cpp @@ -170,9 +170,7 @@ void PDBuss::PDBussKernel::Reset() settingchase = -90.0; chasespeed = 350.0; previousSample = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -187,10 +185,6 @@ void PDBuss::PDBussKernel::Process( const Float32 *inSourceP, UInt32 nSampleFrames = inFramesToProcess; const Float32 *sourceP = inSourceP; Float32 *destP = inDestP; - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - Float64 inputgain = GetParameter( kParam_One ); Float64 intensity = GetParameter( kParam_Two ); Float64 apply; @@ -265,19 +259,11 @@ void PDBuss::PDBussKernel::Process( const Float32 *inSourceP, previousSample = sin(drySample); //apply the sine while storing previous sample - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/PDBuss/PDBuss.h b/plugins/MacAU/PDBuss/PDBuss.h index 906cb85..476b436 100755 --- a/plugins/MacAU/PDBuss/PDBuss.h +++ b/plugins/MacAU/PDBuss/PDBuss.h @@ -132,9 +132,7 @@ public: Float64 settingchase; Float64 chasespeed; Float64 previousSample; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/PDBuss/PDBuss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PDBuss/PDBuss.xcodeproj/christopherjohnson.pbxuser index f1228a5..40d8bcc 100755 --- a/plugins/MacAU/PDBuss/PDBuss.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/PDBuss/PDBuss.xcodeproj/christopherjohnson.pbxuser @@ -49,14 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 538696879; - PBXWorkspaceStateSaveDate = 538696879; + PBXPerProjectTemplateStateSaveDate = 569652165; + PBXWorkspaceStateSaveDate = 569652165; }; perUserProjectItems = { 8B4E5518201BB8EE00B5DC2A /* PlistBookmark */ = 8B4E5518201BB8EE00B5DC2A /* PlistBookmark */; - 8B4E573F201BE1D700B5DC2A /* PBXTextBookmark */ = 8B4E573F201BE1D700B5DC2A /* PBXTextBookmark */; - 8B4E5740201BE1D700B5DC2A /* PBXBookmark */ = 8B4E5740201BE1D700B5DC2A /* PBXBookmark */; - 8B4E5741201BE1D700B5DC2A /* PBXTextBookmark */ = 8B4E5741201BE1D700B5DC2A /* PBXTextBookmark */; + 8B792E8621F43436006E9731 /* PBXTextBookmark */ = 8B792E8621F43436006E9731 /* PBXTextBookmark */; + 8B792E8721F43436006E9731 /* PBXTextBookmark */ = 8B792E8721F43436006E9731 /* PBXTextBookmark */; + 8B792E8C21F43451006E9731 /* PBXTextBookmark */ = 8B792E8C21F43451006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -74,36 +74,42 @@ rLen = 0; rLoc = 9223372036854775808; }; - 8B4E573F201BE1D700B5DC2A /* PBXTextBookmark */ = { + 8B792E8621F43436006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* PDBuss.cpp */; + name = "PDBuss.cpp: 165"; + rLen = 0; + rLoc = 7437; + rType = 0; + vrLen = 1; + vrLoc = 7311; + }; + 8B792E8721F43436006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* PDBuss.h */; name = "PDBuss.h: 68"; rLen = 0; rLoc = 3175; rType = 0; - vrLen = 29; - vrLoc = 2587; + vrLen = 26; + vrLoc = 2590; }; - 8B4E5740201BE1D700B5DC2A /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 8BA05A660720730100365D66 /* PDBuss.cpp */; - }; - 8B4E5741201BE1D700B5DC2A /* PBXTextBookmark */ = { + 8B792E8C21F43451006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* PDBuss.cpp */; - name = "PDBuss.cpp: 165"; + fRef = 8BC6025B073B072D006C4272 /* PDBuss.h */; + name = "PDBuss.h: 68"; rLen = 0; - rLoc = 7437; + rLoc = 3175; rType = 0; - vrLen = 95; - vrLoc = 7310; + vrLen = 26; + vrLoc = 2590; }; 8BA05A660720730100365D66 /* PDBuss.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {656, 3887}}"; - sepNavSelRange = "{7437, 0}"; - sepNavVisRange = "{7310, 95}"; - sepNavWindowFrame = "{{489, 50}, {923, 828}}"; + sepNavIntBoundsRect = "{{0, 0}, {876, 3822}}"; + sepNavSelRange = "{11537, 0}"; + sepNavVisRange = "{9680, 1945}"; + sepNavWindowFrame = "{{352, 50}, {923, 828}}"; }; }; 8BA05A690720730100365D66 /* PDBussVersion.h */ = { @@ -116,9 +122,9 @@ }; 8BC6025B073B072D006C4272 /* PDBuss.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1703}}"; + sepNavIntBoundsRect = "{{0, 0}, {761, 1885}}"; sepNavSelRange = "{3175, 0}"; - sepNavVisRange = "{2035, 1751}"; + sepNavVisRange = "{2590, 26}"; sepNavWindowFrame = "{{506, 50}, {923, 828}}"; }; }; diff --git a/plugins/MacAU/PDBuss/PDBuss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/PDBuss/PDBuss.xcodeproj/christopherjohnson.perspectivev3 index c01d4ac..ba04652 100755 --- a/plugins/MacAU/PDBuss/PDBuss.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/PDBuss/PDBuss.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>841</integer> - <integer>841</integer> + <integer>775</integer> + <integer>775</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -326,7 +324,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>656 383 775 495 0 0 1440 878 </string> + <string>528 353 775 495 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -342,7 +340,7 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274A1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>PDBuss.cpp</string> + <string>PDBuss.h</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -350,16 +348,16 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274B1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>PDBuss.cpp</string> + <string>PDBuss.h</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B4E5741201BE1D700B5DC2A</string> + <string>8B792E8C21F43451006E9731</string> <key>history</key> <array> <string>8B4E5518201BB8EE00B5DC2A</string> - <string>8B4E573F201BE1D700B5DC2A</string> - <string>8B4E5740201BE1D700B5DC2A</string> + <string>8B792E8621F43436006E9731</string> + <string>8B792E8721F43436006E9731</string> </array> </dict> <key>SplitCount</key> @@ -373,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {465, 52}}</string> + <string>{{0, 0}, {465, 33}}</string> <key>RubberWindowFrame</key> - <string>656 383 775 495 0 0 1440 878 </string> + <string>528 353 775 495 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>52pt</string> + <string>33pt</string> </dict> <dict> <key>Proportion</key> - <string>397pt</string> + <string>416pt</string> <key>Tabs</key> <array> <dict> @@ -398,9 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {465, 370}}</string> - <key>RubberWindowFrame</key> - <string>656 383 775 495 0 0 1440 878 </string> + <string>{{10, 27}, {465, 389}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -454,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 339}}</string> + <string>{{10, 27}, {465, 389}}</string> + <key>RubberWindowFrame</key> + <string>528 353 775 495 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -482,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B4E5742201BE1D700B5DC2A</string> + <string>8B792E8D21F43451006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B4E5743201BE1D700B5DC2A</string> + <string>8B792E8E21F43451006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B4E5744201BE1D700B5DC2A</string> + <string>8B792E8F21F43451006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -659,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>538698199.879107</real> + <real>569652305.95869505</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -679,7 +677,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/PDBuss/PDBuss.xcodeproj</string> </array> <key>WindowString</key> - <string>656 383 775 495 0 0 1440 878 </string> + <string>528 353 775 495 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/PDChannel/PDChannel.cpp b/plugins/MacAU/PDChannel/PDChannel.cpp index d0e684f..1571b15 100755 --- a/plugins/MacAU/PDChannel/PDChannel.cpp +++ b/plugins/MacAU/PDChannel/PDChannel.cpp @@ -170,9 +170,7 @@ void PDChannel::PDChannelKernel::Reset() settingchase = -90.0; chasespeed = 350.0; previousSample = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -189,11 +187,7 @@ void PDChannel::PDChannelKernel::Process( const Float32 *inSourceP, Float32 *destP = inDestP; long double overallscale = 1.0; overallscale /= 44100.0; - overallscale *= GetSampleRate(); - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + overallscale *= GetSampleRate(); Float64 inputgain = GetParameter( kParam_One ); Float64 intensity = GetParameter( kParam_Two ); Float64 apply; @@ -271,19 +265,11 @@ void PDChannel::PDChannelKernel::Process( const Float32 *inSourceP, previousSample = sin(drySample); //apply the sine while storing previous sample - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/PDChannel/PDChannel.h b/plugins/MacAU/PDChannel/PDChannel.h index 4a793af..523f789 100755 --- a/plugins/MacAU/PDChannel/PDChannel.h +++ b/plugins/MacAU/PDChannel/PDChannel.h @@ -132,9 +132,7 @@ public: Float64 settingchase; Float64 chasespeed; Float64 previousSample; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/PDChannel/PDChannel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PDChannel/PDChannel.xcodeproj/christopherjohnson.pbxuser index 6a15292..f328d19 100755 --- a/plugins/MacAU/PDChannel/PDChannel.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/PDChannel/PDChannel.xcodeproj/christopherjohnson.pbxuser @@ -49,13 +49,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 538696889; - PBXWorkspaceStateSaveDate = 538696889; + PBXPerProjectTemplateStateSaveDate = 569652339; + PBXWorkspaceStateSaveDate = 569652339; }; perUserProjectItems = { 8B4E5745201BE1DA00B5DC2A /* PlistBookmark */ = 8B4E5745201BE1DA00B5DC2A /* PlistBookmark */; - 8B4E5746201BE1DA00B5DC2A /* PBXBookmark */ = 8B4E5746201BE1DA00B5DC2A /* PBXBookmark */; - 8B4E5747201BE1DA00B5DC2A /* PBXTextBookmark */ = 8B4E5747201BE1DA00B5DC2A /* PBXTextBookmark */; + 8B792E9E21F434CF006E9731 /* PBXTextBookmark */ = 8B792E9E21F434CF006E9731 /* PBXTextBookmark */; + 8B792EA321F434E3006E9731 /* PBXTextBookmark */ = 8B792EA321F434E3006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -71,28 +71,34 @@ ); name = /Users/christopherjohnson/Desktop/MacAU/PDChannel/Info.plist; rLen = 0; - rLoc = 9223372036854775807; + rLoc = 9223372036854775808; }; - 8B4E5746201BE1DA00B5DC2A /* PBXBookmark */ = { - isa = PBXBookmark; + 8B792E9E21F434CF006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* PDChannel.cpp */; + name = "PDChannel.cpp: 241"; + rLen = 0; + rLoc = 10674; + rType = 0; + vrLen = 0; + vrLoc = 0; }; - 8B4E5747201BE1DA00B5DC2A /* PBXTextBookmark */ = { + 8B792EA321F434E3006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* PDChannel.cpp */; - name = "PDChannel.cpp: 247"; + name = "PDChannel.cpp: 241"; rLen = 0; - rLoc = 10826; + rLoc = 10674; rType = 0; vrLen = 0; vrLoc = 0; }; 8BA05A660720730100365D66 /* PDChannel.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {670, 3952}}"; - sepNavSelRange = "{10826, 0}"; + sepNavIntBoundsRect = "{{0, 0}, {328, 3796}}"; + sepNavSelRange = "{10674, 0}"; sepNavVisRange = "{0, 0}"; - sepNavWindowFrame = "{{782, 50}, {923, 828}}"; + sepNavWindowFrame = "{{342, 50}, {923, 828}}"; }; }; 8BA05A690720730100365D66 /* PDChannelVersion.h */ = { @@ -105,10 +111,10 @@ }; 8BC6025B073B072D006C4272 /* PDChannel.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1872}}"; - sepNavSelRange = "{5191, 95}"; - sepNavVisRange = "{3760, 1692}"; - sepNavWindowFrame = "{{15, 45}, {923, 828}}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 1846}}"; + sepNavSelRange = "{5309, 0}"; + sepNavVisRange = "{3711, 1702}"; + sepNavWindowFrame = "{{24, 47}, {923, 828}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/PDChannel/PDChannel.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/PDChannel/PDChannel.xcodeproj/christopherjohnson.perspectivev3 index fd2188d..9a9368c 100755 --- a/plugins/MacAU/PDChannel/PDChannel.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/PDChannel/PDChannel.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>841</integer> - <integer>841</integer> + <integer>687</integer> + <integer>687</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -302,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>4</integer> + <integer>3</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> @@ -326,7 +324,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>748 122 687 476 0 0 1440 878 </string> + <string>528 250 687 476 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -354,11 +352,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B4E5747201BE1DA00B5DC2A</string> + <string>8B792EA321F434E3006E9731</string> <key>history</key> <array> <string>8B4E5745201BE1DA00B5DC2A</string> - <string>8B4E5746201BE1DA00B5DC2A</string> + <string>8B792E9E21F434CF006E9731</string> </array> </dict> <key>SplitCount</key> @@ -372,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {377, 32}}</string> + <string>{{0, 0}, {377, 13}}</string> <key>RubberWindowFrame</key> - <string>748 122 687 476 0 0 1440 878 </string> + <string>528 250 687 476 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>32pt</string> + <string>13pt</string> </dict> <dict> <key>Proportion</key> - <string>398pt</string> + <string>417pt</string> <key>Tabs</key> <array> <dict> @@ -397,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {377, 371}}</string> - <key>RubberWindowFrame</key> - <string>748 122 687 476 0 0 1440 878 </string> + <string>{{10, 27}, {377, 390}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -453,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 339}}</string> + <string>{{10, 27}, {377, 390}}</string> + <key>RubberWindowFrame</key> + <string>528 250 687 476 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -481,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B4E5748201BE1DA00B5DC2A</string> + <string>8B792EA421F434E3006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B4E5749201BE1DA00B5DC2A</string> + <string>8B792EA521F434E3006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B4E574A201BE1DA00B5DC2A</string> + <string>8B792EA621F434E3006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -658,7 +656,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>538698202.06812799</real> + <real>569652451.32998204</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -678,7 +676,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/PDChannel/PDChannel.xcodeproj</string> </array> <key>WindowString</key> - <string>748 122 687 476 0 0 1440 878 </string> + <string>528 250 687 476 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/PaulDither/PaulDither.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PaulDither/PaulDither.xcodeproj/christopherjohnson.pbxuser index c6caac2..89f6a9a 100755 --- a/plugins/MacAU/PaulDither/PaulDither.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/PaulDither/PaulDither.xcodeproj/christopherjohnson.pbxuser @@ -49,13 +49,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528457375; - PBXWorkspaceStateSaveDate = 528457375; + PBXPerProjectTemplateStateSaveDate = 569456916; + PBXWorkspaceStateSaveDate = 569456916; }; perUserProjectItems = { 8B4FD0361DF97CA300999740 /* PBXTextBookmark */ = 8B4FD0361DF97CA300999740 /* PBXTextBookmark */; - 8B9D66051F7C8B97007AB60F /* PBXTextBookmark */ = 8B9D66051F7C8B97007AB60F /* PBXTextBookmark */; - 8B9D75481F7F9EDB007AB60F /* PBXTextBookmark */ = 8B9D75481F7F9EDB007AB60F /* PBXTextBookmark */; + 8B79248021F14291006E9731 /* PBXTextBookmark */ = 8B79248021F14291006E9731 /* PBXTextBookmark */; + 8B79248121F14291006E9731 /* PBXTextBookmark */ = 8B79248121F14291006E9731 /* PBXTextBookmark */; 8BD8CADF1DF8EA3400CC3427 /* PlistBookmark */ = 8BD8CADF1DF8EA3400CC3427 /* PlistBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; @@ -72,32 +72,32 @@ vrLen = 418; vrLoc = 4668; }; - 8B9D66051F7C8B97007AB60F /* PBXTextBookmark */ = { + 8B79248021F14291006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* PaulDither.cpp */; - name = "PaulDither.cpp: 165"; - rLen = 2403; - rLoc = 7419; + name = "PaulDither.cpp: 199"; + rLen = 0; + rLoc = 8989; rType = 0; - vrLen = 364; - vrLoc = 7419; + vrLen = 310; + vrLoc = 7499; }; - 8B9D75481F7F9EDB007AB60F /* PBXTextBookmark */ = { + 8B79248121F14291006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* PaulDither.cpp */; name = "PaulDither.cpp: 199"; rLen = 0; rLoc = 8989; rType = 0; - vrLen = 390; - vrLoc = 7419; + vrLen = 310; + vrLoc = 7499; }; 8BA05A660720730100365D66 /* PaulDither.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {691, 2990}}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 2938}}"; sepNavSelRange = "{8989, 0}"; - sepNavVisRange = "{7419, 390}"; - sepNavWindowFrame = "{{741, 43}, {679, 835}}"; + sepNavVisRange = "{7499, 310}"; + sepNavWindowFrame = "{{694, 43}, {679, 835}}"; }; }; 8BA05A690720730100365D66 /* PaulDitherVersion.h */ = { @@ -110,10 +110,10 @@ }; 8BC6025B073B072D006C4272 /* PaulDither.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1859}}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 1703}}"; sepNavSelRange = "{4959, 26}"; - sepNavVisRange = "{4668, 418}"; - sepNavWindowFrame = "{{677, 43}, {679, 835}}"; + sepNavVisRange = "{3360, 1734}"; + sepNavWindowFrame = "{{26, 43}, {679, 835}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/PaulDither/PaulDither.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/PaulDither/PaulDither.xcodeproj/christopherjohnson.perspectivev3 index cabf404..fb63b78 100755 --- a/plugins/MacAU/PaulDither/PaulDither.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/PaulDither/PaulDither.xcodeproj/christopherjohnson.perspectivev3 @@ -325,7 +325,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>599 185 841 654 0 0 1440 878 </string> + <string>584 182 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -353,12 +353,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D75481F7F9EDB007AB60F</string> + <string>8B79248121F14291006E9731</string> <key>history</key> <array> <string>8BD8CADF1DF8EA3400CC3427</string> <string>8B4FD0361DF97CA300999740</string> - <string>8B9D66051F7C8B97007AB60F</string> + <string>8B79248021F14291006E9731</string> </array> </dict> <key>SplitCount</key> @@ -372,18 +372,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 188}}</string> + <string>{{0, 0}, {531, 158}}</string> <key>RubberWindowFrame</key> - <string>599 185 841 654 0 0 1440 878 </string> + <string>584 182 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>188pt</string> + <string>158pt</string> </dict> <dict> <key>Proportion</key> - <string>420pt</string> + <string>450pt</string> <key>Tabs</key> <array> <dict> @@ -397,9 +397,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 393}}</string> + <string>{{10, 27}, {531, 423}}</string> <key>RubberWindowFrame</key> - <string>599 185 841 654 0 0 1440 878 </string> + <string>584 182 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -481,11 +481,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D75491F7F9EDB007AB60F</string> + <string>8B79248221F14291006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D754A1F7F9EDB007AB60F</string> + <string>8B79248321F14291006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D754B1F7F9EDB007AB60F</string> + <string>8B79248421F14291006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -658,7 +658,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528457435.53434801</real> + <real>569459345.52308798</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -675,11 +675,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D754C1F7F9EDB007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/PaulDither/PaulDither.xcodeproj</string> </array> <key>WindowString</key> - <string>599 185 841 654 0 0 1440 878 </string> + <string>584 182 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/PhaseNudge/PhaseNudge.cpp b/plugins/MacAU/PhaseNudge/PhaseNudge.cpp index a60dc04..abb05e1 100755 --- a/plugins/MacAU/PhaseNudge/PhaseNudge.cpp +++ b/plugins/MacAU/PhaseNudge/PhaseNudge.cpp @@ -168,9 +168,7 @@ void PhaseNudge::PhaseNudgeKernel::Reset() { for(int count = 0; count < 1502; count++) {d[count] = 0.0;} one = 1; maxdelay = 9001; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; //coded to snap directly to the value on instantiation if the disparity is great enough } @@ -186,9 +184,6 @@ void PhaseNudge::PhaseNudgeKernel::Process( const Float32 *inSourceP, UInt32 nSampleFrames = inFramesToProcess; const Float32 *sourceP = inSourceP; Float32 *destP = inDestP; - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; int allpasstemp; Float64 outallpass = 0.618033988749894848204586; //golden ratio! @@ -256,24 +251,13 @@ void PhaseNudge::PhaseNudgeKernel::Process( const Float32 *inSourceP, if (inputSample > 0) inputSample -= bridgerectifier; else inputSample += bridgerectifier; inputSample *= 4.0; - - if (wet < 1.0) inputSample = (drySample * dry)+(inputSample * wet); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output - + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/PhaseNudge/PhaseNudge.exp b/plugins/MacAU/PhaseNudge/PhaseNudge.exp index 6c86d46..a53e4f6 100755 --- a/plugins/MacAU/PhaseNudge/PhaseNudge.exp +++ b/plugins/MacAU/PhaseNudge/PhaseNudge.exp @@ -1 +1 @@ -_PhaseNudgeEntry
\ No newline at end of file +_PhaseNudgeEntry diff --git a/plugins/MacAU/PhaseNudge/PhaseNudge.h b/plugins/MacAU/PhaseNudge/PhaseNudge.h index a82a450..fa655e8 100755 --- a/plugins/MacAU/PhaseNudge/PhaseNudge.h +++ b/plugins/MacAU/PhaseNudge/PhaseNudge.h @@ -130,9 +130,7 @@ public: private: Float64 d[1503]; int one, maxdelay; - Float64 fpNShapeA; - Float64 fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.pbxuser index 31eaa35..90714a5 100755 --- a/plugins/MacAU/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.pbxuser @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528457445; - PBXWorkspaceStateSaveDate = 528457445; + PBXPerProjectTemplateStateSaveDate = 569674908; + PBXWorkspaceStateSaveDate = 569674908; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -58,10 +58,18 @@ }; 8BA05A660720730100365D66 /* PhaseNudge.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {787, 3731}}"; - sepNavSelRange = "{9350, 0}"; - sepNavVisRange = "{9041, 2185}"; - sepNavWindowFrame = "{{594, 72}, {834, 801}}"; + sepNavIntBoundsRect = "{{0, 0}, {787, 3562}}"; + sepNavSelRange = "{8646, 0}"; + sepNavVisRange = "{7424, 2420}"; + sepNavWindowFrame = "{{467, 77}, {834, 801}}"; + }; + }; + 8BA05A670720730100365D66 /* PhaseNudge.exp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1253, 694}}"; + sepNavSelRange = "{17, 0}"; + sepNavVisRange = "{0, 17}"; + sepNavWindowFrame = "{{15, 51}, {1300, 822}}"; }; }; 8BA05A690720730100365D66 /* PhaseNudgeVersion.h */ = { @@ -74,10 +82,10 @@ }; 8BC6025B073B072D006C4272 /* PhaseNudge.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {824, 1794}}"; - sepNavSelRange = "{5126, 97}"; - sepNavVisRange = "{2715, 1561}"; - sepNavWindowFrame = "{{653, 65}, {787, 813}}"; + sepNavIntBoundsRect = "{{0, 0}, {824, 1768}}"; + sepNavSelRange = "{5179, 0}"; + sepNavVisRange = "{3774, 1525}"; + sepNavWindowFrame = "{{436, 61}, {787, 813}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.perspectivev3 index 72f64ac..14864b4 100755 --- a/plugins/MacAU/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>810</integer> + <integer>810</integer> </array> <key>Perspectives</key> <array> @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>4</integer> + <integer>5</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> @@ -324,7 +324,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>614 298 810 487 0 0 1440 878 </string> + <string>500 313 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -363,7 +363,7 @@ <key>Frame</key> <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> - <string>614 298 810 487 0 0 1440 878 </string> + <string>500 313 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -387,8 +387,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> - <key>RubberWindowFrame</key> - <string>614 298 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -442,7 +440,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {603, 414}}</string> + <key>RubberWindowFrame</key> + <string>500 313 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -470,11 +470,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D75591F7F9F0E007AB60F</string> + <string>8B792EBE21F48D58006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D755A1F7F9F0E007AB60F</string> + <string>8B792EBF21F48D58006E9731</string> <string>8B45D5A31DB6A0F4001A01DF</string> - <string>8B9D755B1F7F9F0E007AB60F</string> + <string>8B792EC021F48D58006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -627,7 +627,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528457486.34265399</real> + <real>569675096.38173199</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -644,11 +644,12 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D755C1F7F9F0E007AB60F</string> + <string>8B792EC121F48D58006E9731</string> + <string>8B792EC221F48D58006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/PhaseNudge/PhaseNudge.xcodeproj</string> </array> <key>WindowString</key> - <string>614 298 810 487 0 0 1440 878 </string> + <string>500 313 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Point/Poynt.cpp b/plugins/MacAU/Point/Poynt.cpp index fb51374..b8b7030 100755 --- a/plugins/MacAU/Point/Poynt.cpp +++ b/plugins/MacAU/Point/Poynt.cpp @@ -178,8 +178,7 @@ void Poynt::PoyntKernel::Reset() nobA = 0.0; nibB = 0.0; nobB = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; + fpNShape = 0.0; fpFlip = true; } @@ -216,11 +215,6 @@ void Poynt::PoyntKernel::Process( const Float32 *inSourceP, Float64 nibnobFactor = 0.0; //start with the fallthrough value, why not long double inputSample; Float64 absolute; - - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; - while (nSampleFrames-- > 0) { inputSample = *sourceP; @@ -278,20 +272,13 @@ void Poynt::PoyntKernel::Process( const Float32 *inSourceP, } inputSample *= nibnobFactor; - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; destP += inNumChannels; diff --git a/plugins/MacAU/Point/Poynt.h b/plugins/MacAU/Point/Poynt.h index 90960cc..7d084e6 100755 --- a/plugins/MacAU/Point/Poynt.h +++ b/plugins/MacAU/Point/Poynt.h @@ -135,8 +135,7 @@ public: Float64 nobA; Float64 nibB; Float64 nobB; - Float64 fpNShapeA; - Float64 fpNShapeB; + Float64 fpNShape; bool fpFlip; }; }; diff --git a/plugins/MacAU/Point/Poynt.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Point/Poynt.xcodeproj/christopherjohnson.pbxuser index 97764af..641426b 100755 --- a/plugins/MacAU/Point/Poynt.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Point/Poynt.xcodeproj/christopherjohnson.pbxuser @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528457500; - PBXWorkspaceStateSaveDate = 528457500; + PBXPerProjectTemplateStateSaveDate = 569675140; + PBXWorkspaceStateSaveDate = 569675140; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -58,10 +58,10 @@ }; 8BA05A660720730100365D66 /* Poynt.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {964, 4030}}"; - sepNavSelRange = "{9867, 0}"; - sepNavVisRange = "{9697, 1988}"; - sepNavWindowFrame = "{{690, 43}, {731, 835}}"; + sepNavIntBoundsRect = "{{0, 0}, {964, 3835}}"; + sepNavSelRange = "{11923, 0}"; + sepNavVisRange = "{6811, 2218}"; + sepNavWindowFrame = "{{510, 43}, {731, 835}}"; }; }; 8BA05A670720730100365D66 /* Poynt.exp */ = { @@ -82,10 +82,10 @@ }; 8BC6025B073B072D006C4272 /* Poynt.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {901, 1911}}"; - sepNavSelRange = "{5143, 64}"; - sepNavVisRange = "{2585, 1500}"; - sepNavWindowFrame = "{{804, -16}, {948, 825}}"; + sepNavIntBoundsRect = "{{0, 0}, {901, 1885}}"; + sepNavSelRange = "{5225, 0}"; + sepNavVisRange = "{3973, 1378}"; + sepNavWindowFrame = "{{492, 39}, {948, 825}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/Point/Poynt.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Point/Poynt.xcodeproj/christopherjohnson.perspectivev3 index 35ec906..354b0d9 100755 --- a/plugins/MacAU/Point/Poynt.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Point/Poynt.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>810</integer> + <integer>810</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>630 350 810 487 0 0 1440 878 </string> + <string>475 347 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -363,7 +361,7 @@ <key>Frame</key> <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> - <string>630 350 810 487 0 0 1440 878 </string> + <string>475 347 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -387,8 +385,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> - <key>RubberWindowFrame</key> - <string>630 350 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -443,6 +439,8 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> + <key>RubberWindowFrame</key> + <string>475 347 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -470,11 +468,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D75671F7F9F29007AB60F</string> + <string>8B792ED421F48E58006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D75681F7F9F29007AB60F</string> + <string>8B792ED521F48E58006E9731</string> <string>8BC521841DB3E58C00E72CD6</string> - <string>8B9D75691F7F9F29007AB60F</string> + <string>8B792ED621F48E58006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -627,7 +625,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528457513.38457698</real> + <real>569675352.26750898</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -644,11 +642,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D756A1F7F9F29007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/Point/Poynt.xcodeproj</string> </array> <key>WindowString</key> - <string>630 350 810 487 0 0 1440 878 </string> + <string>475 347 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Pop/Pop.cpp b/plugins/MacAU/Pop/Pop.cpp index 62acd34..d1e96e1 100755 --- a/plugins/MacAU/Pop/Pop.cpp +++ b/plugins/MacAU/Pop/Pop.cpp @@ -341,23 +341,16 @@ void Pop::PopKernel::Process( const Float32 *inSourceP, flip = !flip; if (output < 1.0) inputSample *= output; - if (wet<1.0) inputSample = (drySample*(1.0-wet))+(inputSample*wet); + if (wet < 1.0) inputSample = (drySample*(1.0-wet))+(inputSample*wet); - //noise shaping to 32-bit floating point - Float32 fpTemp = inputSample; - fpNShape += (inputSample-fpTemp); - inputSample += fpNShape; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither + *destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; } - fpNShape *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacAU/Pop/Pop.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Pop/Pop.xcodeproj/christopherjohnson.pbxuser index b860d50..482d742 100755 --- a/plugins/MacAU/Pop/Pop.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Pop/Pop.xcodeproj/christopherjohnson.pbxuser @@ -49,14 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 557537811; - PBXWorkspaceStateSaveDate = 557537811; + PBXPerProjectTemplateStateSaveDate = 569675407; + PBXWorkspaceStateSaveDate = 569675407; }; perUserProjectItems = { 8B6DBAB1213B5E6A00E44739 /* PBXTextBookmark */ = 8B6DBAB1213B5E6A00E44739 /* PBXTextBookmark */; 8B6DBAB2213B5E6A00E44739 /* PBXTextBookmark */ = 8B6DBAB2213B5E6A00E44739 /* PBXTextBookmark */; - 8B6DBAB3213B5E6A00E44739 /* PBXTextBookmark */ = 8B6DBAB3213B5E6A00E44739 /* PBXTextBookmark */; - 8B6DBAB5213B5E6A00E44739 /* PBXTextBookmark */ = 8B6DBAB5213B5E6A00E44739 /* PBXTextBookmark */; + 8B792EE421F48F26006E9731 /* PBXTextBookmark */ = 8B792EE421F48F26006E9731 /* PBXTextBookmark */; + 8B792EE921F48F73006E9731 /* PBXTextBookmark */ = 8B792EE921F48F73006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -82,34 +82,39 @@ vrLen = 133; vrLoc = 5301; }; - 8B6DBAB3213B5E6A00E44739 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8B6DBAB4213B5E6A00E44739 /* VariMuProc.cpp */; - name = "VariMuProc.cpp: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 188; - vrLoc = 0; - }; - 8B6DBAB4213B5E6A00E44739 /* VariMuProc.cpp */ = { + 8B6DBAB6213B5E6A00E44739 /* VariMuProc.cpp */ = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = VariMuProc.cpp; path = /Users/christopherjohnson/Desktop/MacVST/VariMu/source/VariMuProc.cpp; sourceTree = "<absolute>"; + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {554, 6708}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 169}"; + }; }; - 8B6DBAB5213B5E6A00E44739 /* PBXTextBookmark */ = { + 8B792EE421F48F26006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8B6DBAB6213B5E6A00E44739 /* VariMuProc.cpp */; name = "VariMuProc.cpp: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 188; + vrLen = 169; vrLoc = 0; }; - 8B6DBAB6213B5E6A00E44739 /* VariMuProc.cpp */ = { + 8B792EE921F48F73006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8B792EEA21F48F73006E9731 /* VariMuProc.cpp */; + name = "VariMuProc.cpp: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 169; + vrLoc = 0; + }; + 8B792EEA21F48F73006E9731 /* VariMuProc.cpp */ = { isa = PBXFileReference; name = VariMuProc.cpp; path = /Users/christopherjohnson/Desktop/MacVST/VariMu/source/VariMuProc.cpp; @@ -117,15 +122,15 @@ uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {554, 6708}}"; sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 188}"; + sepNavVisRange = "{0, 169}"; }; }; 8BA05A660720730100365D66 /* Pop.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1098, 4953}}"; - sepNavSelRange = "{10564, 3718}"; - sepNavVisRange = "{12637, 2394}"; - sepNavWindowFrame = "{{570, 66}, {1145, 812}}"; + sepNavIntBoundsRect = "{{0, 0}, {1098, 4758}}"; + sepNavSelRange = "{14221, 0}"; + sepNavVisRange = "{12566, 2051}"; + sepNavWindowFrame = "{{205, 66}, {1145, 812}}"; }; }; 8BA05A670720730100365D66 /* Pop.exp */ = { @@ -146,10 +151,10 @@ }; 8BC6025B073B072D006C4272 /* Pop.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {810, 2288}}"; + sepNavIntBoundsRect = "{{0, 0}, {824, 2028}}"; sepNavSelRange = "{5470, 0}"; - sepNavVisRange = "{5301, 133}"; - sepNavWindowFrame = "{{691, 65}, {787, 813}}"; + sepNavVisRange = "{4265, 1315}"; + sepNavWindowFrame = "{{444, 65}, {787, 813}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/Pop/Pop.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Pop/Pop.xcodeproj/christopherjohnson.perspectivev3 index 117e75b..3f71234 100755 --- a/plugins/MacAU/Pop/Pop.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Pop/Pop.xcodeproj/christopherjohnson.perspectivev3 @@ -298,7 +298,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>4</integer> + <integer>3</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> @@ -322,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>584 391 810 487 0 0 1440 878 </string> + <string>490 387 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -333,8 +333,6 @@ <key>Dock</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXProjectModuleGUID</key> @@ -352,12 +350,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B6DBAB5213B5E6A00E44739</string> + <string>8B792EE921F48F73006E9731</string> <key>history</key> <array> <string>8B6DBAB1213B5E6A00E44739</string> <string>8B6DBAB2213B5E6A00E44739</string> - <string>8B6DBAB3213B5E6A00E44739</string> + <string>8B792EE421F48F26006E9731</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 102}}</string> + <string>{{0, 0}, {603, 86}}</string> <key>RubberWindowFrame</key> - <string>584 391 810 487 0 0 1440 878 </string> + <string>490 387 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>102pt</string> + <string>86pt</string> </dict> <dict> <key>Proportion</key> - <string>339pt</string> + <string>355pt</string> <key>Tabs</key> <array> <dict> @@ -396,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 312}}</string> - <key>RubberWindowFrame</key> - <string>584 391 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 328}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -452,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 297}}</string> + <string>{{10, 27}, {603, 328}}</string> + <key>RubberWindowFrame</key> + <string>490 387 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -480,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B6DBAB7213B5E6A00E44739</string> + <string>8B792EEB21F48F73006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B6DBAB8213B5E6A00E44739</string> + <string>8B792EEC21F48F73006E9731</string> <string>8BFDB0BC213A19540079F90D</string> - <string>8B6DBAB9213B5E6A00E44739</string> + <string>8B792EED21F48F73006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -637,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>557538922.04973304</real> + <real>569675635.69867206</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -657,7 +655,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/Pop/Pop.xcodeproj</string> </array> <key>WindowString</key> - <string>584 391 810 487 0 0 1440 878 </string> + <string>490 387 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/PowerSag/PowerSag.cpp b/plugins/MacAU/PowerSag/PowerSag.cpp index 8bd8b1e..95f70d2 100755 --- a/plugins/MacAU/PowerSag/PowerSag.cpp +++ b/plugins/MacAU/PowerSag/PowerSag.cpp @@ -169,9 +169,7 @@ void PowerSag::PowerSagKernel::Reset() for(int count = 0; count < 8999; count++) {d[count] = 0;} control = 0; gcount = 0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -193,11 +191,6 @@ void PowerSag::PowerSagKernel::Process( const Float32 *inSourceP, Float64 thickness; Float64 out; Float64 bridgerectifier; - - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - long double inputSample; while (nSampleFrames-- > 0) { @@ -256,20 +249,11 @@ void PowerSag::PowerSagKernel::Process( const Float32 *inSourceP, inputSample *= clamp; - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/PowerSag/PowerSag.h b/plugins/MacAU/PowerSag/PowerSag.h index c55bc36..ef594dc 100755 --- a/plugins/MacAU/PowerSag/PowerSag.h +++ b/plugins/MacAU/PowerSag/PowerSag.h @@ -131,10 +131,7 @@ public: Float64 d[9000]; Float64 control; int gcount; - - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/PowerSag/PowerSag.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PowerSag/PowerSag.xcodeproj/christopherjohnson.pbxuser index 604cc41..e6e7e63 100755 --- a/plugins/MacAU/PowerSag/PowerSag.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/PowerSag/PowerSag.xcodeproj/christopherjohnson.pbxuser @@ -49,44 +49,44 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528457549; - PBXWorkspaceStateSaveDate = 528457549; + PBXPerProjectTemplateStateSaveDate = 569675661; + PBXWorkspaceStateSaveDate = 569675661; }; perUserProjectItems = { - 8B9D66491F7C8C32007AB60F /* PBXTextBookmark */ = 8B9D66491F7C8C32007AB60F /* PBXTextBookmark */; - 8B9D75751F7F9F5D007AB60F /* PBXTextBookmark */ = 8B9D75751F7F9F5D007AB60F /* PBXTextBookmark */; + 8B792EFB21F4905E006E9731 /* PBXTextBookmark */ = 8B792EFB21F4905E006E9731 /* PBXTextBookmark */; + 8B792F0021F49091006E9731 /* PBXTextBookmark */ = 8B792F0021F49091006E9731 /* PBXTextBookmark */; 8BB300131EE206710016C2D8 /* PlistBookmark */ = 8BB300131EE206710016C2D8 /* PlistBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B9D66491F7C8C32007AB60F /* PBXTextBookmark */ = { + 8B792EFB21F4905E006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* PowerSag.cpp */; - name = "PowerSag.cpp: 188"; + name = "PowerSag.cpp: 186"; rLen = 0; - rLoc = 8459; + rLoc = 8424; rType = 0; - vrLen = 573; - vrLoc = 8121; + vrLen = 439; + vrLoc = 8244; }; - 8B9D75751F7F9F5D007AB60F /* PBXTextBookmark */ = { + 8B792F0021F49091006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* PowerSag.cpp */; - name = "PowerSag.cpp: 188"; + name = "PowerSag.cpp: 186"; rLen = 0; - rLoc = 8459; + rLoc = 8424; rType = 0; - vrLen = 571; - vrLoc = 8121; + vrLen = 439; + vrLoc = 8244; }; 8BA05A660720730100365D66 /* PowerSag.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {656, 3744}}"; - sepNavSelRange = "{8459, 0}"; - sepNavVisRange = "{8121, 571}"; - sepNavWindowFrame = "{{746, 43}, {679, 835}}"; + sepNavIntBoundsRect = "{{0, 0}, {656, 3562}}"; + sepNavSelRange = "{8424, 0}"; + sepNavVisRange = "{8244, 439}"; + sepNavWindowFrame = "{{625, 43}, {679, 835}}"; }; }; 8BA05A690720730100365D66 /* PowerSagVersion.h */ = { @@ -111,10 +111,10 @@ }; 8BC6025B073B072D006C4272 /* PowerSag.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1872}}"; - sepNavSelRange = "{5175, 52}"; - sepNavVisRange = "{3808, 1596}"; - sepNavWindowFrame = "{{761, 43}, {679, 835}}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 1833}}"; + sepNavSelRange = "{5226, 0}"; + sepNavVisRange = "{3698, 1662}"; + sepNavWindowFrame = "{{126, 32}, {679, 835}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/PowerSag/PowerSag.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/PowerSag/PowerSag.xcodeproj/christopherjohnson.perspectivev3 index b64b182..c90dcdd 100755 --- a/plugins/MacAU/PowerSag/PowerSag.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/PowerSag/PowerSag.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -325,7 +323,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>599 187 841 654 0 0 1440 878 </string> + <string>422 210 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -353,11 +351,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D75751F7F9F5D007AB60F</string> + <string>8B792F0021F49091006E9731</string> <key>history</key> <array> <string>8BB300131EE206710016C2D8</string> - <string>8B9D66491F7C8C32007AB60F</string> + <string>8B792EFB21F4905E006E9731</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 202}}</string> + <string>{{0, 0}, {531, 188}}</string> <key>RubberWindowFrame</key> - <string>599 187 841 654 0 0 1440 878 </string> + <string>422 210 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>202pt</string> + <string>188pt</string> </dict> <dict> <key>Proportion</key> - <string>406pt</string> + <string>420pt</string> <key>Tabs</key> <array> <dict> @@ -396,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 379}}</string> - <key>RubberWindowFrame</key> - <string>599 187 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 393}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -452,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 315}}</string> + <string>{{10, 27}, {531, 393}}</string> + <key>RubberWindowFrame</key> + <string>422 210 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -480,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D75761F7F9F5D007AB60F</string> + <string>8B792F0121F49091006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D75771F7F9F5D007AB60F</string> + <string>8B792F0221F49091006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D75781F7F9F5D007AB60F</string> + <string>8B792F0321F49091006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -657,7 +655,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528457565.97925901</real> + <real>569675921.48933697</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -674,11 +672,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D75791F7F9F5D007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/PowerSag/PowerSag.xcodeproj</string> </array> <key>WindowString</key> - <string>599 187 841 654 0 0 1440 878 </string> + <string>422 210 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Pressure4/Pressure4.cpp b/plugins/MacAU/Pressure4/Pressure4.cpp index 4780f45..9fbbe85 100755 --- a/plugins/MacAU/Pressure4/Pressure4.cpp +++ b/plugins/MacAU/Pressure4/Pressure4.cpp @@ -198,10 +198,8 @@ ComponentResult Pressure4::Initialize() //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ComponentResult Pressure4::Reset(AudioUnitScope inScope, AudioUnitElement inElement) { - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; muSpeedA = 10000; muSpeedB = 10000; muCoefficientA = 1; @@ -257,9 +255,6 @@ OSStatus Pressure4::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla unmewiness = 1.0-mewiness; } // µ µ µ µ µ µ µ µ µ µ µ µ is the kitten song o/~ - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -407,27 +402,16 @@ OSStatus Pressure4::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla else {inputSampleR = -bridgerectifier;} //second stage of overdrive to prevent overs and allow bloody loud extremeness - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } flip = !flip; - //end noise shaping on 32 bit output + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((Float32)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *outputL = inputSampleL; *outputR = inputSampleR; diff --git a/plugins/MacAU/Pressure4/Pressure4.h b/plugins/MacAU/Pressure4/Pressure4.h index a6926ee..6534c46 100755 --- a/plugins/MacAU/Pressure4/Pressure4.h +++ b/plugins/MacAU/Pressure4/Pressure4.h @@ -125,10 +125,8 @@ public: Float64 muSpeedB; Float64 muCoefficientA; Float64 muCoefficientB; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; + long double fpNShapeL; + long double fpNShapeR; bool flip; }; diff --git a/plugins/MacAU/Pressure4/Pressure4.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Pressure4/Pressure4.xcodeproj/christopherjohnson.pbxuser index 99a6c24..3758f60 100755 --- a/plugins/MacAU/Pressure4/Pressure4.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Pressure4/Pressure4.xcodeproj/christopherjohnson.pbxuser @@ -49,13 +49,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 553809064; - PBXWorkspaceStateSaveDate = 553809064; + PBXPerProjectTemplateStateSaveDate = 569677045; + PBXWorkspaceStateSaveDate = 569677045; }; perUserProjectItems = { - 8B050BBA2064897B00700365 /* PBXTextBookmark */ = 8B050BBA2064897B00700365 /* PBXTextBookmark */; - 8B8D6983207ABA4C0029B7B0 /* PBXTextBookmark */ = 8B8D6983207ABA4C0029B7B0 /* PBXTextBookmark */; - 8BB8B6702102844E00751000 /* PBXTextBookmark */ = 8BB8B6702102844E00751000 /* PBXTextBookmark */; + 8B792F5421F495A9006E9731 /* PBXTextBookmark */ = 8B792F5421F495A9006E9731 /* PBXTextBookmark */; + 8B792F5521F495A9006E9731 /* PBXTextBookmark */ = 8B792F5521F495A9006E9731 /* PBXTextBookmark */; + 8B792F5621F495A9006E9731 /* PBXTextBookmark */ = 8B792F5621F495A9006E9731 /* PBXTextBookmark */; 8BEF33C81D81F6D7008B0B7F /* PlistBookmark */ = 8BEF33C81D81F6D7008B0B7F /* PlistBookmark */; 8BEF33C91D81F6D7008B0B7F /* PBXTextBookmark */ = 8BEF33C91D81F6D7008B0B7F /* PBXTextBookmark */; }; @@ -63,31 +63,41 @@ userBuildSettings = { }; }; - 8B050BBA2064897B00700365 /* PBXTextBookmark */ = { + 8B792F5421F495A9006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* Pressure4.h */; - name = "Pressure4.h: 128"; - rLen = 117; - rLoc = 5265; + name = "Pressure4.h: 129"; + rLen = 0; + rLoc = 5292; + rType = 0; + vrLen = 1148; + vrLoc = 4280; + }; + 8B792F5521F495A9006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Pressure4.cpp */; + name = "Pressure4.cpp: 201"; + rLen = 0; + rLoc = 8945; rType = 0; - vrLen = 1019; - vrLoc = 4469; + vrLen = 1378; + vrLoc = 15227; }; - 8B8D6983207ABA4C0029B7B0 /* PBXTextBookmark */ = { + 8B792F5621F495A9006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Pressure4.cpp */; - name = "Pressure4.cpp: 210"; + name = "Pressure4.cpp: 202"; rLen = 0; - rLoc = 9108; + rLoc = 8956; rType = 0; - vrLen = 1508; - vrLoc = 8385; + vrLen = 1347; + vrLoc = 15277; }; 8BA05A660720730100365D66 /* Pressure4.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {693, 6006}}"; - sepNavSelRange = "{9108, 0}"; - sepNavVisRange = "{12471, 1500}"; + sepNavIntBoundsRect = "{{0, 0}, {754, 5876}}"; + sepNavSelRange = "{8956, 0}"; + sepNavVisRange = "{15277, 1347}"; sepNavWindowFrame = "{{479, 48}, {895, 819}}"; }; }; @@ -99,21 +109,11 @@ sepNavWindowFrame = "{{15, 54}, {895, 819}}"; }; }; - 8BB8B6702102844E00751000 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* Pressure4.cpp */; - name = "Pressure4.cpp: 210"; - rLen = 0; - rLoc = 9108; - rType = 0; - vrLen = 1500; - vrLoc = 12471; - }; 8BC6025B073B072D006C4272 /* Pressure4.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1807}}"; - sepNavSelRange = "{5265, 117}"; - sepNavVisRange = "{3662, 1826}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 1976}}"; + sepNavSelRange = "{5292, 0}"; + sepNavVisRange = "{4280, 1148}"; sepNavWindowFrame = "{{28, 51}, {895, 819}}"; }; }; diff --git a/plugins/MacAU/Pressure4/Pressure4.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Pressure4/Pressure4.xcodeproj/christopherjohnson.perspectivev3 index 6e47c82..e9da12e 100755 --- a/plugins/MacAU/Pressure4/Pressure4.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Pressure4/Pressure4.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>841</integer> - <integer>841</integer> + <integer>1052</integer> + <integer>1052</integer> </array> <key>Perspectives</key> <array> @@ -299,7 +299,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>3</integer> + <integer>4</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> @@ -323,7 +323,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>526 89 1052 789 0 0 1440 878 </string> + <string>259 89 1052 789 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -353,13 +353,13 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BB8B6702102844E00751000</string> + <string>8B792F5621F495A9006E9731</string> <key>history</key> <array> <string>8BEF33C81D81F6D7008B0B7F</string> <string>8BEF33C91D81F6D7008B0B7F</string> - <string>8B050BBA2064897B00700365</string> - <string>8B8D6983207ABA4C0029B7B0</string> + <string>8B792F5421F495A9006E9731</string> + <string>8B792F5521F495A9006E9731</string> </array> </dict> <key>SplitCount</key> @@ -373,18 +373,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {742, 617}}</string> + <string>{{0, 0}, {742, 515}}</string> <key>RubberWindowFrame</key> - <string>526 89 1052 789 0 0 1440 878 </string> + <string>259 89 1052 789 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>617pt</string> + <string>515pt</string> </dict> <dict> <key>Proportion</key> - <string>126pt</string> + <string>228pt</string> <key>Tabs</key> <array> <dict> @@ -398,9 +398,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {742, 99}}</string> - <key>RubberWindowFrame</key> - <string>526 89 1052 789 0 0 1440 878 </string> + <string>{{10, 27}, {742, 201}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -454,7 +452,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 327}}</string> + <string>{{10, 27}, {742, 201}}</string> + <key>RubberWindowFrame</key> + <string>259 89 1052 789 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -482,11 +482,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BB8B6712102844E00751000</string> + <string>8B792F5721F495A9006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BB8B6722102844E00751000</string> + <string>8B792F5821F495A9006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8BB8B6732102844E00751000</string> + <string>8B792F5921F495A9006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -659,7 +659,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>553813070.00637698</real> + <real>569677225.40901196</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -679,7 +679,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/Pressure4/Pressure4.xcodeproj</string> </array> <key>WindowString</key> - <string>526 89 1052 789 0 0 1440 878 </string> + <string>259 89 1052 789 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Pressure4Mono/Pressure4Mono.cpp b/plugins/MacAU/Pressure4Mono/Pressure4Mono.cpp index c46cdcb..90991bc 100755 --- a/plugins/MacAU/Pressure4Mono/Pressure4Mono.cpp +++ b/plugins/MacAU/Pressure4Mono/Pressure4Mono.cpp @@ -182,8 +182,7 @@ ComponentResult Pressure4Mono::Initialize() //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void Pressure4Mono::Pressure4MonoKernel::Reset() { - fpNShapeA = 0.0; - fpNShapeB = 0.0; + fpNShape = 0.0; muSpeedA = 10000; muSpeedB = 10000; muCoefficientA = 1; @@ -232,9 +231,6 @@ void Pressure4Mono::Pressure4MonoKernel::Process( const Float32 *inSourceP, unmewiness = 1.0-mewiness; } // µ µ µ µ µ µ µ µ µ µ µ µ is the kitten song o/~ - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; long double inputSample; while (nSampleFrames-- > 0) { @@ -351,20 +347,14 @@ void Pressure4Mono::Pressure4MonoKernel::Process( const Float32 *inSourceP, if (inputSample > 0){inputSample = bridgerectifier;} else {inputSample = -bridgerectifier;} //second stage of overdrive to prevent overs and allow bloody loud extremeness - - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } flip = !flip; - //end noise shaping on 32 bit output + + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither + *destP = inputSample; destP += inNumChannels; } diff --git a/plugins/MacAU/Pressure4Mono/Pressure4Mono.h b/plugins/MacAU/Pressure4Mono/Pressure4Mono.h index e88dbac..6c4b3df 100755 --- a/plugins/MacAU/Pressure4Mono/Pressure4Mono.h +++ b/plugins/MacAU/Pressure4Mono/Pressure4Mono.h @@ -141,8 +141,7 @@ public: Float64 muSpeedB; Float64 muCoefficientA; Float64 muCoefficientB; - Float64 fpNShapeA; - Float64 fpNShapeB; + long double fpNShape; bool flip; }; diff --git a/plugins/MacAU/Pressure4Mono/Pressure4Mono.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Pressure4Mono/Pressure4Mono.xcodeproj/christopherjohnson.pbxuser index db6a4e5..28eee56 100755 --- a/plugins/MacAU/Pressure4Mono/Pressure4Mono.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Pressure4Mono/Pressure4Mono.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 292, + 389, 20, 48, 43, @@ -49,44 +49,54 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 553813081; - PBXWorkspaceStateSaveDate = 553813081; + PBXPerProjectTemplateStateSaveDate = 569677251; + PBXWorkspaceStateSaveDate = 569677251; }; perUserProjectItems = { - 8B2E03F31D837F81001B9E01 /* PBXTextBookmark */ = 8B2E03F31D837F81001B9E01 /* PBXTextBookmark */; - 8B9D75931F7F9FAE007AB60F /* PBXTextBookmark */ = 8B9D75931F7F9FAE007AB60F /* PBXTextBookmark */; - 8BB8B69021028B4200751000 /* PBXTextBookmark */ = 8BB8B69021028B4200751000 /* PBXTextBookmark */; + 8B792F6521F495EA006E9731 /* PBXTextBookmark */ = 8B792F6521F495EA006E9731 /* PBXTextBookmark */; + 8B792F6621F495EA006E9731 /* PBXTextBookmark */ = 8B792F6621F495EA006E9731 /* PBXTextBookmark */; + 8B792F6721F495EA006E9731 /* PBXTextBookmark */ = 8B792F6721F495EA006E9731 /* PBXTextBookmark */; 8BEF332D1D81E168008B0B7F /* PlistBookmark */ = 8BEF332D1D81E168008B0B7F /* PlistBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B2E03F31D837F81001B9E01 /* PBXTextBookmark */ = { + 8B792F6521F495EA006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* Pressure4Mono.h */; - name = "Pressure4Mono.h: 67"; + name = "Pressure4Mono.h: 144"; rLen = 0; - rLoc = 3269; + rLoc = 5594; rType = 0; - vrLen = 563; - vrLoc = 2781; + vrLen = 452; + vrLoc = 5278; }; - 8B9D75931F7F9FAE007AB60F /* PBXTextBookmark */ = { + 8B792F6621F495EA006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Pressure4Mono.cpp */; - name = "Pressure4Mono.cpp: 201"; + name = "Pressure4Mono.cpp: 358"; rLen = 0; - rLoc = 9254; + rLoc = 14617; rType = 0; - vrLen = 662; - vrLoc = 8746; + vrLen = 887; + vrLoc = 13781; + }; + 8B792F6721F495EA006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Pressure4Mono.cpp */; + name = "Pressure4Mono.cpp: 358"; + rLen = 0; + rLoc = 14617; + rType = 0; + vrLen = 814; + vrLoc = 13855; }; 8BA05A660720730100365D66 /* Pressure4Mono.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {656, 4914}}"; - sepNavSelRange = "{9254, 0}"; - sepNavVisRange = "{8748, 660}"; + sepNavIntBoundsRect = "{{0, 0}, {817, 4940}}"; + sepNavSelRange = "{14617, 0}"; + sepNavVisRange = "{13855, 814}"; sepNavWindowFrame = "{{687, 59}, {895, 819}}"; }; }; @@ -98,21 +108,11 @@ sepNavWindowFrame = "{{528, 59}, {895, 819}}"; }; }; - 8BB8B69021028B4200751000 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* Pressure4Mono.cpp */; - name = "Pressure4Mono.cpp: 201"; - rLen = 0; - rLoc = 9254; - rType = 0; - vrLen = 660; - vrLoc = 8748; - }; 8BC6025B073B072D006C4272 /* Pressure4Mono.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 2002}}"; - sepNavSelRange = "{2979, 0}"; - sepNavVisRange = "{4196, 1545}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 2041}}"; + sepNavSelRange = "{5594, 0}"; + sepNavVisRange = "{5278, 452}"; sepNavWindowFrame = "{{545, 52}, {895, 819}}"; }; }; diff --git a/plugins/MacAU/Pressure4Mono/Pressure4Mono.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Pressure4Mono/Pressure4Mono.xcodeproj/christopherjohnson.perspectivev3 index 8a308b1..72322fc 100755 --- a/plugins/MacAU/Pressure4Mono/Pressure4Mono.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Pressure4Mono/Pressure4Mono.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -282,7 +280,7 @@ <dict> <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> <array> - <real>288</real> + <real>191</real> </array> <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> <array> @@ -308,7 +306,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {288, 595}}</string> + <string>{{0, 0}, {191, 595}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -318,19 +316,19 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {305, 613}}</string> + <string>{{0, 0}, {208, 613}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> - <real>288</real> + <real>191</real> </array> <key>RubberWindowFrame</key> - <string>651 172 841 654 0 0 1440 878 </string> + <string>471 181 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> <key>Proportion</key> - <string>305pt</string> + <string>208pt</string> </dict> <dict> <key>Dock</key> @@ -353,12 +351,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BB8B69021028B4200751000</string> + <string>8B792F6721F495EA006E9731</string> <key>history</key> <array> <string>8BEF332D1D81E168008B0B7F</string> - <string>8B2E03F31D837F81001B9E01</string> - <string>8B9D75931F7F9FAE007AB60F</string> + <string>8B792F6521F495EA006E9731</string> + <string>8B792F6621F495EA006E9731</string> </array> </dict> <key>SplitCount</key> @@ -372,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 173}}</string> + <string>{{0, 0}, {628, 336}}</string> <key>RubberWindowFrame</key> - <string>651 172 841 654 0 0 1440 878 </string> + <string>471 181 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>173pt</string> + <string>336pt</string> </dict> <dict> <key>Proportion</key> - <string>435pt</string> + <string>272pt</string> <key>Tabs</key> <array> <dict> @@ -397,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 408}}</string> - <key>RubberWindowFrame</key> - <string>651 172 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {628, 245}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -453,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 315}}</string> + <string>{{10, 27}, {628, 245}}</string> + <key>RubberWindowFrame</key> + <string>471 181 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -462,7 +460,7 @@ </dict> </array> <key>Proportion</key> - <string>531pt</string> + <string>628pt</string> </dict> </array> <key>Name</key> @@ -481,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BB8B69121028B4200751000</string> + <string>8B792F6821F495EA006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BB8B69221028B4200751000</string> + <string>8B792F6921F495EA006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8BB8B69321028B4200751000</string> + <string>8B792F6A21F495EA006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -658,7 +656,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>553814850.34887004</real> + <real>569677290.01837504</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -675,11 +673,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BB8B69421028B4200751000</string> <string>/Users/christopherjohnson/Desktop/MacAU/Pressure4Mono/Pressure4Mono.xcodeproj</string> </array> <key>WindowString</key> - <string>651 172 841 654 0 0 1440 878 </string> + <string>471 181 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.cpp b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.cpp index 48f223b..d0b8cf9 100644..100755 --- a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.cpp +++ b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.cpp @@ -150,9 +150,7 @@ ComponentResult PurestConsoleBuss::Initialize() //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void PurestConsoleBuss::PurestConsoleBussKernel::Reset() { - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -168,10 +166,6 @@ void PurestConsoleBuss::PurestConsoleBussKernel::Process( const Float32 *inSou const Float32 *sourceP = inSourceP; Float32 *destP = inDestP; - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - long double inputSample; while (nSampleFrames-- > 0) { @@ -208,20 +202,12 @@ void PurestConsoleBuss::PurestConsoleBussKernel::Process( const Float32 *inSou inputSample = asin(inputSample); //amplitude aspect - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output - + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither + *destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; diff --git a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.h b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.h index a3df04f..590e797 100644..100755 --- a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.h +++ b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.h @@ -118,9 +118,7 @@ public: virtual void Reset(); private: - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.mode1v3 b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.mode1v3 index f301be9..f301be9 100644..100755 --- a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.mode1v3 +++ b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.mode1v3 diff --git a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.pbxuser index 3851c37..5e3513c 100644..100755 --- a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.pbxuser @@ -49,18 +49,21 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 538687633; - PBXWorkspaceStateSaveDate = 538687633; + PBXPerProjectTemplateStateSaveDate = 569585234; + PBXWorkspaceStateSaveDate = 569585234; }; perUserProjectItems = { - 8B4E550F201BB8BF00B5DC2A /* PlistBookmark */ = 8B4E550F201BB8BF00B5DC2A /* PlistBookmark */; - 8BBE45541FE5F3CA0022E6F7 /* PlistBookmark */ = 8BBE45541FE5F3CA0022E6F7 /* PlistBookmark */; + 8B34923F2054559600C0EF7D /* PlistBookmark */ = 8B34923F2054559600C0EF7D /* PlistBookmark */; + 8B79265921F32EAB006E9731 /* PBXBookmark */ = 8B79265921F32EAB006E9731 /* PBXBookmark */; + 8B79265F21F32F13006E9731 /* PBXTextBookmark */ = 8B79265F21F32F13006E9731 /* PBXTextBookmark */; + 8B79266421F32F25006E9731 /* PBXTextBookmark */ = 8B79266421F32F25006E9731 /* PBXTextBookmark */; + 8B79266721F32F25006E9731 /* PBXTextBookmark */ = 8B79266721F32F25006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B4E550F201BB8BF00B5DC2A /* PlistBookmark */ = { + 8B34923F2054559600C0EF7D /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; fallbackIsa = PBXBookmark; @@ -68,16 +71,50 @@ kPath = ( CFBundleName, ); - name = /Users/christopherjohnson/Desktop/github/plugins/MacAU/PurestConsoleBuss/Info.plist; + name = /Users/christopherjohnson/Desktop/MacAU/PurestConsoleBuss/Info.plist; + rLen = 0; + rLoc = 9223372036854775808; + }; + 8B79265921F32EAB006E9731 /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 8BA05A660720730100365D66 /* PurestConsoleBuss.cpp */; + }; + 8B79265F21F32F13006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* PurestConsoleBuss.cpp */; + name = "PurestConsoleBuss.cpp: 210"; rLen = 0; - rLoc = 9223372036854775807; + rLoc = 9637; + rType = 0; + vrLen = 493; + vrLoc = 9142; + }; + 8B79266421F32F25006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* PurestConsoleBuss.cpp */; + name = "PurestConsoleBuss.cpp: 210"; + rLen = 0; + rLoc = 9637; + rType = 0; + vrLen = 493; + vrLoc = 9142; + }; + 8B79266721F32F25006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* PurestConsoleBuss.cpp */; + name = "PurestConsoleBuss.cpp: 168"; + rLen = 0; + rLoc = 7709; + rType = 0; + vrLen = 2197; + vrLoc = 7528; }; 8BA05A660720730100365D66 /* PurestConsoleBuss.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 3198}}"; - sepNavSelRange = "{9296, 242}"; - sepNavVisRange = "{7889, 2106}"; - sepNavWindowFrame = "{{545, 39}, {895, 839}}"; + sepNavIntBoundsRect = "{{0, 0}, {677, 2990}}"; + sepNavSelRange = "{9637, 0}"; + sepNavVisRange = "{9142, 493}"; + sepNavWindowFrame = "{{301, 26}, {895, 839}}"; }; }; 8BA05A690720730100365D66 /* PurestConsoleBussVersion.h */ = { @@ -88,23 +125,11 @@ sepNavWindowFrame = "{{461, 39}, {895, 839}}"; }; }; - 8BBE45541FE5F3CA0022E6F7 /* PlistBookmark */ = { - isa = PlistBookmark; - fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; - fallbackIsa = PBXBookmark; - isK = 0; - kPath = ( - CFBundleName, - ); - name = /Users/christopherjohnson/Desktop/MacAU/PurestConsoleBuss/Info.plist; - rLen = 0; - rLoc = 9223372036854775808; - }; 8BC6025B073B072D006C4272 /* PurestConsoleBuss.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1690}}"; - sepNavSelRange = "{2904, 0}"; - sepNavVisRange = "{2002, 1900}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 1664}}"; + sepNavSelRange = "{4995, 0}"; + sepNavVisRange = "{3220, 1877}"; sepNavWindowFrame = "{{539, 39}, {895, 839}}"; }; }; diff --git a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.perspectivev3 index f555b58..699b00b 100644..100755 --- a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.perspectivev3 @@ -222,11 +222,52 @@ </dict> </array> <key>OpenEditors</key> - <array/> + <array> + <dict> + <key>Content</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>8B79266521F32F25006E9731</string> + <key>PBXProjectModuleLabel</key> + <string>PurestConsoleBuss.cpp</string> + <key>PBXSplitModuleInNavigatorKey</key> + <dict> + <key>Split0</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>8B79266621F32F25006E9731</string> + <key>PBXProjectModuleLabel</key> + <string>PurestConsoleBuss.cpp</string> + <key>_historyCapacity</key> + <integer>0</integer> + <key>bookmark</key> + <string>8B79266721F32F25006E9731</string> + <key>history</key> + <array> + <string>8B79265921F32EAB006E9731</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, 742}}</string> + <key>PBXModuleWindowStatusBarHidden2</key> + <false/> + <key>RubberWindowFrame</key> + <string>301 82 895 783 0 0 1440 878 </string> + </dict> + </dict> + </array> <key>PerspectiveWidths</key> <array> - <integer>810</integer> - <integer>810</integer> + <integer>841</integer> + <integer>841</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +297,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -301,7 +340,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>4</integer> + <integer>3</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> @@ -325,7 +364,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>599 222 841 654 0 0 1440 878 </string> + <string>492 170 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -341,7 +380,7 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274A1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>Info.plist</string> + <string>PurestConsoleBuss.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -349,14 +388,15 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274B1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>Info.plist</string> + <string>PurestConsoleBuss.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B4E550F201BB8BF00B5DC2A</string> + <string>8B79266421F32F25006E9731</string> <key>history</key> <array> - <string>8BBE45541FE5F3CA0022E6F7</string> + <string>8B34923F2054559600C0EF7D</string> + <string>8B79265F21F32F13006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +410,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 229}}</string> + <string>{{0, 0}, {531, 188}}</string> <key>RubberWindowFrame</key> - <string>599 222 841 654 0 0 1440 878 </string> + <string>492 170 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>229pt</string> + <string>188pt</string> </dict> <dict> <key>Proportion</key> - <string>379pt</string> + <string>420pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +435,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 352}}</string> - <key>RubberWindowFrame</key> - <string>599 222 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 393}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +489,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {531, 393}}</string> + <key>RubberWindowFrame</key> + <string>492 170 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +519,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B4E5510201BB8BF00B5DC2A</string> + <string>8B79265421F32E69006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B4E5511201BB8BF00B5DC2A</string> + <string>8B79265521F32E69006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B4E5512201BB8BF00B5DC2A</string> + <string>8B79265621F32E69006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -656,7 +696,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>538687679.06755602</real> + <real>569585445.78409505</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -673,11 +713,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B4E5513201BB8BF00B5DC2A</string> - <string>/Users/christopherjohnson/Desktop/github/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj</string> + <string>8B79266521F32F25006E9731</string> + <string>/Users/christopherjohnson/Desktop/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj</string> </array> <key>WindowString</key> - <string>599 222 841 654 0 0 1440 878 </string> + <string>492 170 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.pbxproj b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.pbxproj index c25ead8..c25ead8 100644..100755 --- a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.pbxproj +++ b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.pbxproj diff --git a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.cpp b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.cpp index 7f47b65..b418640 100644..100755 --- a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.cpp +++ b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.cpp @@ -150,9 +150,7 @@ ComponentResult PurestConsoleChannel::Initialize() //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void PurestConsoleChannel::PurestConsoleChannelKernel::Reset() { - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -168,10 +166,6 @@ void PurestConsoleChannel::PurestConsoleChannelKernel::Process( const Float32 const Float32 *sourceP = inSourceP; Float32 *destP = inDestP; - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - long double inputSample; while (nSampleFrames-- > 0) { @@ -203,20 +197,12 @@ void PurestConsoleChannel::PurestConsoleChannelKernel::Process( const Float32 inputSample = sin(inputSample); //amplitude aspect - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.h b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.h index 5cf13da..0beecd1 100644..100755 --- a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.h +++ b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.h @@ -119,9 +119,7 @@ public: virtual void Reset(); private: - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.mode1v3 b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.mode1v3 index f301be9..f301be9 100644..100755 --- a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.mode1v3 +++ b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.mode1v3 diff --git a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.pbxuser index dcf6a55..44838c0 100644..100755 --- a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.pbxuser @@ -49,18 +49,19 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 538686827; - PBXWorkspaceStateSaveDate = 538686827; + PBXPerProjectTemplateStateSaveDate = 569585667; + PBXWorkspaceStateSaveDate = 569585667; }; perUserProjectItems = { - 8B4E54B5201BB4AE00B5DC2A /* PlistBookmark */ = 8B4E54B5201BB4AE00B5DC2A /* PlistBookmark */; - 8B4E54C3201BB57400B5DC2A /* PlistBookmark */ = 8B4E54C3201BB57400B5DC2A /* PlistBookmark */; + 8B34922E2054553C00C0EF7D /* PlistBookmark */ = 8B34922E2054553C00C0EF7D /* PlistBookmark */; + 8B79267521F33079006E9731 /* PBXTextBookmark */ = 8B79267521F33079006E9731 /* PBXTextBookmark */; + 8B79267A21F3308F006E9731 /* PBXTextBookmark */ = 8B79267A21F3308F006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B4E54B5201BB4AE00B5DC2A /* PlistBookmark */ = { + 8B34922E2054553C00C0EF7D /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; fallbackIsa = PBXBookmark; @@ -68,28 +69,36 @@ kPath = ( CFBundleName, ); - name = /Users/christopherjohnson/Desktop/github/plugins/MacAU/PurestConsoleChannel/Info.plist; + name = /Users/christopherjohnson/Desktop/MacAU/PurestConsoleChannel/Info.plist; rLen = 0; rLoc = 9223372036854775808; }; - 8B4E54C3201BB57400B5DC2A /* PlistBookmark */ = { - isa = PlistBookmark; - fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; - fallbackIsa = PBXBookmark; - isK = 0; - kPath = ( - CFBundleName, - ); - name = /Users/christopherjohnson/Desktop/github/plugins/MacAU/PurestConsoleChannel/Info.plist; + 8B79267521F33079006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* PurestConsoleChannel.cpp */; + name = "PurestConsoleChannel.cpp: 206"; + rLen = 0; + rLoc = 9532; + rType = 0; + vrLen = 213; + vrLoc = 9160; + }; + 8B79267A21F3308F006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* PurestConsoleChannel.cpp */; + name = "PurestConsoleChannel.cpp: 206"; rLen = 0; - rLoc = 9223372036854775807; + rLoc = 9532; + rType = 0; + vrLen = 213; + vrLoc = 9160; }; 8BA05A660720730100365D66 /* PurestConsoleChannel.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 3094}}"; - sepNavSelRange = "{9377, 56}"; - sepNavVisRange = "{7017, 2416}"; - sepNavWindowFrame = "{{545, 39}, {895, 839}}"; + sepNavIntBoundsRect = "{{0, 0}, {677, 2873}}"; + sepNavSelRange = "{9532, 0}"; + sepNavVisRange = "{9160, 213}"; + sepNavWindowFrame = "{{352, 39}, {895, 839}}"; }; }; 8BA05A690720730100365D66 /* PurestConsoleChannelVersion.h */ = { @@ -102,10 +111,10 @@ }; 8BC6025B073B072D006C4272 /* PurestConsoleChannel.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1703}}"; - sepNavSelRange = "{2920, 0}"; - sepNavVisRange = "{1797, 2033}"; - sepNavWindowFrame = "{{705, 39}, {895, 839}}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 1677}}"; + sepNavSelRange = "{5033, 0}"; + sepNavVisRange = "{3380, 1763}"; + sepNavWindowFrame = "{{307, 39}, {895, 839}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.perspectivev3 index f3c675f..18c4f2b 100644..100755 --- a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -325,7 +323,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>584 203 841 654 0 0 1440 878 </string> + <string>388 183 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -341,7 +339,7 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274A1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>Info.plist</string> + <string>PurestConsoleChannel.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -349,14 +347,15 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274B1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>Info.plist</string> + <string>PurestConsoleChannel.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B4E54C3201BB57400B5DC2A</string> + <string>8B79267A21F3308F006E9731</string> <key>history</key> <array> - <string>8B4E54B5201BB4AE00B5DC2A</string> + <string>8B34922E2054553C00C0EF7D</string> + <string>8B79267521F33079006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 229}}</string> + <string>{{0, 0}, {531, 126}}</string> <key>RubberWindowFrame</key> - <string>584 203 841 654 0 0 1440 878 </string> + <string>388 183 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>229pt</string> + <string>126pt</string> </dict> <dict> <key>Proportion</key> - <string>379pt</string> + <string>482pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 352}}</string> - <key>RubberWindowFrame</key> - <string>584 203 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 455}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 315}}</string> + <string>{{10, 27}, {531, 455}}</string> + <key>RubberWindowFrame</key> + <string>388 183 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B4E54C4201BB57400B5DC2A</string> + <string>8B79267B21F3308F006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B4E54C5201BB57400B5DC2A</string> + <string>8B79267C21F3308F006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B4E54C6201BB57400B5DC2A</string> + <string>8B79267D21F3308F006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -656,7 +655,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>538686836.144647</real> + <real>569585807.50112402</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -673,11 +672,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B4E54C7201BB57400B5DC2A</string> - <string>/Users/christopherjohnson/Desktop/github/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj</string> </array> <key>WindowString</key> - <string>584 203 841 654 0 0 1440 878 </string> + <string>388 183 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.pbxproj b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.pbxproj index a832a58..a832a58 100644..100755 --- a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.pbxproj +++ b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.pbxproj diff --git a/plugins/MacAU/PurestDrive/PurestDrive.cpp b/plugins/MacAU/PurestDrive/PurestDrive.cpp index fe73631..7f6d0a0 100644..100755 --- a/plugins/MacAU/PurestDrive/PurestDrive.cpp +++ b/plugins/MacAU/PurestDrive/PurestDrive.cpp @@ -159,9 +159,7 @@ ComponentResult PurestDrive::Initialize() void PurestDrive::PurestDriveKernel::Reset() { previousSample = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } @@ -182,9 +180,6 @@ void PurestDrive::PurestDriveKernel::Process( const Float32 *inSourceP, long double inputSample; long double drySample; Float64 apply; - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; while (nSampleFrames-- > 0) { inputSample = *sourceP; @@ -227,19 +222,11 @@ void PurestDrive::PurestDriveKernel::Process( const Float32 *inSourceP, previousSample = sin(drySample); //apply the sine while storing previous sample - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/PurestDrive/PurestDrive.h b/plugins/MacAU/PurestDrive/PurestDrive.h index 5f5aaa0..54809d8 100755 --- a/plugins/MacAU/PurestDrive/PurestDrive.h +++ b/plugins/MacAU/PurestDrive/PurestDrive.h @@ -126,9 +126,7 @@ public: private: double previousSample; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson (Christopher-Johnsons-MacBook-Pro-2's conflicted copy 2015-05-07).mode1v3 b/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson (Christopher-Johnsons-MacBook-Pro-2's conflicted copy 2015-05-07).mode1v3 index 75a6c26..75a6c26 100644..100755 --- a/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson (Christopher-Johnsons-MacBook-Pro-2's conflicted copy 2015-05-07).mode1v3 +++ b/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson (Christopher-Johnsons-MacBook-Pro-2's conflicted copy 2015-05-07).mode1v3 diff --git a/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson (Christopher-Johnsons-MacBook-Pro-2's conflicted copy 2015-05-07).pbxuser b/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson (Christopher-Johnsons-MacBook-Pro-2's conflicted copy 2015-05-07).pbxuser index a5bba60..a5bba60 100644..100755 --- a/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson (Christopher-Johnsons-MacBook-Pro-2's conflicted copy 2015-05-07).pbxuser +++ b/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson (Christopher-Johnsons-MacBook-Pro-2's conflicted copy 2015-05-07).pbxuser diff --git a/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.pbxuser index 197baf6..f2badd1 100755 --- a/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.pbxuser @@ -49,13 +49,15 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 538686890; - PBXWorkspaceStateSaveDate = 538686890; + PBXPerProjectTemplateStateSaveDate = 569585875; + PBXWorkspaceStateSaveDate = 569585875; }; perUserProjectItems = { 8B4E546B201BAC8800B5DC2A /* PBXTextBookmark */ = 8B4E546B201BAC8800B5DC2A /* PBXTextBookmark */; - 8B4E54A2201BB36200B5DC2A /* PBXTextBookmark */ = 8B4E54A2201BB36200B5DC2A /* PBXTextBookmark */; 8B4E54E4201BB69000B5DC2A /* PBXTextBookmark */ = 8B4E54E4201BB69000B5DC2A /* PBXTextBookmark */; + 8B79268621F330ED006E9731 /* PBXBookmark */ = 8B79268621F330ED006E9731 /* PBXBookmark */; + 8B79268F21F33157006E9731 /* PBXTextBookmark */ = 8B79268F21F33157006E9731 /* PBXTextBookmark */; + 8B79269521F33157006E9731 /* PBXTextBookmark */ = 8B79269521F33157006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -66,12 +68,12 @@ fRef = 8BA05A660720730100365D66 /* PurestDrive.cpp */; name = "PurestDrive.cpp: 243"; rLen = 0; - rLoc = 10597; + rLoc = 10326; rType = 0; vrLen = 174; vrLoc = 8595; }; - 8B4E54A2201BB36200B5DC2A /* PBXTextBookmark */ = { + 8B4E54E4201BB69000B5DC2A /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A690720730100365D66 /* PurestDriveVersion.h */; name = "PurestDriveVersion.h: 55"; @@ -81,7 +83,11 @@ vrLen = 0; vrLoc = 0; }; - 8B4E54E4201BB69000B5DC2A /* PBXTextBookmark */ = { + 8B79268621F330ED006E9731 /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 8BA05A660720730100365D66 /* PurestDrive.cpp */; + }; + 8B79268F21F33157006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A690720730100365D66 /* PurestDriveVersion.h */; name = "PurestDriveVersion.h: 55"; @@ -91,12 +97,22 @@ vrLen = 0; vrLoc = 0; }; + 8B79269521F33157006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* PurestDrive.cpp */; + name = "PurestDrive.cpp: 230"; + rLen = 0; + rLoc = 10324; + rType = 0; + vrLen = 2327; + vrLoc = 8156; + }; 8BA05A660720730100365D66 /* PurestDrive.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {934, 3419}}"; - sepNavSelRange = "{9713, 510}"; - sepNavVisRange = "{7324, 2454}"; - sepNavWindowFrame = "{{459, 58}, {981, 816}}"; + sepNavIntBoundsRect = "{{0, 0}, {934, 3263}}"; + sepNavSelRange = "{10324, 0}"; + sepNavVisRange = "{8156, 2327}"; + sepNavWindowFrame = "{{255, 47}, {981, 816}}"; }; }; 8BA05A670720730100365D66 /* PurestDrive.exp */ = { @@ -124,9 +140,9 @@ }; 8BC6025B073B072D006C4272 /* PurestDrive.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {934, 1794}}"; - sepNavSelRange = "{5101, 0}"; - sepNavVisRange = "{438, 2642}"; + sepNavIntBoundsRect = "{{0, 0}, {934, 1768}}"; + sepNavSelRange = "{5140, 0}"; + sepNavVisRange = "{3607, 1646}"; sepNavWindowFrame = "{{459, 62}, {981, 816}}"; }; }; diff --git a/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.perspectivev3 index dea99d5..c9284f3 100644..100755 --- a/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.perspectivev3 @@ -222,7 +222,48 @@ </dict> </array> <key>OpenEditors</key> - <array/> + <array> + <dict> + <key>Content</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>8B79269321F33157006E9731</string> + <key>PBXProjectModuleLabel</key> + <string>PurestDrive.cpp</string> + <key>PBXSplitModuleInNavigatorKey</key> + <dict> + <key>Split0</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>8B79269421F33157006E9731</string> + <key>PBXProjectModuleLabel</key> + <string>PurestDrive.cpp</string> + <key>_historyCapacity</key> + <integer>0</integer> + <key>bookmark</key> + <string>8B79269521F33157006E9731</string> + <key>history</key> + <array> + <string>8B79268621F330ED006E9731</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}, {981, 719}}</string> + <key>PBXModuleWindowStatusBarHidden2</key> + <false/> + <key>RubberWindowFrame</key> + <string>255 103 981 760 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>630 344 810 487 0 0 1440 878 </string> + <string>466 344 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -351,11 +392,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B4E54E4201BB69000B5DC2A</string> + <string>8B79268F21F33157006E9731</string> <key>history</key> <array> <string>8B4E546B201BAC8800B5DC2A</string> - <string>8B4E54A2201BB36200B5DC2A</string> + <string>8B4E54E4201BB69000B5DC2A</string> </array> </dict> <key>SplitCount</key> @@ -369,23 +410,21 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 13}}</string> + <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> - <string>630 344 810 487 0 0 1440 878 </string> + <string>466 344 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>13pt</string> + <string>0pt</string> </dict> <dict> <key>Proportion</key> - <string>428pt</string> + <string>441pt</string> <key>Tabs</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXProjectModuleGUID</key> @@ -396,9 +435,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 401}}</string> - <key>RubberWindowFrame</key> - <string>630 344 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 414}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -452,7 +489,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 328}}</string> + <string>{{10, 27}, {603, 414}}</string> + <key>RubberWindowFrame</key> + <string>466 344 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -480,11 +519,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B4E54E5201BB69000B5DC2A</string> + <string>8B79269021F33157006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B4E54E6201BB69000B5DC2A</string> + <string>8B79269121F33157006E9731</string> <string>8B08D48D1C9DE5FB007CAA65</string> - <string>8B4E54E7201BB69000B5DC2A</string> + <string>8B79269221F33157006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -637,7 +676,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>538687120.62552202</real> + <real>569586007.10360599</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -654,11 +693,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B4E54E8201BB69000B5DC2A</string> + <string>8B79269321F33157006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/PurestDrive/PurestDrive.xcodeproj</string> </array> <key>WindowString</key> - <string>630 344 810 487 0 0 1440 878 </string> + <string>466 344 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/project.pbxproj b/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/project.pbxproj index 0d9763c..0d9763c 100644..100755 --- a/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/project.pbxproj +++ b/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/project.pbxproj diff --git a/plugins/MacAU/PurestEcho/PurestEcho.cpp b/plugins/MacAU/PurestEcho/PurestEcho.cpp index 86ef0f6..cfbb9fd 100755 --- a/plugins/MacAU/PurestEcho/PurestEcho.cpp +++ b/plugins/MacAU/PurestEcho/PurestEcho.cpp @@ -197,9 +197,7 @@ void PurestEcho::PurestEchoKernel::Reset() for(int count = 0; count < totalsamples-1; count++) {d[count] = 0;} gcount = 0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -275,11 +273,7 @@ void PurestEcho::PurestEchoKernel::Process( const Float32 *inSourceP, //you zero attenuation at 22 kilohertz: forget this at your peril ;) Float64 delaysBuffer; - - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + long double inputSample; while (nSampleFrames-- > 0) { @@ -344,19 +338,11 @@ void PurestEcho::PurestEchoKernel::Process( const Float32 *inSourceP, gcount--; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/PurestEcho/PurestEcho.h b/plugins/MacAU/PurestEcho/PurestEcho.h index 7ec5461..7ed818b 100755 --- a/plugins/MacAU/PurestEcho/PurestEcho.h +++ b/plugins/MacAU/PurestEcho/PurestEcho.h @@ -140,9 +140,7 @@ public: const static int totalsamples = 65535; Float32 d[totalsamples]; int gcount; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.pbxuser index bd4e607..4a50060 100755 --- a/plugins/MacAU/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.pbxuser @@ -49,13 +49,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528457655; - PBXWorkspaceStateSaveDate = 528457655; + PBXPerProjectTemplateStateSaveDate = 569586044; + PBXWorkspaceStateSaveDate = 569586044; }; perUserProjectItems = { 8B18E4181EE3577D005C6C5A /* PlistBookmark */ = 8B18E4181EE3577D005C6C5A /* PlistBookmark */; - 8B9D66831F7C8CE1007AB60F /* PBXTextBookmark */ = 8B9D66831F7C8CE1007AB60F /* PBXTextBookmark */; - 8B9D75A21F7F9FC4007AB60F /* PBXTextBookmark */ = 8B9D75A21F7F9FC4007AB60F /* PBXTextBookmark */; + 8B7926A321F33202006E9731 /* PBXTextBookmark */ = 8B7926A321F33202006E9731 /* PBXTextBookmark */; + 8B7926A821F3322B006E9731 /* PBXTextBookmark */ = 8B7926A821F3322B006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -73,32 +73,32 @@ rLen = 0; rLoc = 9223372036854775808; }; - 8B9D66831F7C8CE1007AB60F /* PBXTextBookmark */ = { + 8B7926A321F33202006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* PurestEcho.cpp */; - name = "PurestEcho.cpp: 325"; + name = "PurestEcho.cpp: 323"; rLen = 0; - rLoc = 15603; + rLoc = 15450; rType = 0; - vrLen = 282; - vrLoc = 13171; + vrLen = 271; + vrLoc = 13178; }; - 8B9D75A21F7F9FC4007AB60F /* PBXTextBookmark */ = { + 8B7926A821F3322B006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* PurestEcho.cpp */; - name = "PurestEcho.cpp: 325"; + name = "PurestEcho.cpp: 319"; rLen = 0; - rLoc = 15603; + rLoc = 15450; rType = 0; - vrLen = 259; - vrLoc = 13194; + vrLen = 494; + vrLoc = 13188; }; 8BA05A660720730100365D66 /* PurestEcho.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {845, 4758}}"; - sepNavSelRange = "{15603, 0}"; - sepNavVisRange = "{13194, 259}"; - sepNavWindowFrame = "{{488, 39}, {952, 839}}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 4745}}"; + sepNavSelRange = "{15450, 0}"; + sepNavVisRange = "{13188, 494}"; + sepNavWindowFrame = "{{351, 39}, {952, 839}}"; }; }; 8BA05A690720730100365D66 /* PurestEchoVersion.h */ = { @@ -111,9 +111,9 @@ }; 8BC6025B073B072D006C4272 /* PurestEcho.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {905, 1963}}"; - sepNavSelRange = "{5651, 65}"; - sepNavVisRange = "{4192, 1633}"; + sepNavIntBoundsRect = "{{0, 0}, {905, 1937}}"; + sepNavSelRange = "{5673, 0}"; + sepNavVisRange = "{4087, 1697}"; sepNavWindowFrame = "{{488, 39}, {952, 839}}"; }; }; diff --git a/plugins/MacAU/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.perspectivev3 index 07a9d55..7fbebe1 100755 --- a/plugins/MacAU/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>810</integer> - <integer>810</integer> + <integer>841</integer> + <integer>841</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -325,7 +323,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>591 207 841 654 0 0 1440 878 </string> + <string>484 210 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -353,11 +351,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D75A21F7F9FC4007AB60F</string> + <string>8B7926A821F3322B006E9731</string> <key>history</key> <array> <string>8B18E4181EE3577D005C6C5A</string> - <string>8B9D66831F7C8CE1007AB60F</string> + <string>8B7926A321F33202006E9731</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 158}}</string> + <string>{{0, 0}, {531, 142}}</string> <key>RubberWindowFrame</key> - <string>591 207 841 654 0 0 1440 878 </string> + <string>484 210 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>158pt</string> + <string>142pt</string> </dict> <dict> <key>Proportion</key> - <string>450pt</string> + <string>466pt</string> <key>Tabs</key> <array> <dict> @@ -396,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 423}}</string> - <key>RubberWindowFrame</key> - <string>591 207 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 439}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -452,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {531, 439}}</string> + <key>RubberWindowFrame</key> + <string>484 210 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -480,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D75A31F7F9FC4007AB60F</string> + <string>8B7926A921F3322B006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D75A41F7F9FC4007AB60F</string> + <string>8B7926AA21F3322B006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D75A51F7F9FC4007AB60F</string> + <string>8B7926AB21F3322B006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -657,7 +655,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528457668.15951699</real> + <real>569586219.97907698</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -674,11 +672,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D75A61F7F9FC4007AB60F</string> + <string>8B7926AC21F3322B006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/PurestEcho/PurestEcho.xcodeproj</string> </array> <key>WindowString</key> - <string>591 207 841 654 0 0 1440 878 </string> + <string>484 210 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/PurestGain/PurestGain.cpp b/plugins/MacAU/PurestGain/PurestGain.cpp index fe5477c..6bc46d5 100644..100755 --- a/plugins/MacAU/PurestGain/PurestGain.cpp +++ b/plugins/MacAU/PurestGain/PurestGain.cpp @@ -170,9 +170,7 @@ void PurestGain::PurestGainKernel::Reset() settingchase = -90.0; gainBchase = -90.0; chasespeed = 350.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -187,7 +185,6 @@ void PurestGain::PurestGainKernel::Process( const Float32 *inSourceP, UInt32 nSampleFrames = inFramesToProcess; const Float32 *sourceP = inSourceP; Float32 *destP = inDestP; - Float32 fpTemp; Float64 inputgain = GetParameter( kParam_One ); if (settingchase != inputgain) { @@ -216,8 +213,6 @@ void PurestGain::PurestGainKernel::Process( const Float32 *inSourceP, Float64 outputgain; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; long double inputSample; while (nSampleFrames-- > 0) { @@ -266,38 +261,17 @@ void PurestGain::PurestGainKernel::Process( const Float32 *inSourceP, } - if (1.0 == outputgain) - { - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - } - fpFlip = not fpFlip; - //continue noise shaping when bypassing - *destP = *sourceP; - } + if (1.0 == outputgain) *destP = *sourceP; else { inputSample *= outputgain; - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = not fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; - } - + } sourceP += inNumChannels; destP += inNumChannels; } } diff --git a/plugins/MacAU/PurestGain/PurestGain.h b/plugins/MacAU/PurestGain/PurestGain.h index 33521dd..ebdac1a 100755 --- a/plugins/MacAU/PurestGain/PurestGain.h +++ b/plugins/MacAU/PurestGain/PurestGain.h @@ -132,10 +132,7 @@ public: Float64 settingchase; Float64 gainBchase; Float64 chasespeed; - Float64 fpNShapeA; - Float64 fpNShapeB; - bool fpFlip; - + Float64 fpNShape; }; }; diff --git a/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.mode1v3 b/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.mode1v3 index 75ac472..75ac472 100644..100755 --- a/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.mode1v3 +++ b/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.mode1v3 diff --git a/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.pbxuser index 2071f3a..3035ecc 100644..100755 --- a/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.pbxuser @@ -49,19 +49,43 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 532472865; - PBXWorkspaceStateSaveDate = 532472865; + PBXPerProjectTemplateStateSaveDate = 569586279; + PBXWorkspaceStateSaveDate = 569586279; + }; + perUserProjectItems = { + 8B7926BA21F332FC006E9731 /* PBXTextBookmark */ = 8B7926BA21F332FC006E9731 /* PBXTextBookmark */; + 8B7926C421F3331E006E9731 /* PBXTextBookmark */ = 8B7926C421F3331E006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B7926BA21F332FC006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* PurestGain.cpp */; + name = "PurestGain.cpp: 239"; + rLen = 1347; + rLoc = 10034; + rType = 0; + vrLen = 189; + vrLoc = 10740; + }; + 8B7926C421F3331E006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* PurestGain.cpp */; + name = "PurestGain.cpp: 238"; + rLen = 1347; + rLoc = 10034; + rType = 0; + vrLen = 171; + vrLoc = 10772; + }; 8BA05A660720730100365D66 /* PurestGain.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {862, 3965}}"; - sepNavSelRange = "{10177, 1347}"; - sepNavVisRange = "{10721, 1649}"; - sepNavWindowFrame = "{{556, 40}, {909, 838}}"; + sepNavIntBoundsRect = "{{0, 0}, {684, 3744}}"; + sepNavSelRange = "{10034, 1347}"; + sepNavVisRange = "{10772, 171}"; + sepNavWindowFrame = "{{390, 40}, {909, 838}}"; }; }; 8BA05A690720730100365D66 /* PurestGainVersion.h */ = { @@ -74,9 +98,9 @@ }; 8BC6025B073B072D006C4272 /* PurestGain.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1885}}"; - sepNavSelRange = "{5290, 58}"; - sepNavVisRange = "{3646, 1707}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 1846}}"; + sepNavSelRange = "{5310, 0}"; + sepNavVisRange = "{3646, 1766}"; sepNavWindowFrame = "{{531, 39}, {909, 838}}"; }; }; diff --git a/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.perspectivev3 index 11f6e1d..7e92ba1 100644..100755 --- a/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>810</integer> + <integer>810</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>630 375 810 487 0 0 1440 878 </string> + <string>510 325 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -340,7 +338,7 @@ <key>PBXProjectModuleGUID</key> <string>8BC521591DB3E3F700E72CD6</string> <key>PBXProjectModuleLabel</key> - <string></string> + <string>PurestGain.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -348,7 +346,15 @@ <key>PBXProjectModuleGUID</key> <string>8BC5215A1DB3E3F700E72CD6</string> <key>PBXProjectModuleLabel</key> - <string></string> + <string>PurestGain.cpp</string> + <key>_historyCapacity</key> + <integer>0</integer> + <key>bookmark</key> + <string>8B7926C421F3331E006E9731</string> + <key>history</key> + <array> + <string>8B7926BA21F332FC006E9731</string> + </array> </dict> <key>SplitCount</key> <string>1</string> @@ -361,18 +367,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 0}}</string> + <string>{{0, 0}, {603, 86}}</string> <key>RubberWindowFrame</key> - <string>630 375 810 487 0 0 1440 878 </string> + <string>510 325 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>0pt</string> + <string>86pt</string> </dict> <dict> <key>Proportion</key> - <string>441pt</string> + <string>355pt</string> <key>Tabs</key> <array> <dict> @@ -386,9 +392,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> - <key>RubberWindowFrame</key> - <string>630 375 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 328}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -442,7 +446,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {603, 328}}</string> + <key>RubberWindowFrame</key> + <string>510 325 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -470,11 +476,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BB5DD741FBCE50A008B4570</string> + <string>8B7926C521F3331E006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BB5DD751FBCE50A008B4570</string> + <string>8B7926C621F3331E006E9731</string> <string>8BC521591DB3E3F700E72CD6</string> - <string>8BB5DD761FBCE50A008B4570</string> + <string>8B7926C721F3331E006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -627,7 +633,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>532473098.399234</real> + <real>569586462.880615</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -644,11 +650,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BB5DD771FBCE50A008B4570</string> + <string>8B7926C821F3331E006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/PurestGain/PurestGain.xcodeproj</string> </array> <key>WindowString</key> - <string>630 375 810 487 0 0 1440 878 </string> + <string>510 325 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/PurestGain/PurestGain.xcodeproj/project.pbxproj b/plugins/MacAU/PurestGain/PurestGain.xcodeproj/project.pbxproj index 7426519..7426519 100644..100755 --- a/plugins/MacAU/PurestGain/PurestGain.xcodeproj/project.pbxproj +++ b/plugins/MacAU/PurestGain/PurestGain.xcodeproj/project.pbxproj diff --git a/plugins/MacAU/PurestWarm/PurestWarm.cpp b/plugins/MacAU/PurestWarm/PurestWarm.cpp index f72cf4b..0763f84 100755 --- a/plugins/MacAU/PurestWarm/PurestWarm.cpp +++ b/plugins/MacAU/PurestWarm/PurestWarm.cpp @@ -173,9 +173,7 @@ ComponentResult PurestWarm::Initialize() //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void PurestWarm::PurestWarmKernel::Reset() { - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -190,9 +188,6 @@ void PurestWarm::PurestWarmKernel::Process( const Float32 *inSourceP, UInt32 nSampleFrames = inFramesToProcess; const Float32 *sourceP = inSourceP; Float32 *destP = inDestP; - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; int polarity = (int) GetParameter( kParam_One ); long double inputSample; @@ -229,55 +224,25 @@ void PurestWarm::PurestWarmKernel::Process( const Float32 *inSourceP, if (inputSample < 0) { inputSample = -(sin(-inputSample*1.57079634)/1.57079634); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - //end noise shaping on 32 bit output - } else { - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - } else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - } + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither } } else { - if (inputSample > 0) { inputSample = sin(inputSample*1.57079634)/1.57079634; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - //end noise shaping on 32 bit output - } else { - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - } else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - } + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither } } //that's it. Only applies on one half of the waveform, other half is passthrough untouched. - //even the floating point noise shaping to the 32 bit buss is only applied as needed. - fpFlip = not fpFlip; + //even the dither to the 32 bit buss is only applied as needed. *destP = inputSample; diff --git a/plugins/MacAU/PurestWarm/PurestWarm.h b/plugins/MacAU/PurestWarm/PurestWarm.h index 200035d..1cf3eef 100755 --- a/plugins/MacAU/PurestWarm/PurestWarm.h +++ b/plugins/MacAU/PurestWarm/PurestWarm.h @@ -129,9 +129,7 @@ public: virtual void Reset(); private: - Float64 fpNShapeA; - Float64 fpNShapeB; - bool fpFlip; + Float64 fpNShape; }; }; diff --git a/plugins/MacAU/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.pbxuser index cc141a4..2b7b35c 100755 --- a/plugins/MacAU/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.pbxuser @@ -3,6 +3,8 @@ 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; activeTarget = 8D01CCC60486CAD60068D4B7 /* PurestWarm */; + breakpoints = ( + ); codeSenseManager = 8BD3CCB9148830B20062E48C /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,25 +51,54 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 532477098; - PBXWorkspaceStateSaveDate = 532477098; + PBXPerProjectTemplateStateSaveDate = 569586628; + PBXWorkspaceStateSaveDate = 569586628; }; perUserProjectItems = { + 8B7926F621F336C4006E9731 /* PBXTextBookmark */ = 8B7926F621F336C4006E9731 /* PBXTextBookmark */; + 8B7926F721F336C4006E9731 /* XCBuildMessageTextBookmark */ = 8B7926F721F336C4006E9731 /* XCBuildMessageTextBookmark */; + 8B7926F821F336C4006E9731 /* PBXTextBookmark */ = 8B7926F821F336C4006E9731 /* PBXTextBookmark */; 8BB5DDAD1FBCF48A008B4570 /* PBXTextBookmark */ = 8BB5DDAD1FBCF48A008B4570 /* PBXTextBookmark */; - 8BB5DDAE1FBCF48A008B4570 /* PBXTextBookmark */ = 8BB5DDAE1FBCF48A008B4570 /* PBXTextBookmark */; - 8BB5DDB01FBCF48A008B4570 /* PBXTextBookmark */ = 8BB5DDB01FBCF48A008B4570 /* PBXTextBookmark */; - 8BB5DDC21FBCF5C0008B4570 /* PBXTextBookmark */ = 8BB5DDC21FBCF5C0008B4570 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B7926F621F336C4006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* PurestWarm.h */; + name = "PurestWarm.h: 132"; + rLen = 0; + rLoc = 5200; + rType = 0; + vrLen = 227; + vrLoc = 2866; + }; + 8B7926F721F336C4006E9731 /* XCBuildMessageTextBookmark */ = { + isa = PBXTextBookmark; + comments = "Unused variable 'fpTemp'"; + fRef = 8BA05A660720730100365D66 /* PurestWarm.cpp */; + fallbackIsa = XCBuildMessageTextBookmark; + rLen = 1; + rLoc = 190; + rType = 1; + }; + 8B7926F821F336C4006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* PurestWarm.cpp */; + name = "PurestWarm.cpp: 191"; + rLen = 0; + rLoc = 8370; + rType = 0; + vrLen = 216; + vrLoc = 8263; + }; 8BA05A660720730100365D66 /* PurestWarm.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {885, 3887}}"; - sepNavSelRange = "{10000, 1649}"; - sepNavVisRange = "{10272, 1465}"; - sepNavWindowFrame = "{{534, 57}, {932, 815}}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 3263}}"; + sepNavSelRange = "{8370, 0}"; + sepNavVisRange = "{8263, 216}"; + sepNavWindowFrame = "{{316, 63}, {932, 815}}"; }; }; 8BA05A670720730100365D66 /* PurestWarm.exp */ = { @@ -95,41 +126,11 @@ vrLen = 429; vrLoc = 2236; }; - 8BB5DDAE1FBCF48A008B4570 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* PurestWarm.cpp */; - name = "PurestWarm.cpp: 226"; - rLen = 0; - rLoc = 9997; - rType = 0; - vrLen = 229; - vrLoc = 10272; - }; - 8BB5DDB01FBCF48A008B4570 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* PurestWarm.h */; - name = "PurestWarm.h: 134"; - rLen = 0; - rLoc = 5237; - rType = 0; - vrLen = 286; - vrLoc = 2808; - }; - 8BB5DDC21FBCF5C0008B4570 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* PurestWarm.h */; - name = "PurestWarm.h: 134"; - rLen = 0; - rLoc = 5237; - rType = 0; - vrLen = 285; - vrLoc = 2808; - }; 8BC6025B073B072D006C4272 /* PurestWarm.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {761, 2119}}"; - sepNavSelRange = "{5237, 0}"; - sepNavVisRange = "{2808, 285}"; + sepNavIntBoundsRect = "{{0, 0}, {628, 2080}}"; + sepNavSelRange = "{5200, 0}"; + sepNavVisRange = "{2866, 227}"; sepNavWindowFrame = "{{15, 58}, {932, 815}}"; }; }; diff --git a/plugins/MacAU/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.perspectivev3 index cfd223b..83128df 100755 --- a/plugins/MacAU/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -300,7 +298,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>4</integer> + <integer>3</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> @@ -324,7 +322,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>616 391 810 487 0 0 1440 878 </string> + <string>361 361 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -340,7 +338,7 @@ <key>PBXProjectModuleGUID</key> <string>8BB5DD7C1FBCE73D008B4570</string> <key>PBXProjectModuleLabel</key> - <string>PurestWarm.h</string> + <string>PurestWarm.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -348,16 +346,16 @@ <key>PBXProjectModuleGUID</key> <string>8BB5DD7D1FBCE73D008B4570</string> <key>PBXProjectModuleLabel</key> - <string>PurestWarm.h</string> + <string>PurestWarm.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BB5DDC21FBCF5C0008B4570</string> + <string>8B7926F821F336C4006E9731</string> <key>history</key> <array> <string>8BB5DDAD1FBCF48A008B4570</string> - <string>8BB5DDAE1FBCF48A008B4570</string> - <string>8BB5DDB01FBCF48A008B4570</string> + <string>8B7926F621F336C4006E9731</string> + <string>8B7926F721F336C4006E9731</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 117}}</string> + <string>{{0, 0}, {603, 102}}</string> <key>RubberWindowFrame</key> - <string>616 391 810 487 0 0 1440 878 </string> + <string>361 361 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>117pt</string> + <string>102pt</string> </dict> <dict> <key>Proportion</key> - <string>324pt</string> + <string>339pt</string> <key>Tabs</key> <array> <dict> @@ -396,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 297}}</string> - <key>RubberWindowFrame</key> - <string>616 391 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 312}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -452,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {603, 312}}</string> + <key>RubberWindowFrame</key> + <string>361 361 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -480,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BB5DDBD1FBCF4AB008B4570</string> + <string>8B7926F921F336C4006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BB5DDBE1FBCF4AB008B4570</string> + <string>8B7926FA21F336C4006E9731</string> <string>8BB5DD7C1FBCE73D008B4570</string> - <string>8BB5DDBF1FBCF4AB008B4570</string> + <string>8B7926FB21F336C4006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -521,7 +519,7 @@ <key>Identifier</key> <string>perspective.debug</string> <key>IsVertical</key> - <integer>1</integer> + <true/> <key>Layout</key> <array> <dict> @@ -535,12 +533,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> @@ -589,8 +587,6 @@ </dict> <key>GeometryConfiguration</key> <dict> - <key>DebugConsoleDrawerSize</key> - <string>{100, 120}</string> <key>DebugConsoleVisible</key> <string>None</string> <key>DebugConsoleWindowFrame</key> @@ -599,11 +595,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> @@ -611,19 +621,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>8B7926FC21F336C4006E9731</string> <string>1CCC7628064C1048000F2A68</string> <string>1CCC7629064C1048000F2A68</string> - <string>1CC8E6A7069209BD00BB180A</string> + <string>8B7926FD21F336C4006E9731</string> + <string>8B7926FE21F336C4006E9731</string> + <string>8B7926FF21F336C4006E9731</string> + <string>8B79270021F336C4006E9731</string> + <string>8B79270121F336C4006E9731</string> </array> + <key>ToolbarConfigUserDefaultsMinorVersion</key> + <string>2</string> <key>ToolbarConfiguration</key> <string>xcode.toolbar.config.debugV3</string> </dict> @@ -637,7 +655,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>532477376.88819098</real> + <real>569587396.45455897</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -654,11 +672,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BB5DDC31FBCF5C0008B4570</string> + <string>8B79270221F336C4006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/PurestWarm/PurestWarm.xcodeproj</string> </array> <key>WindowString</key> - <string>616 391 810 487 0 0 1440 878 </string> + <string>361 361 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Pyewacket/Pyewacket.cpp b/plugins/MacAU/Pyewacket/Pyewacket.cpp index f80a48b..bb8583b 100755 --- a/plugins/MacAU/Pyewacket/Pyewacket.cpp +++ b/plugins/MacAU/Pyewacket/Pyewacket.cpp @@ -189,11 +189,8 @@ ComponentResult Pyewacket::Initialize() //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ComponentResult Pyewacket::Reset(AudioUnitScope inScope, AudioUnitElement inElement) { - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; chase = 1.0; lastrectifierL = 0.0; lastrectifierR = 0.0; @@ -218,7 +215,6 @@ OSStatus Pyewacket::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla overallscale *= GetSampleRate(); if (overallscale < 0.1) overallscale = 1.0; //insanity check - Float32 fpTemp; long double fpOld = 0.618033988749894848204586; //golden ratio! long double fpNew = 1.0 - fpOld; long double inputSampleL; @@ -336,27 +332,14 @@ OSStatus Pyewacket::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla inputSampleR *= outputGain; } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((Float32)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *outputL = inputSampleL; *outputR = inputSampleR; diff --git a/plugins/MacAU/Pyewacket/Pyewacket.h b/plugins/MacAU/Pyewacket/Pyewacket.h index af1110c..f456046 100755 --- a/plugins/MacAU/Pyewacket/Pyewacket.h +++ b/plugins/MacAU/Pyewacket/Pyewacket.h @@ -116,11 +116,8 @@ public: private: - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; Float64 chase; Float64 lastrectifierL; Float64 lastrectifierR; diff --git a/plugins/MacAU/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.pbxuser index ee55037..54c2d4e 100755 --- a/plugins/MacAU/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.pbxuser @@ -51,13 +51,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528457728; - PBXWorkspaceStateSaveDate = 528457728; + PBXPerProjectTemplateStateSaveDate = 569677333; + PBXWorkspaceStateSaveDate = 569677333; }; perUserProjectItems = { 8B3839B91DB9420B00AB1616 /* PlistBookmark */ = 8B3839B91DB9420B00AB1616 /* PlistBookmark */; - 8B9D724D1F7EFF2C007AB60F /* PBXTextBookmark */ = 8B9D724D1F7EFF2C007AB60F /* PBXTextBookmark */; - 8B9D75BE1F7FA023007AB60F /* PBXTextBookmark */ = 8B9D75BE1F7FA023007AB60F /* PBXTextBookmark */; + 8B792F7621F4989B006E9731 /* PBXTextBookmark */ = 8B792F7621F4989B006E9731 /* PBXTextBookmark */; + 8B792F7821F4989B006E9731 /* PBXTextBookmark */ = 8B792F7821F4989B006E9731 /* PBXTextBookmark */; + 8B792F7D21F498CC006E9731 /* PBXTextBookmark */ = 8B792F7D21F498CC006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -75,31 +76,41 @@ rLen = 0; rLoc = 9223372036854775808; }; - 8B9D724D1F7EFF2C007AB60F /* PBXTextBookmark */ = { + 8B792F7621F4989B006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* Pyewacket.h */; - name = "Pyewacket.h: 115"; + name = "Pyewacket.h: 121"; rLen = 0; - rLoc = 4914; + rLoc = 5041; rType = 0; - vrLen = 292; - vrLoc = 4980; + vrLen = 760; + vrLoc = 4454; }; - 8B9D75BE1F7FA023007AB60F /* PBXTextBookmark */ = { + 8B792F7821F4989B006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* Pyewacket.h */; - name = "Pyewacket.h: 115"; + fRef = 8BA05A660720730100365D66 /* Pyewacket.cpp */; + name = "Pyewacket.cpp: 344"; + rLen = 0; + rLoc = 14633; + rType = 0; + vrLen = 600; + vrLoc = 13667; + }; + 8B792F7D21F498CC006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Pyewacket.cpp */; + name = "Pyewacket.cpp: 218"; rLen = 0; - rLoc = 4914; + rLoc = 9498; rType = 0; - vrLen = 199; - vrLoc = 4980; + vrLen = 573; + vrLoc = 9179; }; 8BA05A660720730100365D66 /* Pyewacket.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {691, 4966}}"; - sepNavSelRange = "{10242, 0}"; - sepNavVisRange = "{10210, 2358}"; + sepNavIntBoundsRect = "{{0, 0}, {656, 4745}}"; + sepNavSelRange = "{9498, 0}"; + sepNavVisRange = "{9179, 573}"; sepNavWindowFrame = "{{694, 43}, {731, 835}}"; }; }; @@ -113,9 +124,9 @@ }; 8BC6025B073B072D006C4272 /* Pyewacket.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1833}}"; - sepNavSelRange = "{4914, 0}"; - sepNavVisRange = "{4980, 199}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 2028}}"; + sepNavSelRange = "{5041, 0}"; + sepNavVisRange = "{4454, 760}"; sepNavWindowFrame = "{{681, 43}, {731, 835}}"; }; }; diff --git a/plugins/MacAU/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.perspectivev3 index 65d2b4b..ecead33 100755 --- a/plugins/MacAU/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -282,7 +280,7 @@ <dict> <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> <array> - <real>288</real> + <real>188</real> </array> <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> <array> @@ -308,7 +306,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {288, 595}}</string> + <string>{{0, 0}, {188, 595}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -318,30 +316,32 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {305, 613}}</string> + <string>{{0, 0}, {205, 613}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> - <real>288</real> + <real>188</real> </array> <key>RubberWindowFrame</key> - <string>585 189 841 654 0 0 1440 878 </string> + <string>447 195 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> <key>Proportion</key> - <string>305pt</string> + <string>205pt</string> </dict> <dict> <key>Dock</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXProjectModuleGUID</key> <string>8BD7274A1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>Pyewacket.h</string> + <string>Pyewacket.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -349,15 +349,16 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274B1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>Pyewacket.h</string> + <string>Pyewacket.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D75BE1F7FA023007AB60F</string> + <string>8B792F7D21F498CC006E9731</string> <key>history</key> <array> <string>8B3839B91DB9420B00AB1616</string> - <string>8B9D724D1F7EFF2C007AB60F</string> + <string>8B792F7621F4989B006E9731</string> + <string>8B792F7821F4989B006E9731</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +372,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 202}}</string> + <string>{{0, 0}, {631, 226}}</string> <key>RubberWindowFrame</key> - <string>585 189 841 654 0 0 1440 878 </string> + <string>447 195 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>202pt</string> + <string>226pt</string> </dict> <dict> <key>Proportion</key> - <string>406pt</string> + <string>382pt</string> <key>Tabs</key> <array> <dict> @@ -396,9 +397,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 379}}</string> - <key>RubberWindowFrame</key> - <string>585 189 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 198}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -452,7 +451,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 315}}</string> + <string>{{10, 27}, {631, 355}}</string> + <key>RubberWindowFrame</key> + <string>447 195 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -461,7 +462,7 @@ </dict> </array> <key>Proportion</key> - <string>531pt</string> + <string>631pt</string> </dict> </array> <key>Name</key> @@ -480,11 +481,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D75BF1F7FA023007AB60F</string> + <string>8B792F7E21F498CC006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D75C01F7FA023007AB60F</string> + <string>8B792F7F21F498CC006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D75C11F7FA023007AB60F</string> + <string>8B792F8021F498CC006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -657,7 +658,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528457763.81351399</real> + <real>569678028.908059</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -674,11 +675,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D75C21F7FA023007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/Pyewacket/Pyewacket.xcodeproj</string> </array> <key>WindowString</key> - <string>585 189 841 654 0 0 1440 878 </string> + <string>447 195 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/PyewacketMono/PyewacketMono.cpp b/plugins/MacAU/PyewacketMono/PyewacketMono.cpp index 0bc0096..8ea6ab2 100755 --- a/plugins/MacAU/PyewacketMono/PyewacketMono.cpp +++ b/plugins/MacAU/PyewacketMono/PyewacketMono.cpp @@ -174,9 +174,7 @@ ComponentResult PyewacketMono::Initialize() //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void PyewacketMono::PyewacketMonoKernel::Reset() { - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; chase = 1.0; lastrectifier = 0.0; } @@ -198,7 +196,6 @@ void PyewacketMono::PyewacketMonoKernel::Process( const Float32 *inSourceP, overallscale *= GetSampleRate(); if (overallscale < 0.1) overallscale = 1.0; //insanity check - Float32 fpTemp; long double fpOld = 0.618033988749894848204586; //golden ratio! long double fpNew = 1.0 - fpOld; long double inputSample; @@ -283,19 +280,11 @@ void PyewacketMono::PyewacketMonoKernel::Process( const Float32 *inSourceP, inputSample *= outputGain; } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/PyewacketMono/PyewacketMono.h b/plugins/MacAU/PyewacketMono/PyewacketMono.h index f3c89ae..469c9f0 100755 --- a/plugins/MacAU/PyewacketMono/PyewacketMono.h +++ b/plugins/MacAU/PyewacketMono/PyewacketMono.h @@ -130,9 +130,7 @@ public: virtual void Reset(); private: - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; Float64 chase; Float64 lastrectifier; }; diff --git a/plugins/MacAU/PyewacketMono/PyewacketMono.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PyewacketMono/PyewacketMono.xcodeproj/christopherjohnson.pbxuser index 59685c5..dda132c 100755 --- a/plugins/MacAU/PyewacketMono/PyewacketMono.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/PyewacketMono/PyewacketMono.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 292, + 383, 20, 48, 43, @@ -49,14 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528457773; - PBXWorkspaceStateSaveDate = 528457773; + PBXPerProjectTemplateStateSaveDate = 569678053; + PBXWorkspaceStateSaveDate = 569678053; }; perUserProjectItems = { 8B3839AE1DB941F200AB1616 /* PlistBookmark */ = 8B3839AE1DB941F200AB1616 /* PlistBookmark */; - 8B383A0D1DB9520500AB1616 /* PBXTextBookmark */ = 8B383A0D1DB9520500AB1616 /* PBXTextBookmark */; - 8B9D66C51F7C8D8D007AB60F /* PBXTextBookmark */ = 8B9D66C51F7C8D8D007AB60F /* PBXTextBookmark */; - 8B9D75CD1F7FA05E007AB60F /* PBXTextBookmark */ = 8B9D75CD1F7FA05E007AB60F /* PBXTextBookmark */; + 8B792F8C21F4992B006E9731 /* PBXTextBookmark */ = 8B792F8C21F4992B006E9731 /* PBXTextBookmark */; + 8B792F8E21F4992B006E9731 /* PBXTextBookmark */ = 8B792F8E21F4992B006E9731 /* PBXTextBookmark */; + 8B792F9321F4993E006E9731 /* PBXTextBookmark */ = 8B792F9321F4993E006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -74,41 +74,41 @@ rLen = 0; rLoc = 9223372036854775808; }; - 8B383A0D1DB9520500AB1616 /* PBXTextBookmark */ = { + 8B792F8C21F4992B006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* PyewacketMono.h */; - name = "PyewacketMono.h: 159"; + name = "PyewacketMono.h: 133"; rLen = 0; - rLoc = 5419; + rLoc = 5336; rType = 0; - vrLen = 0; - vrLoc = 5529; + vrLen = 254; + vrLoc = 5234; }; - 8B9D66C51F7C8D8D007AB60F /* PBXTextBookmark */ = { + 8B792F8E21F4992B006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* PyewacketMono.cpp */; - name = "PyewacketMono.cpp: 210"; + name = "PyewacketMono.cpp: 288"; rLen = 0; - rLoc = 9389; + rLoc = 12575; rType = 0; - vrLen = 572; - vrLoc = 10834; + vrLen = 970; + vrLoc = 11693; }; - 8B9D75CD1F7FA05E007AB60F /* PBXTextBookmark */ = { + 8B792F9321F4993E006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* PyewacketMono.cpp */; - name = "PyewacketMono.cpp: 210"; + name = "PyewacketMono.cpp: 288"; rLen = 0; - rLoc = 9389; + rLoc = 12575; rType = 0; - vrLen = 530; - vrLoc = 10834; + vrLen = 989; + vrLoc = 11674; }; 8BA05A660720730100365D66 /* PyewacketMono.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {691, 4056}}"; - sepNavSelRange = "{9389, 0}"; - sepNavVisRange = "{10834, 530}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 4030}}"; + sepNavSelRange = "{12575, 0}"; + sepNavVisRange = "{11674, 989}"; sepNavWindowFrame = "{{761, 39}, {679, 835}}"; }; }; @@ -122,9 +122,9 @@ }; 8BC6025B073B072D006C4272 /* PyewacketMono.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1872}}"; - sepNavSelRange = "{5378, 17}"; - sepNavVisRange = "{3870, 1659}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 2041}}"; + sepNavSelRange = "{5336, 0}"; + sepNavVisRange = "{5234, 254}"; sepNavWindowFrame = "{{657, 41}, {731, 835}}"; }; }; diff --git a/plugins/MacAU/PyewacketMono/PyewacketMono.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/PyewacketMono/PyewacketMono.xcodeproj/christopherjohnson.perspectivev3 index 60a47c2..3572251 100755 --- a/plugins/MacAU/PyewacketMono/PyewacketMono.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/PyewacketMono/PyewacketMono.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -282,7 +280,7 @@ <dict> <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> <array> - <real>288</real> + <real>197</real> </array> <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> <array> @@ -308,7 +306,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {288, 595}}</string> + <string>{{0, 0}, {197, 595}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -318,19 +316,19 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {305, 613}}</string> + <string>{{0, 0}, {214, 613}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> - <real>288</real> + <real>197</real> </array> <key>RubberWindowFrame</key> - <string>579 196 841 654 0 0 1440 878 </string> + <string>446 198 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> <key>Proportion</key> - <string>305pt</string> + <string>214pt</string> </dict> <dict> <key>Dock</key> @@ -353,12 +351,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D75CD1F7FA05E007AB60F</string> + <string>8B792F9321F4993E006E9731</string> <key>history</key> <array> <string>8B3839AE1DB941F200AB1616</string> - <string>8B383A0D1DB9520500AB1616</string> - <string>8B9D66C51F7C8D8D007AB60F</string> + <string>8B792F8C21F4992B006E9731</string> + <string>8B792F8E21F4992B006E9731</string> </array> </dict> <key>SplitCount</key> @@ -372,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 229}}</string> + <string>{{0, 0}, {622, 417}}</string> <key>RubberWindowFrame</key> - <string>579 196 841 654 0 0 1440 878 </string> + <string>446 198 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>229pt</string> + <string>417pt</string> </dict> <dict> <key>Proportion</key> - <string>379pt</string> + <string>191pt</string> <key>Tabs</key> <array> <dict> @@ -397,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 352}}</string> - <key>RubberWindowFrame</key> - <string>579 196 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {622, 164}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -453,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 339}}</string> + <string>{{10, 27}, {622, 164}}</string> + <key>RubberWindowFrame</key> + <string>446 198 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -462,7 +460,7 @@ </dict> </array> <key>Proportion</key> - <string>531pt</string> + <string>622pt</string> </dict> </array> <key>Name</key> @@ -481,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D75CE1F7FA05E007AB60F</string> + <string>8B792F9421F4993E006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D75CF1F7FA05E007AB60F</string> + <string>8B792F9521F4993E006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D75D01F7FA05E007AB60F</string> + <string>8B792F9621F4993E006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -658,7 +656,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528457822.27237201</real> + <real>569678142.79066706</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -675,11 +673,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D75D11F7FA05E007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/PyewacketMono/PyewacketMono.xcodeproj</string> </array> <key>WindowString</key> - <string>579 196 841 654 0 0 1440 878 </string> + <string>446 198 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Righteous4/Righteous4.cpp b/plugins/MacAU/Righteous4/Righteous4.cpp index f20e5ec..be1a1f6 100755 --- a/plugins/MacAU/Righteous4/Righteous4.cpp +++ b/plugins/MacAU/Righteous4/Righteous4.cpp @@ -412,14 +412,11 @@ void Righteous4::Righteous4Kernel::Process( const Float32 *inSourceP, //output dither section if (bitDepth == 3) { - //noise shaping to 32-bit floating point - Float32 fpTemp = inputSample; - fpNShape += (inputSample-fpTemp); - inputSample += fpNShape; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither } else { //entire Naturalize section used when not on 32 bit out @@ -519,10 +516,5 @@ void Righteous4::Righteous4Kernel::Process( const Float32 *inSourceP, sourceP += inNumChannels; destP += inNumChannels; } - fpNShape *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacAU/Righteous4/Righteous4.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Righteous4/Righteous4.xcodeproj/christopherjohnson.pbxuser index b81dbe3..9104560 100755 --- a/plugins/MacAU/Righteous4/Righteous4.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Righteous4/Righteous4.xcodeproj/christopherjohnson.pbxuser @@ -49,19 +49,50 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 548108471; - PBXWorkspaceStateSaveDate = 548108471; + PBXPerProjectTemplateStateSaveDate = 569678261; + PBXWorkspaceStateSaveDate = 569678261; }; perUserProjectItems = { + 8B792FA321F49A2F006E9731 /* PBXTextBookmark */ = 8B792FA321F49A2F006E9731 /* PBXTextBookmark */; + 8B792FA521F49A2F006E9731 /* PBXTextBookmark */ = 8B792FA521F49A2F006E9731 /* PBXTextBookmark */; + 8B792FAA21F49A42006E9731 /* PBXTextBookmark */ = 8B792FAA21F49A42006E9731 /* PBXTextBookmark */; 8B7E3DB220A6725600482CB5 /* PBXTextBookmark */ = 8B7E3DB220A6725600482CB5 /* PBXTextBookmark */; 8B904BD0209D3B52008CBAD8 /* PlistBookmark */ = 8B904BD0209D3B52008CBAD8 /* PlistBookmark */; - 8BBFF82820AD804F005650EF /* PBXTextBookmark */ = 8BBFF82820AD804F005650EF /* PBXTextBookmark */; - 8BBFF86720AD84A3005650EF /* PBXTextBookmark */ = 8BBFF86720AD84A3005650EF /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B792FA321F49A2F006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* Righteous4.h */; + name = "Righteous4.h: 169"; + rLen = 0; + rLoc = 6101; + rType = 0; + vrLen = 439; + vrLoc = 5895; + }; + 8B792FA521F49A2F006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Righteous4.cpp */; + name = "Righteous4.cpp: 355"; + rLen = 0; + rLoc = 16702; + rType = 0; + vrLen = 960; + vrLoc = 18184; + }; + 8B792FAA21F49A42006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Righteous4.cpp */; + name = "Righteous4.cpp: 355"; + rLen = 0; + rLoc = 16702; + rType = 0; + vrLen = 960; + vrLoc = 18184; + }; 8B7E3DB220A6725600482CB5 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A690720730100365D66 /* Righteous4Version.h */; @@ -86,10 +117,10 @@ }; 8BA05A660720730100365D66 /* Righteous4.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {838, 6825}}"; + sepNavIntBoundsRect = "{{0, 0}, {838, 6981}}"; sepNavSelRange = "{16702, 0}"; - sepNavVisRange = "{16728, 303}"; - sepNavWindowFrame = "{{-2, 59}, {1007, 819}}"; + sepNavVisRange = "{18184, 960}"; + sepNavWindowFrame = "{{290, 59}, {1007, 819}}"; }; }; 8BA05A690720730100365D66 /* Righteous4Version.h */ = { @@ -100,31 +131,11 @@ sepNavWindowFrame = "{{15, 41}, {816, 832}}"; }; }; - 8BBFF82820AD804F005650EF /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* Righteous4.cpp */; - name = "Righteous4.cpp: 355"; - rLen = 0; - rLoc = 16702; - rType = 0; - vrLen = 303; - vrLoc = 16728; - }; - 8BBFF86720AD84A3005650EF /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* Righteous4.cpp */; - name = "Righteous4.cpp: 355"; - rLen = 0; - rLoc = 16702; - rType = 0; - vrLen = 303; - vrLoc = 16728; - }; 8BC6025B073B072D006C4272 /* Righteous4.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 2392}}"; + sepNavIntBoundsRect = "{{0, 0}, {803, 2756}}"; sepNavSelRange = "{6101, 0}"; - sepNavVisRange = "{5232, 1102}"; + sepNavVisRange = "{5895, 439}"; sepNavWindowFrame = "{{687, 14}, {816, 832}}"; }; }; diff --git a/plugins/MacAU/Righteous4/Righteous4.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Righteous4/Righteous4.xcodeproj/christopherjohnson.perspectivev3 index 90a4f18..fae6e0d 100755 --- a/plugins/MacAU/Righteous4/Righteous4.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Righteous4/Righteous4.xcodeproj/christopherjohnson.perspectivev3 @@ -352,12 +352,13 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BBFF86720AD84A3005650EF</string> + <string>8B792FAA21F49A42006E9731</string> <key>history</key> <array> <string>8B904BD0209D3B52008CBAD8</string> <string>8B7E3DB220A6725600482CB5</string> - <string>8BBFF82820AD804F005650EF</string> + <string>8B792FA321F49A2F006E9731</string> + <string>8B792FA521F49A2F006E9731</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +372,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 74}}</string> + <string>{{0, 0}, {531, 370}}</string> <key>RubberWindowFrame</key> <string>599 193 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>74pt</string> + <string>370pt</string> </dict> <dict> <key>Proportion</key> - <string>534pt</string> + <string>238pt</string> <key>Tabs</key> <array> <dict> @@ -396,7 +397,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 507}}</string> + <string>{{10, 27}, {531, 211}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -450,7 +451,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 507}}</string> + <string>{{10, 27}, {531, 211}}</string> <key>RubberWindowFrame</key> <string>599 193 841 654 0 0 1440 878 </string> </dict> @@ -480,11 +481,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBFF86820AD84A3005650EF</string> + <string>8B792FAB21F49A42006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBFF86920AD84A3005650EF</string> + <string>8B792FAC21F49A42006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8BBFF86A20AD84A3005650EF</string> + <string>8B792FAD21F49A42006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -657,7 +658,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>548242595.39476001</real> + <real>569678402.692945</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -674,7 +675,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BBFF86B20AD84A3005650EF</string> <string>/Users/christopherjohnson/Desktop/MacAU/Righteous4/Righteous4.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacAU/SideDull/SideDull.cpp b/plugins/MacAU/SideDull/SideDull.cpp index 72793e5..2b75d72 100755 --- a/plugins/MacAU/SideDull/SideDull.cpp +++ b/plugins/MacAU/SideDull/SideDull.cpp @@ -176,11 +176,8 @@ ComponentResult SideDull::Reset(AudioUnitScope inScope, AudioUnitElement inElem iirSampleA = 0.0; iirSampleB = 0.0; flip = true; - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; - + fpNShapeL = 0.0; + fpNShapeR = 0.0; return noErr; } @@ -209,10 +206,6 @@ OSStatus SideDull::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlag overallscale *= GetSampleRate(); Float64 iirAmount = pow(GetParameter( kParam_One ),3)/overallscale; - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; - while (nSampleFrames-- > 0) { inputSampleL = *inputL; inputSampleR = *inputR; @@ -273,28 +266,16 @@ OSStatus SideDull::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlag inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; - - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } flip = !flip; - //end noise shaping on 32 bit output + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((Float32)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *outputL = inputSampleL; *outputR = inputSampleR; diff --git a/plugins/MacAU/SideDull/SideDull.h b/plugins/MacAU/SideDull/SideDull.h index 450a5f3..85fd8d5 100755 --- a/plugins/MacAU/SideDull/SideDull.h +++ b/plugins/MacAU/SideDull/SideDull.h @@ -112,11 +112,8 @@ private: Float64 iirSampleA; Float64 iirSampleB; bool flip; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; - + long double fpNShapeL; + long double fpNShapeR; }; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/plugins/MacAU/SideDull/SideDull.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/SideDull/SideDull.xcodeproj/christopherjohnson.pbxuser index 6bdc1d7..c5161bd 100755 --- a/plugins/MacAU/SideDull/SideDull.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/SideDull/SideDull.xcodeproj/christopherjohnson.pbxuser @@ -12,7 +12,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 292, + 417, 20, 48, 43, @@ -51,45 +51,55 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528457832; - PBXWorkspaceStateSaveDate = 528457832; + PBXPerProjectTemplateStateSaveDate = 569678436; + PBXWorkspaceStateSaveDate = 569678436; }; perUserProjectItems = { - 8B9D66D91F7C8E9B007AB60F /* PBXTextBookmark */ = 8B9D66D91F7C8E9B007AB60F /* PBXTextBookmark */; - 8B9D75DC1F7FA07D007AB60F /* PBXTextBookmark */ = 8B9D75DC1F7FA07D007AB60F /* PBXTextBookmark */; + 8B792FB921F49AD2006E9731 /* PBXTextBookmark */ = 8B792FB921F49AD2006E9731 /* PBXTextBookmark */; + 8B792FBB21F49AD2006E9731 /* PBXTextBookmark */ = 8B792FBB21F49AD2006E9731 /* PBXTextBookmark */; + 8B792FC021F49AEA006E9731 /* PBXTextBookmark */ = 8B792FC021F49AEA006E9731 /* PBXTextBookmark */; 8BD4F5851E6E0EED00288155 /* PlistBookmark */ = 8BD4F5851E6E0EED00288155 /* PlistBookmark */; 8BD4F5861E6E0EED00288155 /* PBXTextBookmark */ = 8BD4F5861E6E0EED00288155 /* PBXTextBookmark */; - 8BD4F5871E6E0EED00288155 /* PBXTextBookmark */ = 8BD4F5871E6E0EED00288155 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B9D66D91F7C8E9B007AB60F /* PBXTextBookmark */ = { + 8B792FB921F49AD2006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* SideDull.h */; - name = "SideDull.h: 112"; - rLen = 156; - rLoc = 4786; + name = "SideDull.h: 117"; + rLen = 0; + rLoc = 4888; rType = 0; - vrLen = 353; - vrLoc = 2712; + vrLen = 1036; + vrLoc = 3957; }; - 8B9D75DC1F7FA07D007AB60F /* PBXTextBookmark */ = { + 8B792FBB21F49AD2006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* SideDull.h */; - name = "SideDull.h: 112"; - rLen = 156; - rLoc = 4786; + fRef = 8BA05A660720730100365D66 /* SideDull.cpp */; + name = "SideDull.cpp: 279"; + rLen = 0; + rLoc = 11462; rType = 0; - vrLen = 330; - vrLoc = 2735; + vrLen = 843; + vrLoc = 10824; + }; + 8B792FC021F49AEA006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* SideDull.cpp */; + name = "SideDull.cpp: 279"; + rLen = 0; + rLoc = 11462; + rType = 0; + vrLen = 850; + vrLoc = 10817; }; 8BA05A660720730100365D66 /* SideDull.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {977, 4225}}"; - sepNavSelRange = "{9554, 0}"; - sepNavVisRange = "{8740, 2240}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 3965}}"; + sepNavSelRange = "{11462, 0}"; + sepNavVisRange = "{10817, 850}"; sepNavWindowFrame = "{{416, 39}, {1024, 839}}"; }; }; @@ -103,9 +113,9 @@ }; 8BC6025B073B072D006C4272 /* SideDull.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1859}}"; - sepNavSelRange = "{4786, 156}"; - sepNavVisRange = "{2735, 330}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 1781}}"; + sepNavSelRange = "{4888, 0}"; + sepNavVisRange = "{3957, 1036}"; sepNavWindowFrame = "{{15, 39}, {1024, 839}}"; }; }; @@ -145,16 +155,6 @@ vrLen = 510; vrLoc = 2430; }; - 8BD4F5871E6E0EED00288155 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* SideDull.cpp */; - name = "SideDull.cpp: 176"; - rLen = 128; - rLoc = 7544; - rType = 0; - vrLen = 794; - vrLoc = 7693; - }; 8D01CCC60486CAD60068D4B7 /* SideDull */ = { activeExec = 0; }; diff --git a/plugins/MacAU/SideDull/SideDull.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/SideDull/SideDull.xcodeproj/christopherjohnson.perspectivev3 index 5e89369..dc70f61 100755 --- a/plugins/MacAU/SideDull/SideDull.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/SideDull/SideDull.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -282,7 +280,7 @@ <dict> <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> <array> - <real>288</real> + <real>163</real> </array> <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> <array> @@ -308,7 +306,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {288, 595}}</string> + <string>{{0, 0}, {163, 595}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -318,19 +316,19 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {305, 613}}</string> + <string>{{0, 0}, {180, 613}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> - <real>288</real> + <real>163</real> </array> <key>RubberWindowFrame</key> - <string>599 124 841 654 0 0 1440 878 </string> + <string>430 195 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> <key>Proportion</key> - <string>305pt</string> + <string>180pt</string> </dict> <dict> <key>Dock</key> @@ -341,7 +339,7 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274A1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>SideDull.h</string> + <string>SideDull.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -349,17 +347,17 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274B1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>SideDull.h</string> + <string>SideDull.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D75DC1F7FA07D007AB60F</string> + <string>8B792FC021F49AEA006E9731</string> <key>history</key> <array> <string>8BD4F5851E6E0EED00288155</string> <string>8BD4F5861E6E0EED00288155</string> - <string>8BD4F5871E6E0EED00288155</string> - <string>8B9D66D91F7C8E9B007AB60F</string> + <string>8B792FB921F49AD2006E9731</string> + <string>8B792FBB21F49AD2006E9731</string> </array> </dict> <key>SplitCount</key> @@ -373,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 229}}</string> + <string>{{0, 0}, {656, 436}}</string> <key>RubberWindowFrame</key> - <string>599 124 841 654 0 0 1440 878 </string> + <string>430 195 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>229pt</string> + <string>436pt</string> </dict> <dict> <key>Proportion</key> - <string>379pt</string> + <string>172pt</string> <key>Tabs</key> <array> <dict> @@ -398,9 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 352}}</string> - <key>RubberWindowFrame</key> - <string>599 124 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {656, 365}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -454,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 315}}</string> + <string>{{10, 27}, {656, 145}}</string> + <key>RubberWindowFrame</key> + <string>430 195 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -463,7 +461,7 @@ </dict> </array> <key>Proportion</key> - <string>531pt</string> + <string>656pt</string> </dict> </array> <key>Name</key> @@ -482,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D75DD1F7FA07D007AB60F</string> + <string>8B792FC121F49AEA006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D75DE1F7FA07D007AB60F</string> + <string>8B792FC221F49AEA006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D75DF1F7FA07D007AB60F</string> + <string>8B792FC321F49AEA006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -659,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528457853.78940398</real> + <real>569678570.12103295</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -676,11 +674,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D75E01F7FA07D007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/SideDull/SideDull.xcodeproj</string> </array> <key>WindowString</key> - <string>599 124 841 654 0 0 1440 878 </string> + <string>430 195 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Sidepass/Sidepass.cpp b/plugins/MacAU/Sidepass/Sidepass.cpp index e3c62c8..1379137 100755 --- a/plugins/MacAU/Sidepass/Sidepass.cpp +++ b/plugins/MacAU/Sidepass/Sidepass.cpp @@ -176,11 +176,8 @@ ComponentResult Sidepass::Reset(AudioUnitScope inScope, AudioUnitElement inElem iirSampleA = 0.0; iirSampleB = 0.0; flip = true; - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; - + fpNShapeL = 0.0; + fpNShapeR = 0.0; return noErr; } @@ -209,11 +206,7 @@ OSStatus Sidepass::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlag overallscale /= 44100.0; overallscale *= GetSampleRate(); Float64 iirAmount = pow(GetParameter( kParam_One ),3)/overallscale; - - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; - + while (nSampleFrames-- > 0) { inputSampleL = *inputL; inputSampleR = *inputR; @@ -274,28 +267,16 @@ OSStatus Sidepass::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlag inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; - - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } flip = !flip; - //end noise shaping on 32 bit output + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((Float32)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *outputL = inputSampleL; *outputR = inputSampleR; diff --git a/plugins/MacAU/Sidepass/Sidepass.h b/plugins/MacAU/Sidepass/Sidepass.h index f0f6f09..4ac346b 100755 --- a/plugins/MacAU/Sidepass/Sidepass.h +++ b/plugins/MacAU/Sidepass/Sidepass.h @@ -112,11 +112,8 @@ private: Float64 iirSampleA; Float64 iirSampleB; bool flip; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; - + long double fpNShapeL; + long double fpNShapeR; }; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/plugins/MacAU/Sidepass/Sidepass.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Sidepass/Sidepass.xcodeproj/christopherjohnson.pbxuser index 43370db..d1a3108 100755 --- a/plugins/MacAU/Sidepass/Sidepass.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Sidepass/Sidepass.xcodeproj/christopherjohnson.pbxuser @@ -12,7 +12,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 292, + 397, 20, 48, 43, @@ -51,14 +51,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 561232442; - PBXWorkspaceStateSaveDate = 561232442; + PBXPerProjectTemplateStateSaveDate = 569678591; + PBXWorkspaceStateSaveDate = 569678591; }; perUserProjectItems = { 8B0FACF11E6A22F300E0AD36 /* PlistBookmark */ = 8B0FACF11E6A22F300E0AD36 /* PlistBookmark */; - 8B0FAD101E6A27BE00E0AD36 /* PBXTextBookmark */ = 8B0FAD101E6A27BE00E0AD36 /* PBXTextBookmark */; - 8B27211E2173C07300396442 /* PBXTextBookmark */ = 8B27211E2173C07300396442 /* PBXTextBookmark */; - 8B27211F2173C07300396442 /* PBXTextBookmark */ = 8B27211F2173C07300396442 /* PBXTextBookmark */; + 8B792FCF21F49B6D006E9731 /* PBXTextBookmark */ = 8B792FCF21F49B6D006E9731 /* PBXTextBookmark */; + 8B792FD121F49B6D006E9731 /* PBXTextBookmark */ = 8B792FD121F49B6D006E9731 /* PBXTextBookmark */; + 8B792FD621F49B7D006E9731 /* PBXTextBookmark */ = 8B792FD621F49B7D006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -76,41 +76,41 @@ rLen = 0; rLoc = 9223372036854775808; }; - 8B0FAD101E6A27BE00E0AD36 /* PBXTextBookmark */ = { + 8B792FCF21F49B6D006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* Sidepass.cpp */; - name = "Sidepass.cpp: 189"; - rLen = 4308; - rLoc = 7695; + fRef = 8BC6025B073B072D006C4272 /* Sidepass.h */; + name = "Sidepass.h: 116"; + rLen = 0; + rLoc = 4885; rType = 0; - vrLen = 550; - vrLoc = 7695; + vrLen = 1030; + vrLoc = 3963; }; - 8B27211E2173C07300396442 /* PBXTextBookmark */ = { + 8B792FD121F49B6D006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* Sidepass.h */; - name = "Sidepass.h: 77"; - rLen = 1791; - rLoc = 3256; + fRef = 8BA05A660720730100365D66 /* Sidepass.cpp */; + name = "Sidepass.cpp: 280"; + rLen = 0; + rLoc = 11463; rType = 0; - vrLen = 428; - vrLoc = 3256; + vrLen = 844; + vrLoc = 10824; }; - 8B27211F2173C07300396442 /* PBXTextBookmark */ = { + 8B792FD621F49B7D006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Sidepass.cpp */; - name = "Sidepass.cpp: 189"; - rLen = 4308; - rLoc = 7695; + name = "Sidepass.cpp: 280"; + rLen = 0; + rLoc = 11463; rType = 0; - vrLen = 332; - vrLoc = 7913; + vrLen = 851; + vrLoc = 10817; }; 8BA05A660720730100365D66 /* Sidepass.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {803, 4173}}"; - sepNavSelRange = "{7695, 4308}"; - sepNavVisRange = "{7913, 332}"; + sepNavIntBoundsRect = "{{0, 0}, {824, 3705}}"; + sepNavSelRange = "{11463, 0}"; + sepNavVisRange = "{10817, 851}"; sepNavWindowFrame = "{{186, -24}, {923, 837}}"; }; }; @@ -132,9 +132,9 @@ }; 8BC6025B073B072D006C4272 /* Sidepass.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1820}}"; - sepNavSelRange = "{3256, 1791}"; - sepNavVisRange = "{3256, 428}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 1599}}"; + sepNavSelRange = "{4885, 0}"; + sepNavVisRange = "{3963, 1030}"; sepNavWindowFrame = "{{510, 41}, {923, 837}}"; }; }; diff --git a/plugins/MacAU/Sidepass/Sidepass.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Sidepass/Sidepass.xcodeproj/christopherjohnson.perspectivev3 index cabf543..4b6178e 100755 --- a/plugins/MacAU/Sidepass/Sidepass.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Sidepass/Sidepass.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -282,7 +280,7 @@ <dict> <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> <array> - <real>288</real> + <real>183</real> </array> <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> <array> @@ -308,7 +306,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {288, 595}}</string> + <string>{{0, 0}, {183, 595}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -318,19 +316,19 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {305, 613}}</string> + <string>{{0, 0}, {200, 613}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> - <real>288</real> + <real>183</real> </array> <key>RubberWindowFrame</key> - <string>599 189 841 654 0 0 1440 878 </string> + <string>469 189 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> <key>Proportion</key> - <string>305pt</string> + <string>200pt</string> </dict> <dict> <key>Dock</key> @@ -353,12 +351,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B27211F2173C07300396442</string> + <string>8B792FD621F49B7D006E9731</string> <key>history</key> <array> <string>8B0FACF11E6A22F300E0AD36</string> - <string>8B27211E2173C07300396442</string> - <string>8B0FAD101E6A27BE00E0AD36</string> + <string>8B792FCF21F49B6D006E9731</string> + <string>8B792FD121F49B6D006E9731</string> </array> </dict> <key>SplitCount</key> @@ -372,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 126}}</string> + <string>{{0, 0}, {636, 430}}</string> <key>RubberWindowFrame</key> - <string>599 189 841 654 0 0 1440 878 </string> + <string>469 189 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>126pt</string> + <string>430pt</string> </dict> <dict> <key>Proportion</key> - <string>482pt</string> + <string>178pt</string> <key>Tabs</key> <array> <dict> @@ -397,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 455}}</string> - <key>RubberWindowFrame</key> - <string>599 189 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {636, 151}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -453,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 315}}</string> + <string>{{10, 27}, {636, 151}}</string> + <key>RubberWindowFrame</key> + <string>469 189 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -462,7 +460,7 @@ </dict> </array> <key>Proportion</key> - <string>531pt</string> + <string>636pt</string> </dict> </array> <key>Name</key> @@ -481,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B2721202173C07300396442</string> + <string>8B792FD721F49B7D006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B2721212173C07300396442</string> + <string>8B792FD821F49B7D006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B2721222173C07300396442</string> + <string>8B792FD921F49B7D006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -658,7 +656,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>561234035.39839995</real> + <real>569678717.46052098</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -678,7 +676,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/Sidepass/Sidepass.xcodeproj</string> </array> <key>WindowString</key> - <string>599 189 841 654 0 0 1440 878 </string> + <string>469 189 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/SingleEndedTriode/SingleEndedTriode.cpp b/plugins/MacAU/SingleEndedTriode/SingleEndedTriode.cpp index cf29888..9c0da62 100755 --- a/plugins/MacAU/SingleEndedTriode/SingleEndedTriode.cpp +++ b/plugins/MacAU/SingleEndedTriode/SingleEndedTriode.cpp @@ -268,23 +268,15 @@ void SingleEndedTriode::SingleEndedTriodeKernel::Process( const Float32 *inSou inputSample = (drySample * dry)+(inputSample*wet); } - //noise shaping to 32-bit floating point - float fpTemp = inputSample; - fpNShape += (inputSample-fpTemp); - inputSample += fpNShape; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; } - fpNShape *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacAU/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.pbxuser index bb8847c..aa2c283 100755 --- a/plugins/MacAU/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 333, + 414, 20, 48, 43, @@ -49,47 +49,64 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 547786625; - PBXWorkspaceStateSaveDate = 547786625; + PBXPerProjectTemplateStateSaveDate = 569678966; + PBXWorkspaceStateSaveDate = 569678966; }; perUserProjectItems = { - 8B7E3E8820A6930E00482CB5 /* PBXTextBookmark */ = 8B7E3E8820A6930E00482CB5 /* PBXTextBookmark */; - 8B7E3E8920A6930E00482CB5 /* PBXBookmark */ = 8B7E3E8920A6930E00482CB5 /* PBXBookmark */; - 8B7E3E8A20A6930E00482CB5 /* PBXTextBookmark */ = 8B7E3E8A20A6930E00482CB5 /* PBXTextBookmark */; + 8B792FE521F49D2B006E9731 /* PBXTextBookmark */ = 8B792FE521F49D2B006E9731 /* PBXTextBookmark */; + 8B792FE621F49D2B006E9731 /* PBXTextBookmark */ = 8B792FE621F49D2B006E9731 /* PBXTextBookmark */; + 8B792FE821F49D2B006E9731 /* PBXTextBookmark */ = 8B792FE821F49D2B006E9731 /* PBXTextBookmark */; + 8B792FED21F49D42006E9731 /* PBXTextBookmark */ = 8B792FED21F49D42006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B7E3E8820A6930E00482CB5 /* PBXTextBookmark */ = { + 8B792FE521F49D2B006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A690720730100365D66 /* SingleEndedTriodeVersion.h */; + name = "SingleEndedTriodeVersion.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 948; + vrLoc = 2603; + }; + 8B792FE621F49D2B006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* SingleEndedTriode.h */; name = "SingleEndedTriode.h: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 72; - vrLoc = 0; + vrLen = 719; + vrLoc = 4915; }; - 8B7E3E8920A6930E00482CB5 /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 8BA05A690720730100365D66 /* SingleEndedTriodeVersion.h */; + 8B792FE821F49D2B006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* SingleEndedTriode.cpp */; + name = "SingleEndedTriode.cpp: 276"; + rLen = 0; + rLoc = 12119; + rType = 0; + vrLen = 762; + vrLoc = 11445; }; - 8B7E3E8A20A6930E00482CB5 /* PBXTextBookmark */ = { + 8B792FED21F49D42006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BA05A690720730100365D66 /* SingleEndedTriodeVersion.h */; - name = "SingleEndedTriodeVersion.h: 1"; + fRef = 8BA05A660720730100365D66 /* SingleEndedTriode.cpp */; + name = "SingleEndedTriode.cpp: 276"; rLen = 0; - rLoc = 0; + rLoc = 12119; rType = 0; - vrLen = 246; - vrLoc = 3244; + vrLen = 820; + vrLoc = 11387; }; 8BA05A660720730100365D66 /* SingleEndedTriode.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1098, 3783}}"; - sepNavSelRange = "{10732, 1057}"; - sepNavVisRange = "{10814, 1886}"; + sepNavIntBoundsRect = "{{0, 0}, {838, 3900}}"; + sepNavSelRange = "{12119, 0}"; + sepNavVisRange = "{11387, 820}"; sepNavWindowFrame = "{{676, 66}, {1145, 812}}"; }; }; @@ -103,16 +120,16 @@ }; 8BA05A690720730100365D66 /* SingleEndedTriodeVersion.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {824, 871}}"; + sepNavIntBoundsRect = "{{0, 0}, {824, 897}}"; sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{3244, 246}"; + sepNavVisRange = "{2603, 948}"; }; }; 8BC6025B073B072D006C4272 /* SingleEndedTriode.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {960, 1885}}"; - sepNavSelRange = "{5481, 20}"; - sepNavVisRange = "{4010, 1624}"; + sepNavIntBoundsRect = "{{0, 0}, {824, 1885}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{4915, 719}"; sepNavWindowFrame = "{{676, 59}, {1007, 819}}"; }; }; diff --git a/plugins/MacAU/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.perspectivev3 index e1ec1b0..a047d72 100755 --- a/plugins/MacAU/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>810</integer> - <integer>810</integer> + <integer>867</integer> + <integer>867</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -282,7 +280,7 @@ <dict> <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> <array> - <real>216</real> + <real>192</real> </array> <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> <array> @@ -307,7 +305,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {216, 428}}</string> + <string>{{0, 0}, {192, 549}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -317,19 +315,19 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {233, 446}}</string> + <string>{{0, 0}, {209, 567}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> - <real>216</real> + <real>192</real> </array> <key>RubberWindowFrame</key> - <string>588 264 810 487 0 0 1440 878 </string> + <string>430 203 867 608 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> <key>Proportion</key> - <string>233pt</string> + <string>209pt</string> </dict> <dict> <key>Dock</key> @@ -340,7 +338,7 @@ <key>PBXProjectModuleGUID</key> <string>8BBDB967208BF902006F0D04</string> <key>PBXProjectModuleLabel</key> - <string>SingleEndedTriodeVersion.h</string> + <string>SingleEndedTriode.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -348,15 +346,16 @@ <key>PBXProjectModuleGUID</key> <string>8BBDB968208BF902006F0D04</string> <key>PBXProjectModuleLabel</key> - <string>SingleEndedTriodeVersion.h</string> + <string>SingleEndedTriode.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B7E3E8A20A6930E00482CB5</string> + <string>8B792FED21F49D42006E9731</string> <key>history</key> <array> - <string>8B7E3E8820A6930E00482CB5</string> - <string>8B7E3E8920A6930E00482CB5</string> + <string>8B792FE521F49D2B006E9731</string> + <string>8B792FE621F49D2B006E9731</string> + <string>8B792FE821F49D2B006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {572, 102}}</string> + <string>{{0, 0}, {653, 410}}</string> <key>RubberWindowFrame</key> - <string>588 264 810 487 0 0 1440 878 </string> + <string>430 203 867 608 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>102pt</string> + <string>410pt</string> </dict> <dict> <key>Proportion</key> - <string>339pt</string> + <string>152pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {572, 312}}</string> - <key>RubberWindowFrame</key> - <string>588 264 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {653, 125}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {572, 282}}</string> + <string>{{10, 27}, {653, 125}}</string> + <key>RubberWindowFrame</key> + <string>430 203 867 608 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -460,7 +459,7 @@ </dict> </array> <key>Proportion</key> - <string>572pt</string> + <string>653pt</string> </dict> </array> <key>Name</key> @@ -479,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B7E3E8B20A6930E00482CB5</string> + <string>8B792FEE21F49D42006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B7E3E8C20A6930E00482CB5</string> + <string>8B792FEF21F49D42006E9731</string> <string>8BBDB967208BF902006F0D04</string> - <string>8B7E3E8D20A6930E00482CB5</string> + <string>8B792FF021F49D42006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>547787534.19024003</real> + <real>569679170.50335598</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -656,7 +655,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/SingleEndedTriode/SingleEndedTriode.xcodeproj</string> </array> <key>WindowString</key> - <string>588 264 810 487 0 0 1440 878 </string> + <string>430 203 867 608 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Slew/Slew.cpp b/plugins/MacAU/Slew/Slew.cpp index 3c1a7bf..5eee0ab 100755 --- a/plugins/MacAU/Slew/Slew.cpp +++ b/plugins/MacAU/Slew/Slew.cpp @@ -159,6 +159,7 @@ ComponentResult Slew::Initialize() void Slew::SlewKernel::Reset() { lastSample = 0.0; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -224,6 +225,12 @@ void Slew::SlewKernel::Process( const Float32 *inSourceP, outputSample = lastSample - threshold; lastSample = outputSample; + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)outputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + outputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither + *destP = outputSample; destP += inNumChannels; } diff --git a/plugins/MacAU/Slew/Slew.exp b/plugins/MacAU/Slew/Slew.exp index 86851aa..bef4ceb 100755 --- a/plugins/MacAU/Slew/Slew.exp +++ b/plugins/MacAU/Slew/Slew.exp @@ -1 +1 @@ -_SlewEntry
\ No newline at end of file +_SlewEntry diff --git a/plugins/MacAU/Slew/Slew.h b/plugins/MacAU/Slew/Slew.h index af04876..95bf7c2 100755 --- a/plugins/MacAU/Slew/Slew.h +++ b/plugins/MacAU/Slew/Slew.h @@ -113,19 +113,18 @@ public: : AUKernelBase(inAudioUnit) { } - - // *Required* overides for the process method for this effect - // processes one channel of interleaved samples - virtual void Process( const Float32 *inSourceP, - Float32 *inDestP, - UInt32 inFramesToProcess, - UInt32 inNumChannels, - bool &ioSilence); - - virtual void Reset(); - - private: - Float64 lastSample; + // *Required* overides for the process method for this effect + // processes one channel of interleaved samples + virtual void Process( const Float32 *inSourceP, + Float32 *inDestP, + UInt32 inFramesToProcess, + UInt32 inNumChannels, + bool &ioSilence); + virtual void Reset(); + + private: + Float64 lastSample; + long double fpNShape; }; }; diff --git a/plugins/MacAU/Slew/Slew.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Slew/Slew.xcodeproj/christopherjohnson.pbxuser index 39b5e1c..4a1badd 100755 --- a/plugins/MacAU/Slew/Slew.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Slew/Slew.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 364, + 482, 20, 48, 43, @@ -49,14 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 542412394; - PBXWorkspaceStateSaveDate = 542412394; + PBXPerProjectTemplateStateSaveDate = 569679199; + PBXWorkspaceStateSaveDate = 569679199; }; perUserProjectItems = { 8B38EA761D5BFD02003DFCC5 /* PBXTextBookmark */ = 8B38EA761D5BFD02003DFCC5 /* PBXTextBookmark */; - 8B44C13C20548E7700B1360B /* PBXTextBookmark */ = 8B44C13C20548E7700B1360B /* PBXTextBookmark */; - 8B44C13D20548E7700B1360B /* PBXTextBookmark */ = 8B44C13D20548E7700B1360B /* PBXTextBookmark */; - 8BC032AD1D6667740039F36E /* PBXTextBookmark */ = 8BC032AD1D6667740039F36E /* PBXTextBookmark */; + 8B792FFC21F49E37006E9731 /* PBXTextBookmark */ = 8B792FFC21F49E37006E9731 /* PBXTextBookmark */; + 8B792FFE21F49E37006E9731 /* PBXTextBookmark */ = 8B792FFE21F49E37006E9731 /* PBXTextBookmark */; + 8B79300821F49E6B006E9731 /* PBXTextBookmark */ = 8B79300821F49E6B006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -72,34 +72,52 @@ vrLen = 210; vrLoc = 3192; }; - 8B44C13C20548E7700B1360B /* PBXTextBookmark */ = { + 8B792FFC21F49E37006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* Slew.h */; + name = "Slew.h: 125"; + rLen = 0; + rLoc = 4951; + rType = 0; + vrLen = 940; + vrLoc = 4175; + }; + 8B792FFE21F49E37006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Slew.cpp */; - name = "Slew.cpp: 219"; - rLen = 230; - rLoc = 9710; + name = "Slew.cpp: 231"; + rLen = 0; + rLoc = 10148; rType = 0; - vrLen = 0; - vrLoc = 0; + vrLen = 1188; + vrLoc = 9084; }; - 8B44C13D20548E7700B1360B /* PBXTextBookmark */ = { + 8B79300821F49E6B006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Slew.cpp */; - name = "Slew.cpp: 219"; - rLen = 230; - rLoc = 9710; + name = "Slew.cpp: 231"; + rLen = 0; + rLoc = 10148; rType = 0; - vrLen = 0; - vrLoc = 0; + vrLen = 1237; + vrLoc = 9035; }; 8BA05A660720730100365D66 /* Slew.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 3094}}"; - sepNavSelRange = "{9710, 230}"; - sepNavVisRange = "{0, 0}"; + sepNavIntBoundsRect = "{{0, 0}, {964, 3263}}"; + sepNavSelRange = "{10148, 0}"; + sepNavVisRange = "{9035, 1237}"; sepNavWindowFrame = "{{545, 47}, {895, 831}}"; }; }; + 8BA05A670720730100365D66 /* Slew.exp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1253, 694}}"; + sepNavSelRange = "{11, 0}"; + sepNavVisRange = "{0, 11}"; + sepNavWindowFrame = "{{15, 51}, {1300, 822}}"; + }; + }; 8BA05A690720730100365D66 /* SlewVersion.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {824, 897}}"; @@ -107,21 +125,11 @@ sepNavVisRange = "{3192, 210}"; }; }; - 8BC032AD1D6667740039F36E /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* Slew.h */; - name = "Slew.h: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 180; - vrLoc = 3047; - }; 8BC6025B073B072D006C4272 /* Slew.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {862, 1755}}"; - sepNavSelRange = "{4988, 23}"; - sepNavVisRange = "{3399, 1721}"; + sepNavIntBoundsRect = "{{0, 0}, {810, 2015}}"; + sepNavSelRange = "{4951, 0}"; + sepNavVisRange = "{4175, 940}"; sepNavWindowFrame = "{{492, 40}, {909, 838}}"; }; }; diff --git a/plugins/MacAU/Slew/Slew.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Slew/Slew.xcodeproj/christopherjohnson.perspectivev3 index 39ac062..59e0c29 100755 --- a/plugins/MacAU/Slew/Slew.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Slew/Slew.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>928</integer> + <integer>928</integer> </array> <key>Perspectives</key> <array> @@ -300,14 +300,14 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>4</integer> + <integer>5</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {185, 428}}</string> + <string>{{0, 0}, {185, 685}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -317,14 +317,14 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {202, 446}}</string> + <string>{{0, 0}, {202, 703}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> <real>185</real> </array> <key>RubberWindowFrame</key> - <string>620 384 810 487 0 0 1440 878 </string> + <string>365 99 928 744 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,12 +352,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B44C13D20548E7700B1360B</string> + <string>8B79300821F49E6B006E9731</string> <key>history</key> <array> <string>8B38EA761D5BFD02003DFCC5</string> - <string>8BC032AD1D6667740039F36E</string> - <string>8B44C13C20548E7700B1360B</string> + <string>8B792FFC21F49E37006E9731</string> + <string>8B792FFE21F49E37006E9731</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 13}}</string> + <string>{{0, 0}, {721, 468}}</string> <key>RubberWindowFrame</key> - <string>620 384 810 487 0 0 1440 878 </string> + <string>365 99 928 744 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>13pt</string> + <string>468pt</string> </dict> <dict> <key>Proportion</key> - <string>428pt</string> + <string>230pt</string> <key>Tabs</key> <array> <dict> @@ -396,9 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 401}}</string> - <key>RubberWindowFrame</key> - <string>620 384 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {721, 203}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -452,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {721, 203}}</string> + <key>RubberWindowFrame</key> + <string>365 99 928 744 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -461,7 +461,7 @@ </dict> </array> <key>Proportion</key> - <string>603pt</string> + <string>721pt</string> </dict> </array> <key>Name</key> @@ -480,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B44C13E20548E7700B1360B</string> + <string>8B79300921F49E6B006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B44C13F20548E7700B1360B</string> + <string>8B79300A21F49E6B006E9731</string> <string>8B38EA371D5BF603003DFCC5</string> - <string>8B44C14020548E7700B1360B</string> + <string>8B79300B21F49E6B006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -637,7 +637,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>542412407.33123505</real> + <real>569679467.91034496</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -654,11 +654,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B44C14120548E7700B1360B</string> + <string>8B79300C21F49E6B006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/Slew/Slew.xcodeproj</string> </array> <key>WindowString</key> - <string>620 384 810 487 0 0 1440 878 </string> + <string>365 99 928 744 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Slew2/Slew2.cpp b/plugins/MacAU/Slew2/Slew2.cpp index 06a128a..d9a5093 100755 --- a/plugins/MacAU/Slew2/Slew2.cpp +++ b/plugins/MacAU/Slew2/Slew2.cpp @@ -164,8 +164,8 @@ void Slew2::Slew2Kernel::Reset() ataUpsampleHighTweak = 0.0414213562373095048801688; //more adds treble to upsampling ataDecay = 0.915965594177219015; //Catalan's constant, more adds focus and clarity ataFlip = false; //end reset of antialias parameters - demotimer = 0; lastSample = 0.0; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -255,6 +255,12 @@ void Slew2::Slew2Kernel::Process( const Float32 *inSourceP, ataPrevDiffSample = ataDiffSample / 2.0; //apply processing as difference to non-oversampled raw input + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither + *destP = inputSample; //built in output trim and dry/wet by default diff --git a/plugins/MacAU/Slew2/Slew2.h b/plugins/MacAU/Slew2/Slew2.h index 236a415..4e16def 100755 --- a/plugins/MacAU/Slew2/Slew2.h +++ b/plugins/MacAU/Slew2/Slew2.h @@ -140,8 +140,8 @@ public: Float64 ataDiffSample; Float64 ataPrevDiffSample; bool ataFlip; //end defining of antialiasing variables - int demotimer; Float64 lastSample; + long double fpNShape; }; }; diff --git a/plugins/MacAU/Slew2/Slew2.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Slew2/Slew2.xcodeproj/christopherjohnson.pbxuser index c33013d..d905aae 100755 --- a/plugins/MacAU/Slew2/Slew2.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Slew2/Slew2.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 364, + 427, 20, 48, 43, @@ -49,13 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528457914; - PBXWorkspaceStateSaveDate = 528457914; + PBXPerProjectTemplateStateSaveDate = 569679497; + PBXWorkspaceStateSaveDate = 569679497; }; perUserProjectItems = { 8B41AFAA1DA1D3B100555FA2 /* PBXTextBookmark */ = 8B41AFAA1DA1D3B100555FA2 /* PBXTextBookmark */; - 8B9D670A1F7C8F10007AB60F /* PBXTextBookmark */ = 8B9D670A1F7C8F10007AB60F /* PBXTextBookmark */; - 8B9D760A1F7FA10A007AB60F /* PBXTextBookmark */ = 8B9D760A1F7FA10A007AB60F /* PBXTextBookmark */; + 8B79301821F49F45006E9731 /* PBXTextBookmark */ = 8B79301821F49F45006E9731 /* PBXTextBookmark */; + 8B79301A21F49F45006E9731 /* PBXTextBookmark */ = 8B79301A21F49F45006E9731 /* PBXTextBookmark */; + 8B79301F21F49F56006E9731 /* PBXTextBookmark */ = 8B79301F21F49F56006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -71,31 +72,41 @@ vrLen = 12; vrLoc = 0; }; - 8B9D670A1F7C8F10007AB60F /* PBXTextBookmark */ = { + 8B79301821F49F45006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* Slew2.h */; - name = "Slew2.h: 126"; + name = "Slew2.h: 143"; rLen = 0; - rLoc = 4945; + rLoc = 5356; rType = 0; - vrLen = 78; - vrLoc = 2972; + vrLen = 948; + vrLoc = 4563; }; - 8B9D760A1F7FA10A007AB60F /* PBXTextBookmark */ = { + 8B79301A21F49F45006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* Slew2.h */; - name = "Slew2.h: 126"; + fRef = 8BA05A660720730100365D66 /* Slew2.cpp */; + name = "Slew2.cpp: 263"; + rLen = 0; + rLoc = 12140; + rType = 0; + vrLen = 1567; + vrLoc = 10707; + }; + 8B79301F21F49F56006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Slew2.cpp */; + name = "Slew2.cpp: 263"; rLen = 0; - rLoc = 4945; + rLoc = 12140; rType = 0; - vrLen = 70; - vrLoc = 2980; + vrLen = 1613; + vrLoc = 10661; }; 8BA05A660720730100365D66 /* Slew2.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1027, 3497}}"; - sepNavSelRange = "{8581, 0}"; - sepNavVisRange = "{8239, 2561}"; + sepNavIntBoundsRect = "{{0, 0}, {1027, 3575}}"; + sepNavSelRange = "{12140, 0}"; + sepNavVisRange = "{10661, 1613}"; sepNavWindowFrame = "{{548, 41}, {892, 828}}"; }; }; @@ -116,9 +127,9 @@ }; 8BC6025B073B072D006C4272 /* Slew2.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 2119}}"; - sepNavSelRange = "{4945, 0}"; - sepNavVisRange = "{2980, 70}"; + sepNavIntBoundsRect = "{{0, 0}, {922, 2301}}"; + sepNavSelRange = "{5356, 0}"; + sepNavVisRange = "{4563, 948}"; sepNavWindowFrame = "{{548, 50}, {892, 828}}"; }; }; diff --git a/plugins/MacAU/Slew2/Slew2.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Slew2/Slew2.xcodeproj/christopherjohnson.perspectivev3 index 4765fda..43df8cf 100755 --- a/plugins/MacAU/Slew2/Slew2.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Slew2/Slew2.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>835</integer> + <integer>835</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -282,7 +280,7 @@ <dict> <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> <array> - <real>185</real> + <real>147</real> </array> <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> <array> @@ -307,7 +305,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {185, 428}}</string> + <string>{{0, 0}, {147, 699}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -317,19 +315,19 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {202, 446}}</string> + <string>{{0, 0}, {164, 717}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> - <real>185</real> + <real>147</real> </array> <key>RubberWindowFrame</key> - <string>630 353 810 487 0 0 1440 878 </string> + <string>433 98 835 758 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> <key>Proportion</key> - <string>202pt</string> + <string>164pt</string> </dict> <dict> <key>Dock</key> @@ -340,7 +338,7 @@ <key>PBXProjectModuleGUID</key> <string>8B41AF5A1DA1CCC700555FA2</string> <key>PBXProjectModuleLabel</key> - <string>Slew2.h</string> + <string>Slew2.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -348,15 +346,16 @@ <key>PBXProjectModuleGUID</key> <string>8B41AF5B1DA1CCC700555FA2</string> <key>PBXProjectModuleLabel</key> - <string>Slew2.h</string> + <string>Slew2.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D760A1F7FA10A007AB60F</string> + <string>8B79301F21F49F56006E9731</string> <key>history</key> <array> <string>8B41AFAA1DA1D3B100555FA2</string> - <string>8B9D670A1F7C8F10007AB60F</string> + <string>8B79301821F49F45006E9731</string> + <string>8B79301A21F49F45006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 69}}</string> + <string>{{0, 0}, {666, 538}}</string> <key>RubberWindowFrame</key> - <string>630 353 810 487 0 0 1440 878 </string> + <string>433 98 835 758 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>69pt</string> + <string>538pt</string> </dict> <dict> <key>Proportion</key> - <string>372pt</string> + <string>174pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 345}}</string> - <key>RubberWindowFrame</key> - <string>630 353 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {666, 147}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {666, 147}}</string> + <key>RubberWindowFrame</key> + <string>433 98 835 758 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -460,7 +459,7 @@ </dict> </array> <key>Proportion</key> - <string>603pt</string> + <string>666pt</string> </dict> </array> <key>Name</key> @@ -479,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D760B1F7FA10A007AB60F</string> + <string>8B79302021F49F56006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D760C1F7FA10A007AB60F</string> + <string>8B79302121F49F56006E9731</string> <string>8B41AF5A1DA1CCC700555FA2</string> - <string>8B9D760D1F7FA10A007AB60F</string> + <string>8B79302221F49F56006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528457994.05700201</real> + <real>569679702.44383299</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,11 +652,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D760E1F7FA10A007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/Slew2/Slew2.xcodeproj</string> </array> <key>WindowString</key> - <string>630 353 810 487 0 0 1440 878 </string> + <string>433 98 835 758 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/SlewOnly/SlewOnly.cpp b/plugins/MacAU/SlewOnly/SlewOnly.cpp index a29bf57..1cd7a74 100755 --- a/plugins/MacAU/SlewOnly/SlewOnly.cpp +++ b/plugins/MacAU/SlewOnly/SlewOnly.cpp @@ -151,6 +151,7 @@ ComponentResult SlewOnly::Initialize() void SlewOnly::SlewOnlyKernel::Reset() { lastSample = 0.0; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -201,6 +202,13 @@ void SlewOnly::SlewOnlyKernel::Process( const Float32 *inSourceP, lastSample = inputSample; if (outputSample > 1.0) outputSample = 1.0; if (outputSample < -1.0) outputSample = -1.0; + + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)outputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + outputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither + *destP = outputSample; sourceP += inNumChannels; destP += inNumChannels; } diff --git a/plugins/MacAU/SlewOnly/SlewOnly.exp b/plugins/MacAU/SlewOnly/SlewOnly.exp index b3b34fe..af27a2b 100755 --- a/plugins/MacAU/SlewOnly/SlewOnly.exp +++ b/plugins/MacAU/SlewOnly/SlewOnly.exp @@ -1 +1 @@ -_SlewOnlyEntry
\ No newline at end of file +_SlewOnlyEntry diff --git a/plugins/MacAU/SlewOnly/SlewOnly.h b/plugins/MacAU/SlewOnly/SlewOnly.h index 39c3835..8b31092 100755 --- a/plugins/MacAU/SlewOnly/SlewOnly.h +++ b/plugins/MacAU/SlewOnly/SlewOnly.h @@ -122,6 +122,7 @@ public: private: Float64 lastSample; + long double fpNShape; }; }; diff --git a/plugins/MacAU/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.pbxuser index 1d4d6bd..2ef6ab9 100755 --- a/plugins/MacAU/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 364, + 449, 20, 48, 43, @@ -49,68 +49,87 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528458003; - PBXWorkspaceStateSaveDate = 528458003; + PBXPerProjectTemplateStateSaveDate = 569679830; + PBXWorkspaceStateSaveDate = 569679830; }; perUserProjectItems = { - 8B37E0391D70A73000DB4EC7 /* PBXTextBookmark */ = 8B37E0391D70A73000DB4EC7 /* PBXTextBookmark */; - 8B9D671D1F7C8F37007AB60F /* PBXTextBookmark */ = 8B9D671D1F7C8F37007AB60F /* PBXTextBookmark */; - 8B9D76191F7FA162007AB60F /* PBXTextBookmark */ = 8B9D76191F7FA162007AB60F /* PBXTextBookmark */; + 8B79302E21F4A032006E9731 /* PBXTextBookmark */ = 8B79302E21F4A032006E9731 /* PBXTextBookmark */; + 8B79302F21F4A032006E9731 /* PBXTextBookmark */ = 8B79302F21F4A032006E9731 /* PBXTextBookmark */; + 8B79303121F4A032006E9731 /* PBXTextBookmark */ = 8B79303121F4A032006E9731 /* PBXTextBookmark */; + 8B79303B21F4A0A3006E9731 /* PBXTextBookmark */ = 8B79303B21F4A0A3006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B37E0391D70A73000DB4EC7 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* SlewOnly.cpp */; - name = "SlewOnly.cpp: 153"; - rLen = 19; - rLoc = 6827; - rType = 0; - vrLen = 380; - vrLoc = 6692; - }; - 8B9D671D1F7C8F37007AB60F /* PBXTextBookmark */ = { + 8B79302E21F4A032006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A690720730100365D66 /* SlewOnlyVersion.h */; name = "SlewOnlyVersion.h: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 281; + vrLen = 171; vrLoc = 3098; }; - 8B9D76191F7FA162007AB60F /* PBXTextBookmark */ = { + 8B79302F21F4A032006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BA05A690720730100365D66 /* SlewOnlyVersion.h */; - name = "SlewOnlyVersion.h: 1"; + fRef = 8BC6025B073B072D006C4272 /* SlewOnly.h */; + name = "SlewOnly.h: 125"; rLen = 0; - rLoc = 0; + rLoc = 4852; rType = 0; - vrLen = 208; - vrLoc = 3098; + vrLen = 1128; + vrLoc = 3828; + }; + 8B79303121F4A032006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* SlewOnly.cpp */; + name = "SlewOnly.cpp: 209"; + rLen = 0; + rLoc = 9458; + rType = 0; + vrLen = 1694; + vrLoc = 7914; + }; + 8B79303B21F4A0A3006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* SlewOnly.cpp */; + name = "SlewOnly.cpp: 209"; + rLen = 0; + rLoc = 9458; + rType = 0; + vrLen = 1782; + vrLoc = 7826; }; 8BA05A660720730100365D66 /* SlewOnly.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {974, 2821}}"; - sepNavSelRange = "{9074, 0}"; - sepNavVisRange = "{6942, 2391}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 2847}}"; + sepNavSelRange = "{9458, 0}"; + sepNavVisRange = "{7826, 1782}"; sepNavWindowFrame = "{{331, 78}, {1021, 800}}"; }; }; + 8BA05A670720730100365D66 /* SlewOnly.exp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1253, 694}}"; + sepNavSelRange = "{15, 0}"; + sepNavVisRange = "{0, 15}"; + sepNavWindowFrame = "{{15, 51}, {1300, 822}}"; + }; + }; 8BA05A690720730100365D66 /* SlewOnlyVersion.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {754, 1014}}"; + sepNavIntBoundsRect = "{{0, 0}, {754, 988}}"; sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{3098, 208}"; + sepNavVisRange = "{3098, 171}"; }; }; 8BC6025B073B072D006C4272 /* SlewOnly.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {974, 1703}}"; - sepNavSelRange = "{4807, 22}"; - sepNavVisRange = "{3392, 1546}"; + sepNavIntBoundsRect = "{{0, 0}, {824, 1872}}"; + sepNavSelRange = "{4852, 0}"; + sepNavVisRange = "{3828, 1128}"; sepNavWindowFrame = "{{379, 78}, {1021, 800}}"; }; }; diff --git a/plugins/MacAU/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.perspectivev3 index b4c32b3..6f61421 100755 --- a/plugins/MacAU/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>895</integer> + <integer>895</integer> </array> <key>Perspectives</key> <array> @@ -300,14 +300,14 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>4</integer> + <integer>5</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {185, 428}}</string> + <string>{{0, 0}, {185, 656}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -317,14 +317,14 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {202, 446}}</string> + <string>{{0, 0}, {202, 674}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> <real>185</real> </array> <key>RubberWindowFrame</key> - <string>587 314 810 487 0 0 1440 878 </string> + <string>417 141 895 715 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -340,7 +340,7 @@ <key>PBXProjectModuleGUID</key> <string>8B37E0371D70A73000DB4EC7</string> <key>PBXProjectModuleLabel</key> - <string>SlewOnlyVersion.h</string> + <string>SlewOnly.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -348,15 +348,16 @@ <key>PBXProjectModuleGUID</key> <string>8B37E0381D70A73000DB4EC7</string> <key>PBXProjectModuleLabel</key> - <string>SlewOnlyVersion.h</string> + <string>SlewOnly.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D76191F7FA162007AB60F</string> + <string>8B79303B21F4A0A3006E9731</string> <key>history</key> <array> - <string>8B37E0391D70A73000DB4EC7</string> - <string>8B9D671D1F7C8F37007AB60F</string> + <string>8B79302E21F4A032006E9731</string> + <string>8B79302F21F4A032006E9731</string> + <string>8B79303121F4A032006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 86}}</string> + <string>{{0, 0}, {688, 543}}</string> <key>RubberWindowFrame</key> - <string>587 314 810 487 0 0 1440 878 </string> + <string>417 141 895 715 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>86pt</string> + <string>543pt</string> </dict> <dict> <key>Proportion</key> - <string>355pt</string> + <string>126pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 328}}</string> - <key>RubberWindowFrame</key> - <string>587 314 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {688, 99}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {688, 99}}</string> + <key>RubberWindowFrame</key> + <string>417 141 895 715 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -460,7 +461,7 @@ </dict> </array> <key>Proportion</key> - <string>603pt</string> + <string>688pt</string> </dict> </array> <key>Name</key> @@ -479,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D761A1F7FA162007AB60F</string> + <string>8B79303C21F4A0A3006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D761B1F7FA162007AB60F</string> + <string>8B79303D21F4A0A3006E9731</string> <string>8B37E0371D70A73000DB4EC7</string> - <string>8B9D761C1F7FA162007AB60F</string> + <string>8B79303E21F4A0A3006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +637,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528458082.578906</real> + <real>569680035.79594803</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,11 +654,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D761D1F7FA162007AB60F</string> + <string>8B79303F21F4A0A3006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/SlewOnly/SlewOnly.xcodeproj</string> </array> <key>WindowString</key> - <string>587 314 810 487 0 0 1440 878 </string> + <string>417 141 895 715 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Spiral/Spiral.cpp b/plugins/MacAU/Spiral/Spiral.cpp index 77ae93f..0dab386 100755 --- a/plugins/MacAU/Spiral/Spiral.cpp +++ b/plugins/MacAU/Spiral/Spiral.cpp @@ -194,23 +194,15 @@ void Spiral::SpiralKernel::Process( const Float32 *inSourceP, inputSample = sin(inputSample * fabs(inputSample)) / ((inputSample == 0.0) ?1:fabs(inputSample)); - //noise shaping to 32-bit floating point - Float32 fpTemp = inputSample; - fpNShape += (inputSample-fpTemp); - inputSample += fpNShape; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; } - fpNShape *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacAU/Spiral/Spiral.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Spiral/Spiral.xcodeproj/christopherjohnson.pbxuser index 574956e..f03d75b 100755 --- a/plugins/MacAU/Spiral/Spiral.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Spiral/Spiral.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 292, + 419, 20, 48, 43, @@ -49,31 +49,62 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 548241334; - PBXWorkspaceStateSaveDate = 548241334; + PBXPerProjectTemplateStateSaveDate = 569680086; + PBXWorkspaceStateSaveDate = 569680086; }; perUserProjectItems = { + 8B79304B21F4A1E5006E9731 /* PBXTextBookmark */ = 8B79304B21F4A1E5006E9731 /* PBXTextBookmark */; + 8B79304D21F4A1E5006E9731 /* PBXTextBookmark */ = 8B79304D21F4A1E5006E9731 /* PBXTextBookmark */; + 8B79305221F4A238006E9731 /* PBXTextBookmark */ = 8B79305221F4A238006E9731 /* PBXTextBookmark */; 8BBFF81D20AD8037005650EF /* PlistBookmark */ = 8BBFF81D20AD8037005650EF /* PlistBookmark */; - 8BBFF81E20AD8037005650EF /* PBXBookmark */ = 8BBFF81E20AD8037005650EF /* PBXBookmark */; - 8BBFF81F20AD8037005650EF /* PBXTextBookmark */ = 8BBFF81F20AD8037005650EF /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B79304B21F4A1E5006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* Spiral.h */; + name = "Spiral.h: 59"; + rLen = 0; + rLoc = 2862; + rType = 0; + vrLen = 684; + vrLoc = 4289; + }; + 8B79304D21F4A1E5006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Spiral.cpp */; + name = "Spiral.cpp: 207"; + rLen = 0; + rLoc = 8720; + rType = 0; + vrLen = 980; + vrLoc = 7743; + }; + 8B79305221F4A238006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Spiral.cpp */; + name = "Spiral.cpp: 207"; + rLen = 0; + rLoc = 8720; + rType = 0; + vrLen = 1029; + vrLoc = 7694; + }; 8BA05A660720730100365D66 /* Spiral.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {824, 2821}}"; - sepNavSelRange = "{8229, 152}"; - sepNavVisRange = "{7230, 1988}"; - sepNavWindowFrame = "{{15, 52}, {850, 821}}"; + sepNavIntBoundsRect = "{{0, 0}, {747, 2873}}"; + sepNavSelRange = "{8720, 0}"; + sepNavVisRange = "{7694, 1029}"; + sepNavWindowFrame = "{{590, 57}, {850, 821}}"; }; }; 8BA05A690720730100365D66 /* SpiralVersion.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {824, 767}}"; - sepNavSelRange = "{2869, 0}"; - sepNavVisRange = "{49, 2888}"; + sepNavSelRange = "{2870, 4}"; + sepNavVisRange = "{31, 2906}"; sepNavWindowFrame = "{{15, 52}, {850, 821}}"; }; }; @@ -87,28 +118,14 @@ ); name = /Users/christopherjohnson/Desktop/MacAU/Spiral/Info.plist; rLen = 0; - rLoc = 9223372036854775807; - }; - 8BBFF81E20AD8037005650EF /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 8BC6025B073B072D006C4272 /* Spiral.h */; - }; - 8BBFF81F20AD8037005650EF /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* Spiral.h */; - name = "Spiral.h: 59"; - rLen = 0; - rLoc = 2862; - rType = 0; - vrLen = 583; - vrLoc = 3295; + rLoc = 9223372036854775808; }; 8BC6025B073B072D006C4272 /* Spiral.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1807}}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 1677}}"; sepNavSelRange = "{2862, 0}"; - sepNavVisRange = "{3295, 583}"; - sepNavWindowFrame = "{{15, 52}, {850, 821}}"; + sepNavVisRange = "{4289, 684}"; + sepNavWindowFrame = "{{609, 57}, {850, 821}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/Spiral/Spiral.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Spiral/Spiral.xcodeproj/christopherjohnson.perspectivev3 index fdfc41a..61ccad2 100755 --- a/plugins/MacAU/Spiral/Spiral.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Spiral/Spiral.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -282,7 +280,7 @@ <dict> <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> <array> - <real>288</real> + <real>161</real> </array> <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> <array> @@ -309,7 +307,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {288, 595}}</string> + <string>{{0, 0}, {161, 595}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -319,19 +317,19 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {305, 613}}</string> + <string>{{0, 0}, {178, 613}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> - <real>288</real> + <real>161</real> </array> <key>RubberWindowFrame</key> - <string>16 205 841 654 0 0 1440 878 </string> + <string>472 182 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> <key>Proportion</key> - <string>305pt</string> + <string>178pt</string> </dict> <dict> <key>Dock</key> @@ -342,7 +340,7 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274A1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>Spiral.h</string> + <string>Spiral.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -350,15 +348,16 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274B1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>Spiral.h</string> + <string>Spiral.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BBFF81F20AD8037005650EF</string> + <string>8B79305221F4A238006E9731</string> <key>history</key> <array> <string>8BBFF81D20AD8037005650EF</string> - <string>8BBFF81E20AD8037005650EF</string> + <string>8B79304B21F4A1E5006E9731</string> + <string>8B79304D21F4A1E5006E9731</string> </array> </dict> <key>SplitCount</key> @@ -372,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 229}}</string> + <string>{{0, 0}, {658, 432}}</string> <key>RubberWindowFrame</key> - <string>16 205 841 654 0 0 1440 878 </string> + <string>472 182 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>229pt</string> + <string>432pt</string> </dict> <dict> <key>Proportion</key> - <string>379pt</string> + <string>176pt</string> <key>Tabs</key> <array> <dict> @@ -397,9 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 352}}</string> - <key>RubberWindowFrame</key> - <string>16 205 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {658, 149}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -453,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 339}}</string> + <string>{{10, 27}, {658, 149}}</string> + <key>RubberWindowFrame</key> + <string>472 182 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -462,7 +461,7 @@ </dict> </array> <key>Proportion</key> - <string>531pt</string> + <string>658pt</string> </dict> </array> <key>Name</key> @@ -481,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBFF82020AD8037005650EF</string> + <string>8B79305321F4A238006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBFF82120AD8037005650EF</string> + <string>8B79305421F4A238006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8BBFF82220AD8037005650EF</string> + <string>8B79305521F4A238006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -658,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>548241463.28044701</real> + <real>569680440.94942403</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -675,11 +674,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BBFF82320AD8037005650EF</string> <string>/Users/christopherjohnson/Desktop/MacAU/Spiral/Spiral.xcodeproj</string> </array> <key>WindowString</key> - <string>16 205 841 654 0 0 1440 878 </string> + <string>472 182 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Spiral2/Spiral2.cpp b/plugins/MacAU/Spiral2/Spiral2.cpp index a4051e6..90e5478 100755 --- a/plugins/MacAU/Spiral2/Spiral2.cpp +++ b/plugins/MacAU/Spiral2/Spiral2.cpp @@ -274,23 +274,15 @@ void Spiral2::Spiral2Kernel::Process( const Float32 *inSourceP, prevSample = drySample; flip = !flip; - //noise shaping to 32-bit floating point - Float32 fpTemp = inputSample; - fpNShape += (inputSample-fpTemp); - inputSample += fpNShape; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; } - fpNShape *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacAU/Spiral2/Spiral2.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Spiral2/Spiral2.xcodeproj/christopherjohnson.pbxuser index 0ac0f78..2e39dac 100755 --- a/plugins/MacAU/Spiral2/Spiral2.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Spiral2/Spiral2.xcodeproj/christopherjohnson.pbxuser @@ -49,14 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 553978426; - PBXWorkspaceStateSaveDate = 553978426; + PBXPerProjectTemplateStateSaveDate = 569680528; + PBXWorkspaceStateSaveDate = 569680528; }; perUserProjectItems = { 8B241CC221016728001BBF7E /* PlistBookmark */ = 8B241CC221016728001BBF7E /* PlistBookmark */; - 8BB8B7382103A9CC00751000 /* PBXTextBookmark */ = 8BB8B7382103A9CC00751000 /* PBXTextBookmark */; - 8BBD1839210525AE0015A233 /* PBXTextBookmark */ = 8BBD1839210525AE0015A233 /* PBXTextBookmark */; - 8BBD183A210525AE0015A233 /* PBXTextBookmark */ = 8BBD183A210525AE0015A233 /* PBXTextBookmark */; + 8B79306121F4A306006E9731 /* PBXTextBookmark */ = 8B79306121F4A306006E9731 /* PBXTextBookmark */; + 8B79306321F4A306006E9731 /* PBXTextBookmark */ = 8B79306321F4A306006E9731 /* PBXTextBookmark */; + 8B79306821F4A31F006E9731 /* PBXTextBookmark */ = 8B79306821F4A31F006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -74,57 +74,57 @@ rLen = 0; rLoc = 9223372036854775808; }; - 8BA05A660720730100365D66 /* Spiral2.cpp */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {656, 3978}}"; - sepNavSelRange = "{9851, 0}"; - sepNavVisRange = "{9227, 533}"; - sepNavWindowFrame = "{{589, 57}, {850, 821}}"; - }; - }; - 8BA05A690720730100365D66 /* Spiral2Version.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {824, 767}}"; - sepNavSelRange = "{2880, 0}"; - sepNavVisRange = "{50, 2893}"; - sepNavWindowFrame = "{{643, 57}, {850, 821}}"; - }; - }; - 8BB8B7382103A9CC00751000 /* PBXTextBookmark */ = { + 8B79306121F4A306006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* Spiral2.h */; name = "Spiral2.h: 68"; rLen = 0; rLoc = 3361; rType = 0; - vrLen = 396; - vrLoc = 3238; + vrLen = 777; + vrLoc = 5062; }; - 8BBD1839210525AE0015A233 /* PBXTextBookmark */ = { + 8B79306321F4A306006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Spiral2.cpp */; - name = "Spiral2.cpp: 216"; + name = "Spiral2.cpp: 287"; rLen = 0; - rLoc = 9851; + rLoc = 12341; rType = 0; - vrLen = 533; - vrLoc = 9227; + vrLen = 1221; + vrLoc = 11123; }; - 8BBD183A210525AE0015A233 /* PBXTextBookmark */ = { + 8B79306821F4A31F006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Spiral2.cpp */; - name = "Spiral2.cpp: 216"; + name = "Spiral2.cpp: 287"; rLen = 0; - rLoc = 9851; + rLoc = 12341; rType = 0; - vrLen = 533; - vrLoc = 9227; + vrLen = 1228; + vrLoc = 11116; + }; + 8BA05A660720730100365D66 /* Spiral2.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {831, 3978}}"; + sepNavSelRange = "{12341, 0}"; + sepNavVisRange = "{11116, 1228}"; + sepNavWindowFrame = "{{589, 57}, {850, 821}}"; + }; + }; + 8BA05A690720730100365D66 /* Spiral2Version.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {824, 767}}"; + sepNavSelRange = "{2880, 0}"; + sepNavVisRange = "{50, 2893}"; + sepNavWindowFrame = "{{643, 57}, {850, 821}}"; + }; }; 8BC6025B073B072D006C4272 /* Spiral2.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1976}}"; - sepNavSelRange = "{5615, 115}"; - sepNavVisRange = "{4246, 1593}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 2028}}"; + sepNavSelRange = "{3361, 0}"; + sepNavVisRange = "{5062, 777}"; sepNavWindowFrame = "{{590, 57}, {850, 821}}"; }; }; diff --git a/plugins/MacAU/Spiral2/Spiral2.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Spiral2/Spiral2.xcodeproj/christopherjohnson.perspectivev3 index a91b03c..f083372 100755 --- a/plugins/MacAU/Spiral2/Spiral2.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Spiral2/Spiral2.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -326,7 +324,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>576 199 841 654 0 0 1440 878 </string> + <string>456 204 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -354,12 +352,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BBD183A210525AE0015A233</string> + <string>8B79306821F4A31F006E9731</string> <key>history</key> <array> <string>8B241CC221016728001BBF7E</string> - <string>8BB8B7382103A9CC00751000</string> - <string>8BBD1839210525AE0015A233</string> + <string>8B79306121F4A306006E9731</string> + <string>8B79306321F4A306006E9731</string> </array> </dict> <key>SplitCount</key> @@ -373,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 173}}</string> + <string>{{0, 0}, {531, 481}}</string> <key>RubberWindowFrame</key> - <string>576 199 841 654 0 0 1440 878 </string> + <string>456 204 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>173pt</string> + <string>481pt</string> </dict> <dict> <key>Proportion</key> - <string>435pt</string> + <string>127pt</string> <key>Tabs</key> <array> <dict> @@ -398,9 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 408}}</string> - <key>RubberWindowFrame</key> - <string>576 199 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 100}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -454,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 339}}</string> + <string>{{10, 27}, {531, 100}}</string> + <key>RubberWindowFrame</key> + <string>456 204 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -482,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBD183B210525AE0015A233</string> + <string>8B79306921F4A31F006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBD183C210525AE0015A233</string> + <string>8B79306A21F4A31F006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8BBD183D210525AE0015A233</string> + <string>8B79306B21F4A31F006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -659,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>553985454.98206902</real> + <real>569680671.35491204</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -679,7 +677,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/Spiral2/Spiral2.xcodeproj</string> </array> <key>WindowString</key> - <string>576 199 841 654 0 0 1440 878 </string> + <string>456 204 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/StarChild/StarChild.cpp b/plugins/MacAU/StarChild/StarChild.cpp index 7a434e9..61959c8 100755 --- a/plugins/MacAU/StarChild/StarChild.cpp +++ b/plugins/MacAU/StarChild/StarChild.cpp @@ -237,13 +237,8 @@ ComponentResult StarChild::Reset(AudioUnitScope inScope, AudioUnitElement inEle increment = 1; dutyCycle = 1; - demotimer = 0; - - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; return noErr; } @@ -262,9 +257,6 @@ OSStatus StarChild::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla Float32 * outputL = (Float32*)(outBuffer.mBuffers[0].mData); Float32 * outputR = (Float32*)(outBuffer.mBuffers[1].mData); - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; UInt32 nSampleFrames = inFramesToProcess; Float32 drySampleL; @@ -283,8 +275,6 @@ OSStatus StarChild::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla //let's try making it always be the max delay: smaller range forces scale to be longer Float32 outputPad = 4 * rangeDirect * sqrt(rangeDirect); - - Float32 overallscale = ((1.0-GetParameter( kParam_Two ))*9.0)+1.0; //apply the singlestage groove wear strongest when bits are heavily crushed Float32 gain = overallscale; @@ -314,9 +304,6 @@ OSStatus StarChild::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla //and now it's neatly scaled, too Float32 accumulatorSample; Float32 correction; - - - Float32 wetness = GetParameter( kParam_Three ); Float32 dryness = 1.0 - wetness; //reverb setup @@ -644,25 +631,14 @@ OSStatus StarChild::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla drySampleR += inputSampleR; //here we combine the tanks with the dry signal - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = drySampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((drySampleL-fpTemp)*fpNew); - drySampleL += fpNShapeAL; - fpTemp = drySampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((drySampleR-fpTemp)*fpNew); - drySampleR += fpNShapeAR; - } - else { - fpTemp = drySampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((drySampleL-fpTemp)*fpNew); - drySampleL += fpNShapeBL; - fpTemp = drySampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((drySampleR-fpTemp)*fpNew); - drySampleR += fpNShapeBR; - } - fpFlip = not fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((Float32)drySampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + drySampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((Float32)drySampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + drySampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *outputL = drySampleL; *outputR = drySampleR; diff --git a/plugins/MacAU/StarChild/StarChild.h b/plugins/MacAU/StarChild/StarChild.h index 75df690..239daef 100755 --- a/plugins/MacAU/StarChild/StarChild.h +++ b/plugins/MacAU/StarChild/StarChild.h @@ -116,9 +116,6 @@ public: virtual ComponentResult Version() { return kStarChildVersion; } private: - - int demotimer; - Float32 d[45102]; UInt32 dCount; @@ -136,14 +133,8 @@ private: Float64 wearLPrev; Float64 wearRPrev; - Float64 fpNShapeAL; - Float64 fpNShapeAR; - Float64 fpNShapeBL; - Float64 fpNShapeBR; - // Float64 fpNShapeA; - // Float64 fpNShapeB; - bool fpFlip; - + long double fpNShapeR; + long double fpNShapeL; }; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/plugins/MacAU/StarChild/StarChild.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/StarChild/StarChild.xcodeproj/christopherjohnson.pbxuser index 7cefddd..479a352 100755 --- a/plugins/MacAU/StarChild/StarChild.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/StarChild/StarChild.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 364, + 430, 20, 48, 43, @@ -49,42 +49,53 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528458151; - PBXWorkspaceStateSaveDate = 528458151; + PBXPerProjectTemplateStateSaveDate = 569680704; + PBXWorkspaceStateSaveDate = 569680704; }; perUserProjectItems = { - 8B9D67441F7C8F7E007AB60F /* PBXTextBookmark */ = 8B9D67441F7C8F7E007AB60F /* PBXTextBookmark */; - 8B9D76381F7FA215007AB60F /* PBXTextBookmark */ = 8B9D76381F7FA215007AB60F /* PBXTextBookmark */; + 8B79307721F4A440006E9731 /* PBXTextBookmark */ = 8B79307721F4A440006E9731 /* PBXTextBookmark */; + 8B79307921F4A440006E9731 /* PBXTextBookmark */ = 8B79307921F4A440006E9731 /* PBXTextBookmark */; + 8B79307E21F4A491006E9731 /* PBXTextBookmark */ = 8B79307E21F4A491006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B9D67441F7C8F7E007AB60F /* PBXTextBookmark */ = { + 8B79307721F4A440006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* StarChild.h */; - name = "StarChild.h: 122"; - rLen = 35; - rLoc = 5120; + name = "StarChild.h: 119"; + rLen = 0; + rLoc = 5101; rType = 0; - vrLen = 71; - vrLoc = 5102; + vrLen = 1029; + vrLoc = 4501; }; - 8B9D76381F7FA215007AB60F /* PBXTextBookmark */ = { + 8B79307921F4A440006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* StarChild.h */; - name = "StarChild.h: 122"; - rLen = 35; - rLoc = 5120; + fRef = 8BA05A660720730100365D66 /* StarChild.cpp */; + name = "StarChild.cpp: 650"; + rLen = 0; + rLoc = 38428; + rType = 0; + vrLen = 1146; + vrLoc = 37584; + }; + 8B79307E21F4A491006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* StarChild.cpp */; + name = "StarChild.cpp: 260"; + rLen = 0; + rLoc = 12080; rType = 0; - vrLen = 55; - vrLoc = 5118; + vrLen = 1508; + vrLoc = 11340; }; 8BA05A660720730100365D66 /* StarChild.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1156, 9516}}"; - sepNavSelRange = "{14734, 0}"; - sepNavVisRange = "{14520, 2363}"; + sepNavIntBoundsRect = "{{0, 0}, {1013, 8762}}"; + sepNavSelRange = "{12080, 0}"; + sepNavVisRange = "{11340, 1508}"; sepNavWindowFrame = "{{237, 42}, {1203, 836}}"; }; }; @@ -98,9 +109,9 @@ }; 8BC6025B073B072D006C4272 /* StarChild.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {922, 2080}}"; - sepNavSelRange = "{5120, 35}"; - sepNavVisRange = "{5118, 55}"; + sepNavIntBoundsRect = "{{0, 0}, {922, 2106}}"; + sepNavSelRange = "{5101, 0}"; + sepNavVisRange = "{4501, 1029}"; sepNavWindowFrame = "{{652, 63}, {932, 815}}"; }; }; diff --git a/plugins/MacAU/StarChild/StarChild.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/StarChild/StarChild.xcodeproj/christopherjohnson.perspectivev3 index 0d2abd0..3349044 100755 --- a/plugins/MacAU/StarChild/StarChild.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/StarChild/StarChild.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>876</integer> + <integer>876</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -307,7 +305,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {185, 428}}</string> + <string>{{0, 0}, {185, 661}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -317,14 +315,14 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {202, 446}}</string> + <string>{{0, 0}, {202, 679}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> <real>185</real> </array> <key>RubberWindowFrame</key> - <string>630 293 810 487 0 0 1440 878 </string> + <string>447 102 876 720 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -335,12 +333,14 @@ <key>Dock</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXProjectModuleGUID</key> <string>8BAC22EC1F1EA26E009C635C</string> <key>PBXProjectModuleLabel</key> - <string>StarChild.h</string> + <string>StarChild.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -348,14 +348,15 @@ <key>PBXProjectModuleGUID</key> <string>8BAC22ED1F1EA26E009C635C</string> <key>PBXProjectModuleLabel</key> - <string>StarChild.h</string> + <string>StarChild.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D76381F7FA215007AB60F</string> + <string>8B79307E21F4A491006E9731</string> <key>history</key> <array> - <string>8B9D67441F7C8F7E007AB60F</string> + <string>8B79307721F4A440006E9731</string> + <string>8B79307921F4A440006E9731</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 86}}</string> + <string>{{0, 0}, {669, 542}}</string> <key>RubberWindowFrame</key> - <string>630 293 810 487 0 0 1440 878 </string> + <string>447 102 876 720 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>86pt</string> + <string>542pt</string> </dict> <dict> <key>Proportion</key> - <string>355pt</string> + <string>132pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 328}}</string> - <key>RubberWindowFrame</key> - <string>630 293 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {669, 105}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -450,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {669, 105}}</string> + <key>RubberWindowFrame</key> + <string>447 102 876 720 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -459,7 +460,7 @@ </dict> </array> <key>Proportion</key> - <string>603pt</string> + <string>669pt</string> </dict> </array> <key>Name</key> @@ -478,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D76391F7FA215007AB60F</string> + <string>8B79307F21F4A491006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D763A1F7FA215007AB60F</string> + <string>8B79308021F4A491006E9731</string> <string>8BAC22EC1F1EA26E009C635C</string> - <string>8B9D763B1F7FA215007AB60F</string> + <string>8B79308121F4A491006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528458261.212134</real> + <real>569681041.62753606</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,11 +653,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D763C1F7FA215007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/StarChild/StarChild.xcodeproj</string> </array> <key>WindowString</key> - <string>630 293 810 487 0 0 1440 878 </string> + <string>447 102 876 720 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/StereoFX/StereoFX.cpp b/plugins/MacAU/StereoFX/StereoFX.cpp index 3c28466..0c32089 100755 --- a/plugins/MacAU/StereoFX/StereoFX.cpp +++ b/plugins/MacAU/StereoFX/StereoFX.cpp @@ -190,10 +190,8 @@ ComponentResult StereoFX::Reset(AudioUnitScope inScope, AudioUnitElement inElem iirSampleA = 0.0; iirSampleB = 0.0; flip = false; - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; return noErr; } @@ -215,9 +213,6 @@ OSStatus StereoFX::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlag Float64 overallscale = 1.0; overallscale /= 44100.0; overallscale *= GetSampleRate(); - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; long double mid; @@ -334,28 +329,16 @@ OSStatus StereoFX::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlag inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; - - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } flip = !flip; - //end noise shaping on 32 bit output + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((Float32)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *outputL = inputSampleL; *outputR = inputSampleR; diff --git a/plugins/MacAU/StereoFX/StereoFX.h b/plugins/MacAU/StereoFX/StereoFX.h index 11c97f6..a52f713 100755 --- a/plugins/MacAU/StereoFX/StereoFX.h +++ b/plugins/MacAU/StereoFX/StereoFX.h @@ -119,10 +119,8 @@ public: private: Float64 iirSampleA; Float64 iirSampleB; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; + long double fpNShapeL; + long double fpNShapeR; bool flip; }; diff --git a/plugins/MacAU/StereoFX/StereoFX.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/StereoFX/StereoFX.xcodeproj/christopherjohnson.pbxuser index 626bcdf..ad53de0 100755 --- a/plugins/MacAU/StereoFX/StereoFX.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/StereoFX/StereoFX.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 364, + 462, 20, 48, 43, @@ -49,18 +49,53 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 546569486; - PBXWorkspaceStateSaveDate = 546569486; + PBXPerProjectTemplateStateSaveDate = 569681258; + PBXWorkspaceStateSaveDate = 569681258; + }; + perUserProjectItems = { + 8B79308D21F4A5EC006E9731 /* PBXTextBookmark */ = 8B79308D21F4A5EC006E9731 /* PBXTextBookmark */; + 8B79308F21F4A5EC006E9731 /* PBXTextBookmark */ = 8B79308F21F4A5EC006E9731 /* PBXTextBookmark */; + 8B79309421F4A60C006E9731 /* PBXTextBookmark */ = 8B79309421F4A60C006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B79308D21F4A5EC006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* StereoFX.h */; + name = "StereoFX.h: 123"; + rLen = 0; + rLoc = 5154; + rType = 0; + vrLen = 1108; + vrLoc = 4168; + }; + 8B79308F21F4A5EC006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* StereoFX.cpp */; + name = "StereoFX.cpp: 345"; + rLen = 0; + rLoc = 14822; + rType = 0; + vrLen = 1556; + vrLoc = 12814; + }; + 8B79309421F4A60C006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* StereoFX.cpp */; + name = "StereoFX.cpp: 216"; + rLen = 0; + rLoc = 9502; + rType = 0; + vrLen = 1621; + vrLoc = 8612; + }; 8BA05A660720730100365D66 /* StereoFX.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1098, 5096}}"; - sepNavSelRange = "{12356, 2168}"; - sepNavVisRange = "{13918, 1439}"; + sepNavIntBoundsRect = "{{0, 0}, {670, 4888}}"; + sepNavSelRange = "{9502, 0}"; + sepNavVisRange = "{8612, 1621}"; sepNavWindowFrame = "{{763, 66}, {1145, 812}}"; }; }; @@ -89,9 +124,9 @@ }; 8BC6025B073B072D006C4272 /* StereoFX.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {974, 1729}}"; - sepNavSelRange = "{4892, 0}"; - sepNavVisRange = "{1992, 1673}"; + sepNavIntBoundsRect = "{{0, 0}, {922, 1911}}"; + sepNavSelRange = "{5154, 0}"; + sepNavVisRange = "{4168, 1108}"; sepNavWindowFrame = "{{726, 78}, {1021, 800}}"; }; }; diff --git a/plugins/MacAU/StereoFX/StereoFX.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/StereoFX/StereoFX.xcodeproj/christopherjohnson.perspectivev3 index 600e693..6d5fb55 100755 --- a/plugins/MacAU/StereoFX/StereoFX.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/StereoFX/StereoFX.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>908</integer> + <integer>908</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -307,7 +305,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {185, 428}}</string> + <string>{{0, 0}, {185, 649}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -317,14 +315,14 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {202, 446}}</string> + <string>{{0, 0}, {202, 667}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> <real>185</real> </array> <key>RubberWindowFrame</key> - <string>622 347 810 487 0 0 1440 878 </string> + <string>377 128 908 708 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -335,12 +333,14 @@ <key>Dock</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXProjectModuleGUID</key> <string>8B050BD820648DF500700365</string> <key>PBXProjectModuleLabel</key> - <string></string> + <string>StereoFX.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -348,7 +348,16 @@ <key>PBXProjectModuleGUID</key> <string>8B050BD920648DF500700365</string> <key>PBXProjectModuleLabel</key> - <string></string> + <string>StereoFX.cpp</string> + <key>_historyCapacity</key> + <integer>0</integer> + <key>bookmark</key> + <string>8B79309421F4A60C006E9731</string> + <key>history</key> + <array> + <string>8B79308D21F4A5EC006E9731</string> + <string>8B79308F21F4A5EC006E9731</string> + </array> </dict> <key>SplitCount</key> <string>1</string> @@ -361,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 0}}</string> + <string>{{0, 0}, {701, 497}}</string> <key>RubberWindowFrame</key> - <string>622 347 810 487 0 0 1440 878 </string> + <string>377 128 908 708 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>0pt</string> + <string>497pt</string> </dict> <dict> <key>Proportion</key> - <string>441pt</string> + <string>165pt</string> <key>Tabs</key> <array> <dict> @@ -386,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> - <key>RubberWindowFrame</key> - <string>622 347 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {701, 138}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -442,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {701, 138}}</string> + <key>RubberWindowFrame</key> + <string>377 128 908 708 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -451,7 +460,7 @@ </dict> </array> <key>Proportion</key> - <string>603pt</string> + <string>701pt</string> </dict> </array> <key>Name</key> @@ -470,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BC5CFD0209404910058B257</string> + <string>8B79309521F4A60C006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BC5CFD1209404910058B257</string> + <string>8B79309621F4A60C006E9731</string> <string>8B050BD820648DF500700365</string> - <string>8BC5CFD2209404910058B257</string> + <string>8B79309721F4A60C006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -627,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>546571409.14249599</real> + <real>569681420.22861803</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -644,11 +653,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BC5CFD3209404910058B257</string> <string>/Users/christopherjohnson/Desktop/MacAU/StereoFX/StereoFX.xcodeproj</string> </array> <key>WindowString</key> - <string>622 347 810 487 0 0 1440 878 </string> + <string>377 128 908 708 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/SubsOnly/SubsOnly.cpp b/plugins/MacAU/SubsOnly/SubsOnly.cpp index 4013912..cfa37b0 100755 --- a/plugins/MacAU/SubsOnly/SubsOnly.cpp +++ b/plugins/MacAU/SubsOnly/SubsOnly.cpp @@ -176,6 +176,7 @@ void SubsOnly::SubsOnlyKernel::Reset() iirSampleX = 0.0; iirSampleY = 0.0; iirSampleZ = 0.0; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -332,6 +333,14 @@ void SubsOnly::SubsOnlyKernel::Process( const Float32 *inSourceP, iirSampleZ = (iirSampleZ * altAmount) + (inputSample * iirAmount); inputSample = iirSampleZ; if (inputSample > 1.0) inputSample = 1.0; if (inputSample < -1.0) inputSample = -1.0; + + + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither + *destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; } diff --git a/plugins/MacAU/SubsOnly/SubsOnly.exp b/plugins/MacAU/SubsOnly/SubsOnly.exp index 4735777..04208e0 100755 --- a/plugins/MacAU/SubsOnly/SubsOnly.exp +++ b/plugins/MacAU/SubsOnly/SubsOnly.exp @@ -1 +1 @@ -_SubsOnlyEntry
\ No newline at end of file +_SubsOnlyEntry diff --git a/plugins/MacAU/SubsOnly/SubsOnly.h b/plugins/MacAU/SubsOnly/SubsOnly.h index ba372cd..a2efe96 100755 --- a/plugins/MacAU/SubsOnly/SubsOnly.h +++ b/plugins/MacAU/SubsOnly/SubsOnly.h @@ -147,6 +147,7 @@ public: Float64 iirSampleX; Float64 iirSampleY; Float64 iirSampleZ; + long double fpNShape; }; }; diff --git a/plugins/MacAU/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.pbxuser index 2f28dde..61b79e7 100755 --- a/plugins/MacAU/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 364, + 506, 20, 48, 43, @@ -49,21 +49,64 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528458272; - PBXWorkspaceStateSaveDate = 528458272; + PBXPerProjectTemplateStateSaveDate = 569681518; + PBXWorkspaceStateSaveDate = 569681518; + }; + perUserProjectItems = { + 8B7930A321F4A6E6006E9731 /* PBXTextBookmark */ = 8B7930A321F4A6E6006E9731 /* PBXTextBookmark */; + 8B7930A521F4A6E6006E9731 /* PBXTextBookmark */ = 8B7930A521F4A6E6006E9731 /* PBXTextBookmark */; + 8B7930AB21F4A702006E9731 /* PBXTextBookmark */ = 8B7930AB21F4A702006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B7930A321F4A6E6006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* SubsOnly.h */; + name = "SubsOnly.h: 150"; + rLen = 0; + rLoc = 5401; + rType = 0; + vrLen = 748; + vrLoc = 4757; + }; + 8B7930A521F4A6E6006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* SubsOnly.cpp */; + name = "SubsOnly.cpp: 337"; + rLen = 0; + rLoc = 15815; + rType = 0; + vrLen = 1698; + vrLoc = 14455; + }; + 8B7930AB21F4A702006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* SubsOnly.cpp */; + name = "SubsOnly.cpp: 337"; + rLen = 0; + rLoc = 15815; + rType = 0; + vrLen = 1744; + vrLoc = 14409; + }; 8BA05A660720730100365D66 /* SubsOnly.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {974, 4758}}"; - sepNavSelRange = "{8636, 0}"; - sepNavVisRange = "{7845, 2381}"; + sepNavIntBoundsRect = "{{0, 0}, {712, 4316}}"; + sepNavSelRange = "{15815, 0}"; + sepNavVisRange = "{14409, 1744}"; sepNavWindowFrame = "{{343, 78}, {1021, 800}}"; }; }; + 8BA05A670720730100365D66 /* SubsOnly.exp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1253, 694}}"; + sepNavSelRange = "{15, 0}"; + sepNavVisRange = "{0, 15}"; + sepNavWindowFrame = "{{15, 51}, {1300, 822}}"; + }; + }; 8BA05A690720730100365D66 /* SubsOnlyVersion.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {848, 897}}"; @@ -74,9 +117,9 @@ }; 8BC6025B073B072D006C4272 /* SubsOnly.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {974, 2028}}"; - sepNavSelRange = "{4806, 572}"; - sepNavVisRange = "{4271, 1216}"; + sepNavIntBoundsRect = "{{0, 0}, {803, 2431}}"; + sepNavSelRange = "{5401, 0}"; + sepNavVisRange = "{4757, 748}"; sepNavWindowFrame = "{{15, 73}, {1021, 800}}"; }; }; diff --git a/plugins/MacAU/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.perspectivev3 index 03a6556..0059357 100755 --- a/plugins/MacAU/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>952</integer> + <integer>952</integer> </array> <key>Perspectives</key> <array> @@ -300,14 +300,14 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>4</integer> + <integer>5</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {185, 428}}</string> + <string>{{0, 0}, {185, 684}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -317,14 +317,14 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {202, 446}}</string> + <string>{{0, 0}, {202, 702}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> <real>185</real> </array> <key>RubberWindowFrame</key> - <string>494 327 810 487 0 0 1440 878 </string> + <string>341 97 952 743 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -340,7 +340,7 @@ <key>PBXProjectModuleGUID</key> <string>8BBD0B9A1D70A94D003F8957</string> <key>PBXProjectModuleLabel</key> - <string></string> + <string>SubsOnly.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -348,7 +348,16 @@ <key>PBXProjectModuleGUID</key> <string>8BBD0B9B1D70A94D003F8957</string> <key>PBXProjectModuleLabel</key> - <string></string> + <string>SubsOnly.cpp</string> + <key>_historyCapacity</key> + <integer>0</integer> + <key>bookmark</key> + <string>8B7930AB21F4A702006E9731</string> + <key>history</key> + <array> + <string>8B7930A321F4A6E6006E9731</string> + <string>8B7930A521F4A6E6006E9731</string> + </array> </dict> <key>SplitCount</key> <string>1</string> @@ -361,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 0}}</string> + <string>{{0, 0}, {745, 504}}</string> <key>RubberWindowFrame</key> - <string>494 327 810 487 0 0 1440 878 </string> + <string>341 97 952 743 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>0pt</string> + <string>504pt</string> </dict> <dict> <key>Proportion</key> - <string>441pt</string> + <string>193pt</string> <key>Tabs</key> <array> <dict> @@ -386,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> - <key>RubberWindowFrame</key> - <string>494 327 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {745, 166}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -442,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {745, 166}}</string> + <key>RubberWindowFrame</key> + <string>341 97 952 743 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -451,7 +460,7 @@ </dict> </array> <key>Proportion</key> - <string>603pt</string> + <string>745pt</string> </dict> </array> <key>Name</key> @@ -470,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D76471F7FA22D007AB60F</string> + <string>8B7930AC21F4A702006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D76481F7FA22D007AB60F</string> + <string>8B7930AD21F4A702006E9731</string> <string>8BBD0B9A1D70A94D003F8957</string> - <string>8B9D76491F7FA22D007AB60F</string> + <string>8B7930AE21F4A702006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -627,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528458285.16747701</real> + <real>569681666.59451497</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -644,11 +653,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D764A1F7FA22D007AB60F</string> + <string>8B7930AF21F4A702006E9731</string> <string>/Users/christopherjohnson/Desktop/MacAU/SubsOnly/SubsOnly.xcodeproj</string> </array> <key>WindowString</key> - <string>494 327 810 487 0 0 1440 878 </string> + <string>341 97 952 743 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Surge/Surge.cpp b/plugins/MacAU/Surge/Surge.cpp index 6c59016..af2adf4 100755 --- a/plugins/MacAU/Surge/Surge.cpp +++ b/plugins/MacAU/Surge/Surge.cpp @@ -181,11 +181,8 @@ ComponentResult Surge::Initialize() //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ComponentResult Surge::Reset(AudioUnitScope inScope, AudioUnitElement inElement) { - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; - flip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; chaseA = 0.0; chaseB = 0.0; chaseC = 0.0; @@ -210,9 +207,6 @@ OSStatus Surge::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags, Float64 overallscale = 1.0; overallscale /= 44100.0; overallscale *= GetSampleRate(); - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -227,7 +221,6 @@ OSStatus Surge::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags, Float64 dry = 1.0 - wet; Float64 inputSense; - while (nSampleFrames-- > 0) { inputSampleL = *inputL; inputSampleR = *inputR; @@ -312,27 +305,14 @@ OSStatus Surge::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags, inputSampleR = drySampleR - (inputSampleR * intensity); inputSampleR = (drySampleR * dry) + (inputSampleR * wet); - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((Float32)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *outputL = inputSampleL; *outputR = inputSampleR; diff --git a/plugins/MacAU/Surge/Surge.h b/plugins/MacAU/Surge/Surge.h index 3569845..0d24ad7 100755 --- a/plugins/MacAU/Surge/Surge.h +++ b/plugins/MacAU/Surge/Surge.h @@ -112,11 +112,8 @@ public: virtual ComponentResult Version() { return kSurgeVersion; } private: - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; - bool flip; + long double fpNShapeL; + long double fpNShapeR; long double chaseA; long double chaseB; long double chaseC; diff --git a/plugins/MacAU/Surge/Surge.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Surge/Surge.xcodeproj/christopherjohnson.pbxuser index ea48a6f..c2c098b 100755 --- a/plugins/MacAU/Surge/Surge.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Surge/Surge.xcodeproj/christopherjohnson.pbxuser @@ -12,7 +12,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 292, + 446, 20, 48, 43, @@ -51,12 +51,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528458296; - PBXWorkspaceStateSaveDate = 528458296; + PBXPerProjectTemplateStateSaveDate = 569681702; + PBXWorkspaceStateSaveDate = 569681702; }; perUserProjectItems = { - 8B9D72591F7F002B007AB60F /* PBXTextBookmark */ = 8B9D72591F7F002B007AB60F /* PBXTextBookmark */; - 8B9D76551F7FA262007AB60F /* PBXTextBookmark */ = 8B9D76551F7FA262007AB60F /* PBXTextBookmark */; + 8B7930BB21F4A95A006E9731 /* PBXTextBookmark */ = 8B7930BB21F4A95A006E9731 /* PBXTextBookmark */; + 8B7930BD21F4A95A006E9731 /* PBXTextBookmark */ = 8B7930BD21F4A95A006E9731 /* PBXTextBookmark */; + 8B7930C221F4A996006E9731 /* PBXTextBookmark */ = 8B7930C221F4A996006E9731 /* PBXTextBookmark */; 8BD4F5501E6E0C5600288155 /* PlistBookmark */ = 8BD4F5501E6E0C5600288155 /* PlistBookmark */; 8BD4F5511E6E0C5600288155 /* PBXTextBookmark */ = 8BD4F5511E6E0C5600288155 /* PBXTextBookmark */; }; @@ -64,31 +65,41 @@ userBuildSettings = { }; }; - 8B9D72591F7F002B007AB60F /* PBXTextBookmark */ = { + 8B7930BB21F4A95A006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* Surge.h */; - name = "Surge.h: 119"; + name = "Surge.h: 116"; rLen = 0; - rLoc = 4988; + rLoc = 4922; rType = 0; - vrLen = 383; - vrLoc = 2846; + vrLen = 1308; + vrLoc = 3829; }; - 8B9D76551F7FA262007AB60F /* PBXTextBookmark */ = { + 8B7930BD21F4A95A006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* Surge.h */; - name = "Surge.h: 119"; + fRef = 8BA05A660720730100365D66 /* Surge.cpp */; + name = "Surge.cpp: 316"; + rLen = 0; + rLoc = 12980; + rType = 0; + vrLen = 1238; + vrLoc = 11945; + }; + 8B7930C221F4A996006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Surge.cpp */; + name = "Surge.cpp: 316"; rLen = 0; - rLoc = 4988; + rLoc = 12980; rType = 0; - vrLen = 334; - vrLoc = 2895; + vrLen = 1520; + vrLoc = 10349; }; 8BA05A660720730100365D66 /* Surge.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {977, 4628}}"; - sepNavSelRange = "{10662, 0}"; - sepNavVisRange = "{9183, 2420}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 4511}}"; + sepNavSelRange = "{12980, 0}"; + sepNavVisRange = "{10349, 1520}"; sepNavWindowFrame = "{{416, 39}, {1024, 839}}"; }; }; @@ -102,9 +113,9 @@ }; 8BC6025B073B072D006C4272 /* Surge.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1963}}"; - sepNavSelRange = "{4988, 0}"; - sepNavVisRange = "{2895, 334}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 1768}}"; + sepNavSelRange = "{4922, 0}"; + sepNavVisRange = "{3829, 1308}"; sepNavWindowFrame = "{{788, 29}, {1024, 839}}"; }; }; diff --git a/plugins/MacAU/Surge/Surge.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Surge/Surge.xcodeproj/christopherjohnson.perspectivev3 index 0b410ec..85d373f 100755 --- a/plugins/MacAU/Surge/Surge.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Surge/Surge.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>841</integer> - <integer>841</integer> + <integer>898</integer> + <integer>898</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -282,7 +280,7 @@ <dict> <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> <array> - <real>288</real> + <real>191</real> </array> <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> <array> @@ -308,7 +306,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {288, 595}}</string> + <string>{{0, 0}, {191, 681}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -318,19 +316,19 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {305, 613}}</string> + <string>{{0, 0}, {208, 699}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> - <real>288</real> + <real>191</real> </array> <key>RubberWindowFrame</key> - <string>599 205 841 654 0 0 1440 878 </string> + <string>405 127 898 740 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> <key>Proportion</key> - <string>305pt</string> + <string>208pt</string> </dict> <dict> <key>Dock</key> @@ -341,7 +339,7 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274A1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>Surge.h</string> + <string>Surge.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -349,16 +347,17 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274B1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>Surge.h</string> + <string>Surge.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D76551F7FA262007AB60F</string> + <string>8B7930C221F4A996006E9731</string> <key>history</key> <array> <string>8BD4F5501E6E0C5600288155</string> <string>8BD4F5511E6E0C5600288155</string> - <string>8B9D72591F7F002B007AB60F</string> + <string>8B7930BB21F4A95A006E9731</string> + <string>8B7930BD21F4A95A006E9731</string> </array> </dict> <key>SplitCount</key> @@ -372,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 202}}</string> + <string>{{0, 0}, {685, 539}}</string> <key>RubberWindowFrame</key> - <string>599 205 841 654 0 0 1440 878 </string> + <string>405 127 898 740 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>202pt</string> + <string>539pt</string> </dict> <dict> <key>Proportion</key> - <string>406pt</string> + <string>155pt</string> <key>Tabs</key> <array> <dict> @@ -397,9 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 379}}</string> - <key>RubberWindowFrame</key> - <string>599 205 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {685, 128}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -453,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 315}}</string> + <string>{{10, 27}, {685, 128}}</string> + <key>RubberWindowFrame</key> + <string>405 127 898 740 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -462,7 +461,7 @@ </dict> </array> <key>Proportion</key> - <string>531pt</string> + <string>685pt</string> </dict> </array> <key>Name</key> @@ -481,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D76561F7FA262007AB60F</string> + <string>8B7930C321F4A996006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D76571F7FA262007AB60F</string> + <string>8B7930C421F4A996006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D76581F7FA262007AB60F</string> + <string>8B7930C521F4A996006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -658,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528458338.37719601</real> + <real>569682326.61837006</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -675,11 +674,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D76591F7FA262007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/Surge/Surge.xcodeproj</string> </array> <key>WindowString</key> - <string>599 205 841 654 0 0 1440 878 </string> + <string>405 127 898 740 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/SurgeMono/SurgeMono.cpp b/plugins/MacAU/SurgeMono/SurgeMono.cpp index dac3bbd..8909d58 100755 --- a/plugins/MacAU/SurgeMono/SurgeMono.cpp +++ b/plugins/MacAU/SurgeMono/SurgeMono.cpp @@ -166,9 +166,7 @@ ComponentResult SurgeMono::Initialize() //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void SurgeMono::SurgeMonoKernel::Reset() { - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; chaseA = 0.0; chaseB = 0.0; chaseC = 0.0; @@ -190,11 +188,7 @@ void SurgeMono::SurgeMonoKernel::Process( const Float32 *inSourceP, Float32 *destP = inDestP; long double overallscale = 1.0; overallscale /= 44100.0; - overallscale *= GetSampleRate(); - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + overallscale *= GetSampleRate(); long double inputSample; long double drySample; Float64 chaseMax = 0.0; @@ -205,7 +199,6 @@ void SurgeMono::SurgeMonoKernel::Process( const Float32 *inSourceP, Float64 dry = 1.0 - wet; Float64 inputSense; - while (nSampleFrames-- > 0) { inputSample = *sourceP; if (inputSample<1.2e-38 && -inputSample<1.2e-38) { @@ -265,19 +258,11 @@ void SurgeMono::SurgeMonoKernel::Process( const Float32 *inSourceP, inputSample = drySample - (inputSample * intensity); inputSample = (drySample * dry) + (inputSample * wet); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/SurgeMono/SurgeMono.h b/plugins/MacAU/SurgeMono/SurgeMono.h index 68d3d7b..692d325 100755 --- a/plugins/MacAU/SurgeMono/SurgeMono.h +++ b/plugins/MacAU/SurgeMono/SurgeMono.h @@ -128,9 +128,7 @@ public: virtual void Reset(); private: - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; long double chaseA; long double chaseB; long double chaseC; diff --git a/plugins/MacAU/SurgeMono/SurgeMono.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/SurgeMono/SurgeMono.xcodeproj/christopherjohnson.pbxuser index e9de3fd..073386c 100755 --- a/plugins/MacAU/SurgeMono/SurgeMono.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/SurgeMono/SurgeMono.xcodeproj/christopherjohnson.pbxuser @@ -49,18 +49,20 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528458347; - PBXWorkspaceStateSaveDate = 528458347; + PBXPerProjectTemplateStateSaveDate = 569682465; + PBXWorkspaceStateSaveDate = 569682465; }; perUserProjectItems = { - 8B9D67791F7C8FFF007AB60F /* PlistBookmark */ = 8B9D67791F7C8FFF007AB60F /* PlistBookmark */; - 8B9D76661F7FA27C007AB60F /* PlistBookmark */ = 8B9D76661F7FA27C007AB60F /* PlistBookmark */; + 8B7930D121F4AAA2006E9731 /* PlistBookmark */ = 8B7930D121F4AAA2006E9731 /* PlistBookmark */; + 8B7930D221F4AAA2006E9731 /* PBXTextBookmark */ = 8B7930D221F4AAA2006E9731 /* PBXTextBookmark */; + 8B7930D421F4AAA2006E9731 /* PBXTextBookmark */ = 8B7930D421F4AAA2006E9731 /* PBXTextBookmark */; + 8B7930D921F4AAD9006E9731 /* PBXTextBookmark */ = 8B7930D921F4AAD9006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B9D67791F7C8FFF007AB60F /* PlistBookmark */ = { + 8B7930D121F4AAA2006E9731 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; fallbackIsa = PBXBookmark; @@ -70,25 +72,43 @@ ); name = /Users/christopherjohnson/Desktop/MacAU/SurgeMono/Info.plist; rLen = 0; - rLoc = 9223372036854775808; + rLoc = 9223372036854775807; }; - 8B9D76661F7FA27C007AB60F /* PlistBookmark */ = { - isa = PlistBookmark; - fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; - fallbackIsa = PBXBookmark; - isK = 0; - kPath = ( - CFBundleName, - ); - name = /Users/christopherjohnson/Desktop/MacAU/SurgeMono/Info.plist; + 8B7930D221F4AAA2006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* SurgeMono.h */; + name = "SurgeMono.h: 131"; rLen = 0; - rLoc = 9223372036854775807; + rLoc = 5211; + rType = 0; + vrLen = 694; + vrLoc = 4739; + }; + 8B7930D421F4AAA2006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* SurgeMono.cpp */; + name = "SurgeMono.cpp: 266"; + rLen = 0; + rLoc = 11482; + rType = 0; + vrLen = 860; + vrLoc = 10710; + }; + 8B7930D921F4AAD9006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* SurgeMono.cpp */; + name = "SurgeMono.cpp: 266"; + rLen = 0; + rLoc = 11482; + rType = 0; + vrLen = 863; + vrLoc = 10707; }; 8BA05A660720730100365D66 /* SurgeMono.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {977, 3770}}"; - sepNavSelRange = "{9077, 0}"; - sepNavVisRange = "{8218, 2347}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 3796}}"; + sepNavSelRange = "{11482, 0}"; + sepNavVisRange = "{10707, 863}"; sepNavWindowFrame = "{{416, 39}, {1024, 839}}"; }; }; @@ -102,9 +122,9 @@ }; 8BC6025B073B072D006C4272 /* SurgeMono.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {977, 1885}}"; - sepNavSelRange = "{5253, 112}"; - sepNavVisRange = "{3887, 1587}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 2210}}"; + sepNavSelRange = "{5211, 0}"; + sepNavVisRange = "{4739, 694}"; sepNavWindowFrame = "{{571, 39}, {1024, 839}}"; }; }; diff --git a/plugins/MacAU/SurgeMono/SurgeMono.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/SurgeMono/SurgeMono.xcodeproj/christopherjohnson.perspectivev3 index e17ff881..3226810 100755 --- a/plugins/MacAU/SurgeMono/SurgeMono.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/SurgeMono/SurgeMono.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -325,7 +323,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>582 129 841 654 0 0 1440 878 </string> + <string>444 180 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -341,7 +339,7 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274A1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>Info.plist</string> + <string>SurgeMono.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -349,14 +347,16 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274B1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>Info.plist</string> + <string>SurgeMono.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D76661F7FA27C007AB60F</string> + <string>8B7930D921F4AAD9006E9731</string> <key>history</key> <array> - <string>8B9D67791F7C8FFF007AB60F</string> + <string>8B7930D121F4AAA2006E9731</string> + <string>8B7930D221F4AAA2006E9731</string> + <string>8B7930D421F4AAA2006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 216}}</string> + <string>{{0, 0}, {531, 414}}</string> <key>RubberWindowFrame</key> - <string>582 129 841 654 0 0 1440 878 </string> + <string>444 180 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>216pt</string> + <string>414pt</string> </dict> <dict> <key>Proportion</key> - <string>392pt</string> + <string>194pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 365}}</string> - <key>RubberWindowFrame</key> - <string>582 129 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 167}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 315}}</string> + <string>{{10, 27}, {531, 167}}</string> + <key>RubberWindowFrame</key> + <string>444 180 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D76671F7FA27C007AB60F</string> + <string>8B7930DA21F4AAD9006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D76681F7FA27C007AB60F</string> + <string>8B7930DB21F4AAD9006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D76691F7FA27C007AB60F</string> + <string>8B7930DC21F4AAD9006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -656,7 +656,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528458364.66416103</real> + <real>569682649.56976402</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -673,11 +673,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D766A1F7FA27C007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/SurgeMono/SurgeMono.xcodeproj</string> </array> <key>WindowString</key> - <string>582 129 841 654 0 0 1440 878 </string> + <string>444 180 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/SurgeTide/SurgeTide.cpp b/plugins/MacAU/SurgeTide/SurgeTide.cpp index 2a2fe42..3a415f2 100755 --- a/plugins/MacAU/SurgeTide/SurgeTide.cpp +++ b/plugins/MacAU/SurgeTide/SurgeTide.cpp @@ -188,11 +188,8 @@ ComponentResult SurgeTide::Initialize() //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ComponentResult SurgeTide::Reset(AudioUnitScope inScope, AudioUnitElement inElement) { - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; - flip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; chaseA = 0.0; chaseB = 0.0; chaseC = 0.0; @@ -215,11 +212,7 @@ OSStatus SurgeTide::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla Float64 overallscale = 1.0; overallscale /= 44100.0; overallscale *= GetSampleRate(); - - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + long double inputSampleL; long double inputSampleR; long double drySampleL; @@ -309,27 +302,14 @@ OSStatus SurgeTide::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla inputSampleR = drySampleR - (inputSampleR * intensity); inputSampleR = (drySampleR * dry) + (inputSampleR * wet); - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((Float32)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *outputL = inputSampleL; *outputR = inputSampleR; diff --git a/plugins/MacAU/SurgeTide/SurgeTide.h b/plugins/MacAU/SurgeTide/SurgeTide.h index f62817e..a72f6c6 100755 --- a/plugins/MacAU/SurgeTide/SurgeTide.h +++ b/plugins/MacAU/SurgeTide/SurgeTide.h @@ -115,11 +115,8 @@ public: virtual ComponentResult Version() { return kSurgeTideVersion; } private: - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; - bool flip; + long double fpNShapeL; + long double fpNShapeR; long double chaseA; long double chaseB; long double chaseC; diff --git a/plugins/MacAU/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.pbxuser index 40a4ff3..72c4866 100755 --- a/plugins/MacAU/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 292, + 316, 20, 48, 43, @@ -49,40 +49,20 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 543460920; - PBXWorkspaceStateSaveDate = 543460920; + PBXPerProjectTemplateStateSaveDate = 569682693; + PBXWorkspaceStateSaveDate = 569682693; }; perUserProjectItems = { - 8B050BEA20648E5500700365 /* PBXTextBookmark */ = 8B050BEA20648E5500700365 /* PBXTextBookmark */; - 8B050BEB20648E5500700365 /* PBXTextBookmark */ = 8B050BEB20648E5500700365 /* PBXTextBookmark */; 8B3221941DC3CF2D00C1FCDF /* PlistBookmark */ = 8B3221941DC3CF2D00C1FCDF /* PlistBookmark */; 8B3DF6731E6A5BAE00E788B6 /* PBXTextBookmark */ = 8B3DF6731E6A5BAE00E788B6 /* PBXTextBookmark */; - 8BC9089C1DC7FFFE008187BE /* PBXTextBookmark */ = 8BC9089C1DC7FFFE008187BE /* PBXTextBookmark */; + 8B7930E821F4AB6C006E9731 /* PBXTextBookmark */ = 8B7930E821F4AB6C006E9731 /* PBXTextBookmark */; + 8B7930EA21F4AB6C006E9731 /* PBXTextBookmark */ = 8B7930EA21F4AB6C006E9731 /* PBXTextBookmark */; + 8B7930EF21F4AB96006E9731 /* PBXTextBookmark */ = 8B7930EF21F4AB96006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B050BEA20648E5500700365 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* SurgeTide.h */; - name = "SurgeTide.h: 132"; - rLen = 0; - rLoc = 5345; - rType = 0; - vrLen = 263; - vrLoc = 5082; - }; - 8B050BEB20648E5500700365 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* SurgeTide.cpp */; - name = "SurgeTide.cpp: 303"; - rLen = 0; - rLoc = 12636; - rType = 0; - vrLen = 1129; - vrLoc = 12486; - }; 8B3221941DC3CF2D00C1FCDF /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; @@ -105,11 +85,41 @@ vrLen = 359; vrLoc = 2598; }; + 8B7930E821F4AB6C006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* SurgeTide.h */; + name = "SurgeTide.h: 119"; + rLen = 0; + rLoc = 5103; + rType = 0; + vrLen = 1669; + vrLoc = 3609; + }; + 8B7930EA21F4AB6C006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* SurgeTide.cpp */; + name = "SurgeTide.cpp: 313"; + rLen = 0; + rLoc = 13187; + rType = 0; + vrLen = 1366; + vrLoc = 12024; + }; + 8B7930EF21F4AB96006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* SurgeTide.cpp */; + name = "SurgeTide.cpp: 313"; + rLen = 0; + rLoc = 13187; + rType = 0; + vrLen = 1259; + vrLoc = 11985; + }; 8BA05A660720730100365D66 /* SurgeTide.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {803, 4680}}"; - sepNavSelRange = "{12636, 0}"; - sepNavVisRange = "{12486, 1129}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 4498}}"; + sepNavSelRange = "{13187, 0}"; + sepNavVisRange = "{11985, 1259}"; sepNavWindowFrame = "{{758, 43}, {679, 835}}"; }; }; @@ -123,22 +133,12 @@ }; 8BC6025B073B072D006C4272 /* SurgeTide.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1846}}"; - sepNavSelRange = "{5345, 0}"; - sepNavVisRange = "{5082, 263}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 1703}}"; + sepNavSelRange = "{5103, 0}"; + sepNavVisRange = "{3609, 1669}"; sepNavWindowFrame = "{{755, 43}, {679, 835}}"; }; }; - 8BC9089C1DC7FFFE008187BE /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* SurgeTide.cpp */; - name = "SurgeTide.cpp: 304"; - rLen = 0; - rLoc = 13729; - rType = 0; - vrLen = 592; - vrLoc = 10562; - }; 8BD3CCB8148830B20062E48C /* Source Control */ = { isa = PBXSourceControlManager; fallbackIsa = XCSourceControlManager; diff --git a/plugins/MacAU/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.perspectivev3 index 5941322..f9eb835 100755 --- a/plugins/MacAU/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>841</integer> - <integer>841</integer> + <integer>865</integer> + <integer>865</integer> </array> <key>Perspectives</key> <array> @@ -306,7 +306,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {288, 595}}</string> + <string>{{0, 0}, {288, 707}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -316,14 +316,14 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {305, 613}}</string> + <string>{{0, 0}, {305, 725}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> <real>288</real> </array> <key>RubberWindowFrame</key> - <string>599 190 841 654 0 0 1440 878 </string> + <string>436 94 865 766 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -334,8 +334,6 @@ <key>Dock</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXProjectModuleGUID</key> @@ -353,13 +351,13 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B050BEB20648E5500700365</string> + <string>8B7930EF21F4AB96006E9731</string> <key>history</key> <array> <string>8B3221941DC3CF2D00C1FCDF</string> <string>8B3DF6731E6A5BAE00E788B6</string> - <string>8B050BEA20648E5500700365</string> - <string>8BC9089C1DC7FFFE008187BE</string> + <string>8B7930E821F4AB6C006E9731</string> + <string>8B7930EA21F4AB6C006E9731</string> </array> </dict> <key>SplitCount</key> @@ -373,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 502}}</string> + <string>{{0, 0}, {555, 495}}</string> <key>RubberWindowFrame</key> - <string>599 190 841 654 0 0 1440 878 </string> + <string>436 94 865 766 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>502pt</string> + <string>495pt</string> </dict> <dict> <key>Proportion</key> - <string>106pt</string> + <string>225pt</string> <key>Tabs</key> <array> <dict> @@ -398,9 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 79}}</string> - <key>RubberWindowFrame</key> - <string>599 190 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {555, 83}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -454,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 315}}</string> + <string>{{10, 27}, {555, 198}}</string> + <key>RubberWindowFrame</key> + <string>436 94 865 766 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -463,7 +461,7 @@ </dict> </array> <key>Proportion</key> - <string>531pt</string> + <string>555pt</string> </dict> </array> <key>Name</key> @@ -482,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B050BEC20648E5500700365</string> + <string>8B7930F021F4AB96006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B050BED20648E5500700365</string> + <string>8B7930F121F4AB96006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B050BEE20648E5500700365</string> + <string>8B7930F221F4AB96006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -659,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>543460949.69104803</real> + <real>569682838.98241794</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -679,7 +677,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/SurgeTide/SurgeTide.xcodeproj</string> </array> <key>WindowString</key> - <string>599 190 841 654 0 0 1440 878 </string> + <string>436 94 865 766 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/SurgeTideMono/SurgeTideMono.cpp b/plugins/MacAU/SurgeTideMono/SurgeTideMono.cpp index 04f678b..2bbd972 100755 --- a/plugins/MacAU/SurgeTideMono/SurgeTideMono.cpp +++ b/plugins/MacAU/SurgeTideMono/SurgeTideMono.cpp @@ -174,9 +174,7 @@ ComponentResult SurgeTideMono::Initialize() //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void SurgeTideMono::SurgeTideMonoKernel::Reset() { - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; chaseA = 0.0; chaseB = 0.0; chaseC = 0.0; @@ -196,11 +194,7 @@ void SurgeTideMono::SurgeTideMonoKernel::Process( const Float32 *inSourceP, Float32 *destP = inDestP; long double overallscale = 1.0; overallscale /= 44100.0; - overallscale *= GetSampleRate(); - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + overallscale *= GetSampleRate(); long double inputSample; long double drySample; Float64 intensity = GetParameter( kParam_One ); @@ -210,7 +204,6 @@ void SurgeTideMono::SurgeTideMonoKernel::Process( const Float32 *inSourceP, Float64 dry = 1.0 - wet; Float64 inputSense; - while (nSampleFrames-- > 0) { inputSample = *sourceP; if (inputSample<1.2e-38 && -inputSample<1.2e-38) { @@ -262,19 +255,11 @@ void SurgeTideMono::SurgeTideMonoKernel::Process( const Float32 *inSourceP, inputSample = drySample - (inputSample * intensity); inputSample = (drySample * dry) + (inputSample * wet); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/SurgeTideMono/SurgeTideMono.h b/plugins/MacAU/SurgeTideMono/SurgeTideMono.h index 9b5f6c9..067d2e5 100755 --- a/plugins/MacAU/SurgeTideMono/SurgeTideMono.h +++ b/plugins/MacAU/SurgeTideMono/SurgeTideMono.h @@ -131,9 +131,7 @@ public: virtual void Reset(); private: - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; long double chaseA; long double chaseB; long double chaseC; diff --git a/plugins/MacAU/SurgeTideMono/SurgeTideMono.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/SurgeTideMono/SurgeTideMono.xcodeproj/christopherjohnson.pbxuser index 4cdf650..fce4d19 100755 --- a/plugins/MacAU/SurgeTideMono/SurgeTideMono.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/SurgeTideMono/SurgeTideMono.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 292, + 405, 20, 48, 43, @@ -49,18 +49,20 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528458399; - PBXWorkspaceStateSaveDate = 528458399; + PBXPerProjectTemplateStateSaveDate = 569682860; + PBXWorkspaceStateSaveDate = 569682860; }; perUserProjectItems = { - 8B9D67A21F7C9057007AB60F /* PlistBookmark */ = 8B9D67A21F7C9057007AB60F /* PlistBookmark */; - 8B9D76841F7FA2BF007AB60F /* PlistBookmark */ = 8B9D76841F7FA2BF007AB60F /* PlistBookmark */; + 8B7930FE21F4AC25006E9731 /* PlistBookmark */ = 8B7930FE21F4AC25006E9731 /* PlistBookmark */; + 8B7930FF21F4AC25006E9731 /* PBXTextBookmark */ = 8B7930FF21F4AC25006E9731 /* PBXTextBookmark */; + 8B79310121F4AC25006E9731 /* PBXTextBookmark */ = 8B79310121F4AC25006E9731 /* PBXTextBookmark */; + 8B79310621F4AC4F006E9731 /* PBXTextBookmark */ = 8B79310621F4AC4F006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B9D67A21F7C9057007AB60F /* PlistBookmark */ = { + 8B7930FE21F4AC25006E9731 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; fallbackIsa = PBXBookmark; @@ -70,25 +72,43 @@ ); name = /Users/christopherjohnson/Desktop/MacAU/SurgeTideMono/Info.plist; rLen = 0; - rLoc = 9223372036854775808; + rLoc = 9223372036854775807; }; - 8B9D76841F7FA2BF007AB60F /* PlistBookmark */ = { - isa = PlistBookmark; - fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; - fallbackIsa = PBXBookmark; - isK = 0; - kPath = ( - CFBundleName, - ); - name = /Users/christopherjohnson/Desktop/MacAU/SurgeTideMono/Info.plist; + 8B7930FF21F4AC25006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* SurgeTideMono.h */; + name = "SurgeTideMono.h: 134"; rLen = 0; - rLoc = 9223372036854775807; + rLoc = 5400; + rType = 0; + vrLen = 247; + vrLoc = 5329; + }; + 8B79310121F4AC25006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* SurgeTideMono.cpp */; + name = "SurgeTideMono.cpp: 263"; + rLen = 0; + rLoc = 11716; + rType = 0; + vrLen = 788; + vrLoc = 11016; + }; + 8B79310621F4AC4F006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* SurgeTideMono.cpp */; + name = "SurgeTideMono.cpp: 263"; + rLen = 0; + rLoc = 11716; + rType = 0; + vrLen = 791; + vrLoc = 11013; }; 8BA05A660720730100365D66 /* SurgeTideMono.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {691, 3757}}"; - sepNavSelRange = "{9553, 0}"; - sepNavVisRange = "{8589, 2453}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 3770}}"; + sepNavSelRange = "{11716, 0}"; + sepNavVisRange = "{11013, 791}"; sepNavWindowFrame = "{{733, 43}, {679, 835}}"; }; }; @@ -102,9 +122,9 @@ }; 8BC6025B073B072D006C4272 /* SurgeTideMono.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1898}}"; - sepNavSelRange = "{5377, 240}"; - sepNavVisRange = "{3991, 1626}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 2054}}"; + sepNavSelRange = "{5400, 0}"; + sepNavVisRange = "{5329, 247}"; sepNavWindowFrame = "{{849, 40}, {679, 835}}"; }; }; diff --git a/plugins/MacAU/SurgeTideMono/SurgeTideMono.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/SurgeTideMono/SurgeTideMono.xcodeproj/christopherjohnson.perspectivev3 index 1739112..606086c 100755 --- a/plugins/MacAU/SurgeTideMono/SurgeTideMono.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/SurgeTideMono/SurgeTideMono.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -282,7 +280,7 @@ <dict> <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> <array> - <real>288</real> + <real>175</real> </array> <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> <array> @@ -308,7 +306,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {288, 595}}</string> + <string>{{0, 0}, {175, 595}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -318,19 +316,19 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {305, 613}}</string> + <string>{{0, 0}, {192, 613}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> - <real>288</real> + <real>175</real> </array> <key>RubberWindowFrame</key> - <string>528 221 841 654 0 0 1440 878 </string> + <string>454 219 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> <key>Proportion</key> - <string>305pt</string> + <string>192pt</string> </dict> <dict> <key>Dock</key> @@ -341,7 +339,7 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274A1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>Info.plist</string> + <string>SurgeTideMono.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -349,14 +347,16 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274B1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>Info.plist</string> + <string>SurgeTideMono.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D76841F7FA2BF007AB60F</string> + <string>8B79310621F4AC4F006E9731</string> <key>history</key> <array> - <string>8B9D67A21F7C9057007AB60F</string> + <string>8B7930FE21F4AC25006E9731</string> + <string>8B7930FF21F4AC25006E9731</string> + <string>8B79310121F4AC25006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 229}}</string> + <string>{{0, 0}, {644, 402}}</string> <key>RubberWindowFrame</key> - <string>528 221 841 654 0 0 1440 878 </string> + <string>454 219 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>229pt</string> + <string>402pt</string> </dict> <dict> <key>Proportion</key> - <string>379pt</string> + <string>206pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 352}}</string> - <key>RubberWindowFrame</key> - <string>528 221 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {644, 179}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 315}}</string> + <string>{{10, 27}, {644, 179}}</string> + <key>RubberWindowFrame</key> + <string>454 219 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -460,7 +460,7 @@ </dict> </array> <key>Proportion</key> - <string>531pt</string> + <string>644pt</string> </dict> </array> <key>Name</key> @@ -479,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D76851F7FA2BF007AB60F</string> + <string>8B79310721F4AC4F006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D76861F7FA2BF007AB60F</string> + <string>8B79310821F4AC4F006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D76871F7FA2BF007AB60F</string> + <string>8B79310921F4AC4F006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -656,7 +656,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528458431.67624801</real> + <real>569683023.93876398</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -673,11 +673,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D76881F7FA2BF007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/SurgeTideMono/SurgeTideMono.xcodeproj</string> </array> <key>WindowString</key> - <string>528 221 841 654 0 0 1440 878 </string> + <string>454 219 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Swell/Swell.cpp b/plugins/MacAU/Swell/Swell.cpp index 821b33d..09dec89 100755 --- a/plugins/MacAU/Swell/Swell.cpp +++ b/plugins/MacAU/Swell/Swell.cpp @@ -176,10 +176,7 @@ void Swell::SwellKernel::Reset() { swell = 0.0; louder = false; - - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -197,10 +194,6 @@ void Swell::SwellKernel::Process( const Float32 *inSourceP, long double overallscale = 1.0; overallscale /= 44100.0; overallscale *= GetSampleRate(); - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - Float64 thresholdOn = pow(GetParameter( kParam_One ),2) * GetParameter( kParam_Two ); Float64 speedOn = (pow(GetParameter( kParam_Two ),2)*0.001)/overallscale; Float64 thresholdOff = thresholdOn * GetParameter( kParam_Two ); @@ -252,20 +245,11 @@ void Swell::SwellKernel::Process( const Float32 *inSourceP, inputSample = (inputSample * wet) + (drySample * dry); } - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/Swell/Swell.h b/plugins/MacAU/Swell/Swell.h index 31aa5a8..fa35436 100755 --- a/plugins/MacAU/Swell/Swell.h +++ b/plugins/MacAU/Swell/Swell.h @@ -134,10 +134,7 @@ public: long double swell; bool louder; - - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/Swell/Swell.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Swell/Swell.xcodeproj/christopherjohnson.pbxuser index 3af313e..ac01270 100755 --- a/plugins/MacAU/Swell/Swell.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Swell/Swell.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 292, + 398, 20, 48, 43, @@ -49,24 +49,55 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 532491016; - PBXWorkspaceStateSaveDate = 532491016; + PBXPerProjectTemplateStateSaveDate = 569683044; + PBXWorkspaceStateSaveDate = 569683044; }; perUserProjectItems = { + 8B79311521F4ACEB006E9731 /* PBXTextBookmark */ = 8B79311521F4ACEB006E9731 /* PBXTextBookmark */; + 8B79311721F4ACEB006E9731 /* PBXTextBookmark */ = 8B79311721F4ACEB006E9731 /* PBXTextBookmark */; + 8B79311C21F4AD21006E9731 /* PBXTextBookmark */ = 8B79311C21F4AD21006E9731 /* PBXTextBookmark */; 8BB5DDF41FBD106E008B4570 /* PlistBookmark */ = 8BB5DDF41FBD106E008B4570 /* PlistBookmark */; 8BCC7CCD1FBD2D3C00982BD6 /* PBXTextBookmark */ = 8BCC7CCD1FBD2D3C00982BD6 /* PBXTextBookmark */; - 8BCC7CCE1FBD2D3C00982BD6 /* PBXBookmark */ = 8BCC7CCE1FBD2D3C00982BD6 /* PBXBookmark */; - 8BCC7CD31FBD2E6800982BD6 /* PBXTextBookmark */ = 8BCC7CD31FBD2E6800982BD6 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B79311521F4ACEB006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* Swell.h */; + name = "Swell.h: 137"; + rLen = 0; + rLoc = 5329; + rType = 0; + vrLen = 700; + vrLoc = 4739; + }; + 8B79311721F4ACEB006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Swell.cpp */; + name = "Swell.cpp: 247"; + rLen = 0; + rLoc = 11121; + rType = 0; + vrLen = 871; + vrLoc = 10589; + }; + 8B79311C21F4AD21006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Swell.cpp */; + name = "Swell.cpp: 247"; + rLen = 0; + rLoc = 11121; + rType = 0; + vrLen = 957; + vrLoc = 10503; + }; 8BA05A660720730100365D66 /* Swell.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 3809}}"; - sepNavSelRange = "{11320, 0}"; - sepNavVisRange = "{9895, 1840}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 3484}}"; + sepNavSelRange = "{11121, 0}"; + sepNavVisRange = "{10503, 957}"; sepNavWindowFrame = "{{545, 39}, {895, 839}}"; }; }; @@ -92,9 +123,9 @@ }; 8BC6025B073B072D006C4272 /* Swell.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {824, 1755}}"; - sepNavSelRange = "{2846, 0}"; - sepNavVisRange = "{2642, 366}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 2275}}"; + sepNavSelRange = "{5329, 0}"; + sepNavVisRange = "{4739, 700}"; sepNavWindowFrame = "{{678, 39}, {895, 839}}"; }; }; @@ -108,20 +139,6 @@ vrLen = 336; vrLoc = 2594; }; - 8BCC7CCE1FBD2D3C00982BD6 /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 8BC6025B073B072D006C4272 /* Swell.h */; - }; - 8BCC7CD31FBD2E6800982BD6 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* Swell.h */; - name = "Swell.h: 57"; - rLen = 0; - rLoc = 2846; - rType = 0; - vrLen = 366; - vrLoc = 2642; - }; 8BD3CCB8148830B20062E48C /* Source Control */ = { isa = PBXSourceControlManager; fallbackIsa = XCSourceControlManager; diff --git a/plugins/MacAU/Swell/Swell.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Swell/Swell.xcodeproj/christopherjohnson.perspectivev3 index cf784ae..5de7e2f 100755 --- a/plugins/MacAU/Swell/Swell.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Swell/Swell.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -282,7 +280,7 @@ <dict> <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> <array> - <real>288</real> + <real>182</real> </array> <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> <array> @@ -308,7 +306,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {288, 595}}</string> + <string>{{0, 0}, {182, 595}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -318,19 +316,19 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {305, 613}}</string> + <string>{{0, 0}, {199, 613}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> - <real>288</real> + <real>182</real> </array> <key>RubberWindowFrame</key> - <string>580 200 841 654 0 0 1440 878 </string> + <string>450 207 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> <key>Proportion</key> - <string>305pt</string> + <string>199pt</string> </dict> <dict> <key>Dock</key> @@ -341,7 +339,7 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274A1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>Swell.h</string> + <string>Swell.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -349,16 +347,17 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274B1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>Swell.h</string> + <string>Swell.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BCC7CD31FBD2E6800982BD6</string> + <string>8B79311C21F4AD21006E9731</string> <key>history</key> <array> <string>8BB5DDF41FBD106E008B4570</string> <string>8BCC7CCD1FBD2D3C00982BD6</string> - <string>8BCC7CCE1FBD2D3C00982BD6</string> + <string>8B79311521F4ACEB006E9731</string> + <string>8B79311721F4ACEB006E9731</string> </array> </dict> <key>SplitCount</key> @@ -372,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 254}}</string> + <string>{{0, 0}, {637, 421}}</string> <key>RubberWindowFrame</key> - <string>580 200 841 654 0 0 1440 878 </string> + <string>450 207 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>254pt</string> + <string>421pt</string> </dict> <dict> <key>Proportion</key> - <string>354pt</string> + <string>187pt</string> <key>Tabs</key> <array> <dict> @@ -397,9 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 327}}</string> - <key>RubberWindowFrame</key> - <string>580 200 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {637, 160}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -453,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 315}}</string> + <string>{{10, 27}, {637, 160}}</string> + <key>RubberWindowFrame</key> + <string>450 207 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -462,7 +461,7 @@ </dict> </array> <key>Proportion</key> - <string>531pt</string> + <string>637pt</string> </dict> </array> <key>Name</key> @@ -481,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BCC7CA61FBD2B1F00982BD6</string> + <string>8B79311D21F4AD21006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BCC7CA71FBD2B1F00982BD6</string> + <string>8B79311E21F4AD21006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8BCC7CA81FBD2B1F00982BD6</string> + <string>8B79311F21F4AD21006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -658,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>532491880.84511602</real> + <real>569683233.59178197</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -678,7 +677,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/Swell/Swell.xcodeproj</string> </array> <key>WindowString</key> - <string>580 200 841 654 0 0 1440 878 </string> + <string>450 207 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.mode1v3 b/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.mode1v3 index f301be9..f301be9 100644..100755 --- a/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.mode1v3 +++ b/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.mode1v3 diff --git a/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.pbxuser index d9faebe..d9faebe 100644..100755 --- a/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.pbxuser diff --git a/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.perspectivev3 index 00fe290..00fe290 100644..100755 --- a/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.perspectivev3 diff --git a/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/project.pbxproj b/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/project.pbxproj index 3e6384c..3e6384c 100644..100755 --- a/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/project.pbxproj +++ b/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/project.pbxproj diff --git a/plugins/MacAU/TapeDelay/TapeDelay.cpp b/plugins/MacAU/TapeDelay/TapeDelay.cpp index 2a8219e..8f0ea2b 100755 --- a/plugins/MacAU/TapeDelay/TapeDelay.cpp +++ b/plugins/MacAU/TapeDelay/TapeDelay.cpp @@ -322,23 +322,15 @@ void TapeDelay::TapeDelayKernel::Process( const Float32 *inSourceP, //yes this is a second bounds check. it's cheap, check EVERY time inputSample = (inputSample * dry) + (d[delay] * wet); - //noise shaping to 32-bit floating point - Float32 fpTemp = inputSample; - fpNShape += (inputSample-fpTemp); - inputSample += fpNShape; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; } - fpNShape *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacAU/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.pbxuser index 1ad93f8..49f55d6 100755 --- a/plugins/MacAU/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.pbxuser @@ -51,23 +51,54 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 565748345; - PBXWorkspaceStateSaveDate = 565748345; + PBXPerProjectTemplateStateSaveDate = 569683336; + PBXWorkspaceStateSaveDate = 569683336; }; perUserProjectItems = { + 8B79312721F4AD85006E9731 /* PBXTextBookmark */ = 8B79312721F4AD85006E9731 /* PBXTextBookmark */; + 8B79313821F4AD8C006E9731 /* PBXTextBookmark */ = 8B79313821F4AD8C006E9731 /* PBXTextBookmark */; + 8B79313D21F4ADA2006E9731 /* PBXTextBookmark */ = 8B79313D21F4ADA2006E9731 /* PBXTextBookmark */; 8BBB310821B8995100825986 /* PlistBookmark */ = 8BBB310821B8995100825986 /* PlistBookmark */; - 8BBB311D21B89C1700825986 /* PBXTextBookmark */ = 8BBB311D21B89C1700825986 /* PBXTextBookmark */; - 8BBB319821B8A4C800825986 /* PBXTextBookmark */ = 8BBB319821B8A4C800825986 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B79312721F4AD85006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* TapeDelay.h */; + name = "TapeDelay.h: 150"; + rLen = 1; + rLoc = 5889; + rType = 0; + vrLen = 679; + vrLoc = 5344; + }; + 8B79313821F4AD8C006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* TapeDelay.cpp */; + name = "TapeDelay.cpp: 330"; + rLen = 0; + rLoc = 14179; + rType = 0; + vrLen = 988; + vrLoc = 13279; + }; + 8B79313D21F4ADA2006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* TapeDelay.cpp */; + name = "TapeDelay.cpp: 330"; + rLen = 0; + rLoc = 14179; + rType = 0; + vrLen = 987; + vrLoc = 13279; + }; 8BA05A660720730100365D66 /* TapeDelay.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1055, 4615}}"; - sepNavSelRange = "{13925, 0}"; - sepNavVisRange = "{13802, 523}"; + sepNavIntBoundsRect = "{{0, 0}, {1055, 4641}}"; + sepNavSelRange = "{14179, 0}"; + sepNavVisRange = "{13279, 987}"; sepNavWindowFrame = "{{456, 34}, {1129, 834}}"; }; }; @@ -91,31 +122,11 @@ rLen = 0; rLoc = 9223372036854775808; }; - 8BBB311D21B89C1700825986 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* TapeDelay.cpp */; - name = "TapeDelay.cpp: 323"; - rLen = 0; - rLoc = 13925; - rType = 0; - vrLen = 526; - vrLoc = 13802; - }; - 8BBB319821B8A4C800825986 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* TapeDelay.cpp */; - name = "TapeDelay.cpp: 323"; - rLen = 0; - rLoc = 13925; - rType = 0; - vrLen = 523; - vrLoc = 13802; - }; 8BC6025B073B072D006C4272 /* TapeDelay.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1082, 2054}}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 2054}}"; sepNavSelRange = "{5889, 1}"; - sepNavVisRange = "{4426, 1597}"; + sepNavVisRange = "{5344, 679}"; sepNavWindowFrame = "{{311, 44}, {1129, 834}}"; }; }; diff --git a/plugins/MacAU/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.perspectivev3 index a2673ea..09bd991 100755 --- a/plugins/MacAU/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.perspectivev3 @@ -324,7 +324,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>546 187 841 654 0 0 1440 878 </string> + <string>400 207 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,11 +352,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BBB319821B8A4C800825986</string> + <string>8B79313D21F4ADA2006E9731</string> <key>history</key> <array> <string>8BBB310821B8995100825986</string> - <string>8BBB311D21B89C1700825986</string> + <string>8B79312721F4AD85006E9731</string> + <string>8B79313821F4AD8C006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,23 +371,21 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 173}}</string> + <string>{{0, 0}, {531, 430}}</string> <key>RubberWindowFrame</key> - <string>546 187 841 654 0 0 1440 878 </string> + <string>400 207 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>173pt</string> + <string>430pt</string> </dict> <dict> <key>Proportion</key> - <string>435pt</string> + <string>178pt</string> <key>Tabs</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXProjectModuleGUID</key> @@ -397,9 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 408}}</string> - <key>RubberWindowFrame</key> - <string>546 187 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 151}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -453,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 339}}</string> + <string>{{10, 27}, {531, 151}}</string> + <key>RubberWindowFrame</key> + <string>400 207 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -481,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBB316E21B8A29600825986</string> + <string>8B79313E21F4ADA2006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBB316F21B8A29600825986</string> + <string>8B79313F21F4ADA2006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8BBB317021B8A29600825986</string> + <string>8B79314021F4ADA2006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -658,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>565748936.10847795</real> + <real>569683362.16233301</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -675,11 +674,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BBB319921B8A4C800825986</string> <string>/Users/christopherjohnson/Desktop/MacAU/TapeDelay/TapeDelay.xcodeproj</string> </array> <key>WindowString</key> - <string>546 187 841 654 0 0 1440 878 </string> + <string>400 207 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/TapeDither/TapeDither.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/TapeDither/TapeDither.xcodeproj/christopherjohnson.pbxuser index cd7f8c0..6e62cb5 100755 --- a/plugins/MacAU/TapeDither/TapeDither.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/TapeDither/TapeDither.xcodeproj/christopherjohnson.pbxuser @@ -49,13 +49,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528458444; - PBXWorkspaceStateSaveDate = 528458444; + PBXPerProjectTemplateStateSaveDate = 565558307; + PBXWorkspaceStateSaveDate = 565558307; }; perUserProjectItems = { 8B4FD0461DF97DCE00999740 /* PlistBookmark */ = 8B4FD0461DF97DCE00999740 /* PlistBookmark */; - 8B9D67AE1F7C9067007AB60F /* PBXTextBookmark */ = 8B9D67AE1F7C9067007AB60F /* PBXTextBookmark */; - 8B9D76931F7FA2E5007AB60F /* PBXTextBookmark */ = 8B9D76931F7FA2E5007AB60F /* PBXTextBookmark */; + 8B913F63213DBB0300BA6EEC /* PBXTextBookmark */ = 8B913F63213DBB0300BA6EEC /* PBXTextBookmark */; + 8BDA3BE121B5BE7800CC56FA /* PBXTextBookmark */ = 8BDA3BE121B5BE7800CC56FA /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -73,32 +73,22 @@ rLen = 0; rLoc = 9223372036854775808; }; - 8B9D67AE1F7C9067007AB60F /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* TapeDither.cpp */; - name = "TapeDither.cpp: 182"; - rLen = 0; - rLoc = 9240; - rType = 0; - vrLen = 471; - vrLoc = 7491; - }; - 8B9D76931F7FA2E5007AB60F /* PBXTextBookmark */ = { + 8B913F63213DBB0300BA6EEC /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* TapeDither.cpp */; name = "TapeDither.cpp: 208"; rLen = 0; rLoc = 9240; rType = 0; - vrLen = 719; - vrLoc = 7534; + vrLen = 682; + vrLoc = 7571; }; 8BA05A660720730100365D66 /* TapeDither.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {691, 2964}}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 2938}}"; sepNavSelRange = "{9240, 0}"; - sepNavVisRange = "{7534, 719}"; - sepNavWindowFrame = "{{733, 43}, {679, 835}}"; + sepNavVisRange = "{7598, 655}"; + sepNavWindowFrame = "{{742, 43}, {679, 835}}"; }; }; 8BA05A690720730100365D66 /* TapeDitherVersion.h */ = { @@ -112,7 +102,7 @@ 8BC6025B073B072D006C4272 /* TapeDither.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {894, 1742}}"; - sepNavSelRange = "{4852, 0}"; + sepNavSelRange = "{4959, 54}"; sepNavVisRange = "{3476, 1700}"; sepNavWindowFrame = "{{711, 43}, {679, 835}}"; }; @@ -131,6 +121,16 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; + 8BDA3BE121B5BE7800CC56FA /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* TapeDither.cpp */; + name = "TapeDither.cpp: 208"; + rLen = 0; + rLoc = 9240; + rType = 0; + vrLen = 655; + vrLoc = 7598; + }; 8D01CCC60486CAD60068D4B7 /* TapeDither */ = { activeExec = 0; }; diff --git a/plugins/MacAU/TapeDither/TapeDither.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/TapeDither/TapeDither.xcodeproj/christopherjohnson.perspectivev3 index 8282adf..b98406f 100755 --- a/plugins/MacAU/TapeDither/TapeDither.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/TapeDither/TapeDither.xcodeproj/christopherjohnson.perspectivev3 @@ -325,7 +325,7 @@ <real>288</real> </array> <key>RubberWindowFrame</key> - <string>599 182 841 654 0 0 1440 878 </string> + <string>649 171 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -353,11 +353,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D76931F7FA2E5007AB60F</string> + <string>8BDA3BE121B5BE7800CC56FA</string> <key>history</key> <array> <string>8B4FD0461DF97DCE00999740</string> - <string>8B9D67AE1F7C9067007AB60F</string> + <string>8B913F63213DBB0300BA6EEC</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 229}}</string> + <string>{{0, 0}, {531, 202}}</string> <key>RubberWindowFrame</key> - <string>599 182 841 654 0 0 1440 878 </string> + <string>649 171 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>229pt</string> + <string>202pt</string> </dict> <dict> <key>Proportion</key> - <string>379pt</string> + <string>406pt</string> <key>Tabs</key> <array> <dict> @@ -396,9 +396,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 352}}</string> + <string>{{10, 27}, {531, 379}}</string> <key>RubberWindowFrame</key> - <string>599 182 841 654 0 0 1440 878 </string> + <string>649 171 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -480,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D76941F7FA2E5007AB60F</string> + <string>8BDA3BE221B5BE7800CC56FA</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D76951F7FA2E5007AB60F</string> + <string>8BDA3BE321B5BE7800CC56FA</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D76961F7FA2E5007AB60F</string> + <string>8BDA3BE421B5BE7800CC56FA</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -657,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528458469.64023101</real> + <real>565558904.14568102</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -674,11 +674,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D76971F7FA2E5007AB60F</string> + <string>8BDA3BE521B5BE7800CC56FA</string> <string>/Users/christopherjohnson/Desktop/MacAU/TapeDither/TapeDither.xcodeproj</string> </array> <key>WindowString</key> - <string>599 182 841 654 0 0 1440 878 </string> + <string>649 171 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/TapeDust/TapeDust.cpp b/plugins/MacAU/TapeDust/TapeDust.cpp index 1f87d66..c586339 100755 --- a/plugins/MacAU/TapeDust/TapeDust.cpp +++ b/plugins/MacAU/TapeDust/TapeDust.cpp @@ -167,9 +167,8 @@ ComponentResult TapeDust::Initialize() void TapeDust::TapeDustKernel::Reset() { for(int count = 0; count < 11; count++) {b[count] = 0.0; f[count] = 0.0;} - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; + fpFlip = false; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -184,9 +183,6 @@ void TapeDust::TapeDustKernel::Process( const Float32 *inSourceP, UInt32 nSampleFrames = inFramesToProcess; const Float32 *sourceP = inSourceP; Float32 *destP = inDestP; - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSample; Float64 drySample; Float64 rRange = pow(GetParameter( kParam_One ),2)*5.0; @@ -250,20 +246,13 @@ void TapeDust::TapeDustKernel::Process( const Float32 *inSourceP, if (wet < 1.0) { inputSample = (inputSample * wet) + (drySample * dry); } - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/TapeDust/TapeDust.h b/plugins/MacAU/TapeDust/TapeDust.h index 55255f3..6898d7e 100755 --- a/plugins/MacAU/TapeDust/TapeDust.h +++ b/plugins/MacAU/TapeDust/TapeDust.h @@ -130,8 +130,7 @@ public: private: Float64 b[11]; Float64 f[11]; - long double fpNShapeA; - long double fpNShapeB; + long double fpNShape; bool fpFlip; }; }; diff --git a/plugins/MacAU/TapeDust/TapeDust.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/TapeDust/TapeDust.xcodeproj/christopherjohnson.pbxuser index 910a299..7e3a474 100755 --- a/plugins/MacAU/TapeDust/TapeDust.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/TapeDust/TapeDust.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 292, + 499, 20, 48, 43, @@ -49,18 +49,20 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528458482; - PBXWorkspaceStateSaveDate = 528458482; + PBXPerProjectTemplateStateSaveDate = 569683382; + PBXWorkspaceStateSaveDate = 569683382; }; perUserProjectItems = { - 8B9D67BE1F7C9098007AB60F /* PlistBookmark */ = 8B9D67BE1F7C9098007AB60F /* PlistBookmark */; - 8B9D76A21F7FA30E007AB60F /* PlistBookmark */ = 8B9D76A21F7FA30E007AB60F /* PlistBookmark */; + 8B79314C21F4AE33006E9731 /* PlistBookmark */ = 8B79314C21F4AE33006E9731 /* PlistBookmark */; + 8B79315421F4AE7A006E9731 /* PBXTextBookmark */ = 8B79315421F4AE7A006E9731 /* PBXTextBookmark */; + 8B79315521F4AE7A006E9731 /* PBXTextBookmark */ = 8B79315521F4AE7A006E9731 /* PBXTextBookmark */; + 8B79315621F4AE7A006E9731 /* PBXTextBookmark */ = 8B79315621F4AE7A006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B9D67BE1F7C9098007AB60F /* PlistBookmark */ = { + 8B79314C21F4AE33006E9731 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; fallbackIsa = PBXBookmark; @@ -70,25 +72,43 @@ ); name = /Users/christopherjohnson/Desktop/MacAU/TapeDust/Info.plist; rLen = 0; - rLoc = 9223372036854775808; + rLoc = 9223372036854775807; }; - 8B9D76A21F7FA30E007AB60F /* PlistBookmark */ = { - isa = PlistBookmark; - fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; - fallbackIsa = PBXBookmark; - isK = 0; - kPath = ( - CFBundleName, - ); - name = /Users/christopherjohnson/Desktop/MacAU/TapeDust/Info.plist; + 8B79315421F4AE7A006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* TapeDust.h */; + name = "TapeDust.h: 134"; rLen = 0; - rLoc = 9223372036854775807; + rLoc = 5248; + rType = 0; + vrLen = 1104; + vrLoc = 4248; + }; + 8B79315521F4AE7A006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* TapeDust.cpp */; + name = "TapeDust.cpp: 171"; + rLen = 0; + rLoc = 7722; + rType = 0; + vrLen = 1529; + vrLoc = 7003; + }; + 8B79315621F4AE7A006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* TapeDust.cpp */; + name = "TapeDust.cpp: 249"; + rLen = 0; + rLoc = 10792; + rType = 0; + vrLen = 959; + vrLoc = 10175; }; 8BA05A660720730100365D66 /* TapeDust.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {958, 3679}}"; - sepNavSelRange = "{9254, 0}"; - sepNavVisRange = "{8609, 2167}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 3666}}"; + sepNavSelRange = "{10792, 0}"; + sepNavVisRange = "{10175, 959}"; sepNavWindowFrame = "{{415, 39}, {1005, 839}}"; }; }; @@ -102,9 +122,9 @@ }; 8BC6025B073B072D006C4272 /* TapeDust.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {958, 1846}}"; - sepNavSelRange = "{5174, 36}"; - sepNavVisRange = "{3746, 1638}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 2054}}"; + sepNavSelRange = "{5248, 0}"; + sepNavVisRange = "{4248, 1110}"; sepNavWindowFrame = "{{4, 39}, {1005, 839}}"; }; }; diff --git a/plugins/MacAU/TapeDust/TapeDust.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/TapeDust/TapeDust.xcodeproj/christopherjohnson.perspectivev3 index f7b0fff..c956cc8 100755 --- a/plugins/MacAU/TapeDust/TapeDust.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/TapeDust/TapeDust.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>841</integer> - <integer>841</integer> + <integer>927</integer> + <integer>927</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -282,7 +280,7 @@ <dict> <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> <array> - <real>288</real> + <real>167</real> </array> <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> <array> @@ -308,7 +306,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {288, 595}}</string> + <string>{{0, 0}, {167, 689}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -318,30 +316,32 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {305, 613}}</string> + <string>{{0, 0}, {184, 707}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> - <real>288</real> + <real>167</real> </array> <key>RubberWindowFrame</key> - <string>432 155 841 654 0 0 1440 878 </string> + <string>372 100 927 748 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> <key>Proportion</key> - <string>305pt</string> + <string>184pt</string> </dict> <dict> <key>Dock</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXProjectModuleGUID</key> <string>8BD7274A1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>Info.plist</string> + <string>TapeDust.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -349,14 +349,16 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274B1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>Info.plist</string> + <string>TapeDust.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D76A21F7FA30E007AB60F</string> + <string>8B79315621F4AE7A006E9731</string> <key>history</key> <array> - <string>8B9D67BE1F7C9098007AB60F</string> + <string>8B79314C21F4AE33006E9731</string> + <string>8B79315421F4AE7A006E9731</string> + <string>8B79315521F4AE7A006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +372,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 229}}</string> + <string>{{0, 0}, {738, 552}}</string> <key>RubberWindowFrame</key> - <string>432 155 841 654 0 0 1440 878 </string> + <string>372 100 927 748 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>229pt</string> + <string>552pt</string> </dict> <dict> <key>Proportion</key> - <string>379pt</string> + <string>150pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +397,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 352}}</string> - <key>RubberWindowFrame</key> - <string>432 155 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {738, 123}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +451,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 315}}</string> + <string>{{10, 27}, {738, 123}}</string> + <key>RubberWindowFrame</key> + <string>372 100 927 748 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -460,7 +462,7 @@ </dict> </array> <key>Proportion</key> - <string>531pt</string> + <string>738pt</string> </dict> </array> <key>Name</key> @@ -479,11 +481,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D76A31F7FA30E007AB60F</string> + <string>8B79315721F4AE7A006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D76A41F7FA30E007AB60F</string> + <string>8B79315821F4AE7A006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D76A51F7FA30E007AB60F</string> + <string>8B79315921F4AE7A006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -656,7 +658,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528458510.42729199</real> + <real>569683578.38407302</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -673,11 +675,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D76A61F7FA30E007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/TapeDust/TapeDust.xcodeproj</string> </array> <key>WindowString</key> - <string>432 155 841 654 0 0 1440 878 </string> + <string>372 100 927 748 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/TapeFat/TapeFat.cpp b/plugins/MacAU/TapeFat/TapeFat.cpp index d95de3a..42e9d60 100755 --- a/plugins/MacAU/TapeFat/TapeFat.cpp +++ b/plugins/MacAU/TapeFat/TapeFat.cpp @@ -263,23 +263,15 @@ void TapeFat::TapeFatKernel::Process( const Float32 *inSourceP, gcount--; - //noise shaping to 32-bit floating point - Float32 fpTemp = inputSample; - fpNShape += (inputSample-fpTemp); - inputSample += fpNShape; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; } - fpNShape *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacAU/TapeFat/TapeFat.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/TapeFat/TapeFat.xcodeproj/christopherjohnson.pbxuser index b5c4293..640ec56 100755 --- a/plugins/MacAU/TapeFat/TapeFat.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/TapeFat/TapeFat.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 292, + 398, 20, 48, 43, @@ -49,24 +49,54 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 566516790; - PBXWorkspaceStateSaveDate = 566516790; + PBXPerProjectTemplateStateSaveDate = 569684489; + PBXWorkspaceStateSaveDate = 569684489; }; perUserProjectItems = { + 8B79316521F4B25B006E9731 /* PBXTextBookmark */ = 8B79316521F4B25B006E9731 /* PBXTextBookmark */; + 8B79316721F4B25B006E9731 /* PBXTextBookmark */ = 8B79316721F4B25B006E9731 /* PBXTextBookmark */; + 8B79316C21F4B278006E9731 /* PBXTextBookmark */ = 8B79316C21F4B278006E9731 /* PBXTextBookmark */; 8BBB319521B8A4BD00825986 /* PlistBookmark */ = 8BBB319521B8A4BD00825986 /* PlistBookmark */; - 8BBB336921C45BB400825986 /* PBXTextBookmark */ = 8BBB336921C45BB400825986 /* PBXTextBookmark */; - 8BBB339021C45C6E00825986 /* PBXTextBookmark */ = 8BBB339021C45C6E00825986 /* PBXTextBookmark */; - 8BBB339121C45C6E00825986 /* PBXTextBookmark */ = 8BBB339121C45C6E00825986 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B79316521F4B25B006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* TapeFat.h */; + name = "TapeFat.h: 133"; + rLen = 0; + rLoc = 5283; + rType = 0; + vrLen = 301; + vrLoc = 5036; + }; + 8B79316721F4B25B006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* TapeFat.cpp */; + name = "TapeFat.cpp: 276"; + rLen = 0; + rLoc = 11440; + rType = 0; + vrLen = 1045; + vrLoc = 10398; + }; + 8B79316C21F4B278006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* TapeFat.cpp */; + name = "TapeFat.cpp: 276"; + rLen = 0; + rLoc = 11440; + rType = 0; + vrLen = 1082; + vrLoc = 10361; + }; 8BA05A660720730100365D66 /* TapeFat.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {817, 3900}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{3, 648}"; + sepNavIntBoundsRect = "{{0, 0}, {656, 3835}}"; + sepNavSelRange = "{11440, 0}"; + sepNavVisRange = "{10361, 1082}"; sepNavWindowFrame = "{{777, -19}, {1129, 834}}"; }; }; @@ -90,41 +120,11 @@ rLen = 0; rLoc = 9223372036854775808; }; - 8BBB336921C45BB400825986 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* TapeFat.cpp */; - name = "TapeFat.cpp: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 651; - vrLoc = 0; - }; - 8BBB339021C45C6E00825986 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* TapeFat.h */; - name = "TapeFat.h: 133"; - rLen = 0; - rLoc = 5283; - rType = 0; - vrLen = 302; - vrLoc = 5036; - }; - 8BBB339121C45C6E00825986 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* TapeFat.cpp */; - name = "TapeFat.cpp: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 648; - vrLoc = 3; - }; 8BC6025B073B072D006C4272 /* TapeFat.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {894, 2015}}"; sepNavSelRange = "{5283, 0}"; - sepNavVisRange = "{5036, 302}"; + sepNavVisRange = "{5036, 301}"; sepNavWindowFrame = "{{806, -59}, {1129, 834}}"; }; }; diff --git a/plugins/MacAU/TapeFat/TapeFat.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/TapeFat/TapeFat.xcodeproj/christopherjohnson.perspectivev3 index dfd80e8..343eaae 100755 --- a/plugins/MacAU/TapeFat/TapeFat.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/TapeFat/TapeFat.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -282,7 +280,7 @@ <dict> <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> <array> - <real>288</real> + <real>182</real> </array> <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> <array> @@ -309,7 +307,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {288, 595}}</string> + <string>{{0, 0}, {182, 595}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -319,19 +317,19 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {305, 613}}</string> + <string>{{0, 0}, {199, 613}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> - <real>288</real> + <real>182</real> </array> <key>RubberWindowFrame</key> - <string>599 89 841 654 0 0 1440 878 </string> + <string>440 183 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> <key>Proportion</key> - <string>305pt</string> + <string>199pt</string> </dict> <dict> <key>Dock</key> @@ -354,12 +352,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BBB339121C45C6E00825986</string> + <string>8B79316C21F4B278006E9731</string> <key>history</key> <array> <string>8BBB319521B8A4BD00825986</string> - <string>8BBB339021C45C6E00825986</string> - <string>8BBB336921C45BB400825986</string> + <string>8B79316521F4B25B006E9731</string> + <string>8B79316721F4B25B006E9731</string> </array> </dict> <key>SplitCount</key> @@ -373,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 216}}</string> + <string>{{0, 0}, {637, 512}}</string> <key>RubberWindowFrame</key> - <string>599 89 841 654 0 0 1440 878 </string> + <string>440 183 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>216pt</string> + <string>512pt</string> </dict> <dict> <key>Proportion</key> - <string>392pt</string> + <string>96pt</string> <key>Tabs</key> <array> <dict> @@ -398,9 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 365}}</string> - <key>RubberWindowFrame</key> - <string>599 89 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {637, 69}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -454,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 339}}</string> + <string>{{10, 27}, {637, 69}}</string> + <key>RubberWindowFrame</key> + <string>440 183 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -463,7 +461,7 @@ </dict> </array> <key>Proportion</key> - <string>531pt</string> + <string>637pt</string> </dict> </array> <key>Name</key> @@ -482,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBB339221C45C6E00825986</string> + <string>8B79316D21F4B278006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBB339321C45C6E00825986</string> + <string>8B79316E21F4B278006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8BBB339421C45C6E00825986</string> + <string>8B79316F21F4B278006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -659,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>566516846.91763997</real> + <real>569684600.92815804</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -676,11 +674,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BBB339521C45C6E00825986</string> <string>/Users/christopherjohnson/Desktop/MacAU/TapeFat/TapeFat.xcodeproj</string> </array> <key>WindowString</key> - <string>599 89 841 654 0 0 1440 878 </string> + <string>440 183 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Thunder/Thunder.cpp b/plugins/MacAU/Thunder/Thunder.cpp index 64bdf0c..f9dc657 100755 --- a/plugins/MacAU/Thunder/Thunder.cpp +++ b/plugins/MacAU/Thunder/Thunder.cpp @@ -179,10 +179,8 @@ ComponentResult Thunder::Initialize() //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ComponentResult Thunder::Reset(AudioUnitScope inScope, AudioUnitElement inElement) { - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; muSpeedA = 10000; muSpeedB = 10000; muCoefficientA = 1; @@ -240,9 +238,6 @@ OSStatus Thunder::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags Float64 resultML; Float64 resultMR; - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -423,28 +418,16 @@ OSStatus Thunder::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags inputSampleL *= outputGain; inputSampleR *= outputGain; } - - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } flip = !flip; - //end noise shaping on 32 bit output + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((Float32)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *outputL = inputSampleL; *outputR = inputSampleR; diff --git a/plugins/MacAU/Thunder/Thunder.h b/plugins/MacAU/Thunder/Thunder.h index 4c01ac4..233c3db 100755 --- a/plugins/MacAU/Thunder/Thunder.h +++ b/plugins/MacAU/Thunder/Thunder.h @@ -129,10 +129,8 @@ private: Float64 iirSampleAM; Float64 iirSampleBM; Float64 iirSampleCM; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; + long double fpNShapeL; + long double fpNShapeR; bool flip; }; diff --git a/plugins/MacAU/Thunder/Thunder.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Thunder/Thunder.xcodeproj/christopherjohnson.pbxuser index 908569c..32120c0 100755 --- a/plugins/MacAU/Thunder/Thunder.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Thunder/Thunder.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 292, + 383, 20, 48, 43, @@ -49,38 +49,59 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528458521; - PBXWorkspaceStateSaveDate = 528458521; + PBXPerProjectTemplateStateSaveDate = 569684635; + PBXWorkspaceStateSaveDate = 569684635; }; perUserProjectItems = { - 8B9D67CF1F7C90C4007AB60F /* PBXTextBookmark */ = 8B9D67CF1F7C90C4007AB60F /* PBXTextBookmark */; - 8B9D76B11F7FA32E007AB60F /* PBXTextBookmark */ = 8B9D76B11F7FA32E007AB60F /* PBXTextBookmark */; + 8B79317B21F4B33A006E9731 /* PBXTextBookmark */ = 8B79317B21F4B33A006E9731 /* PBXTextBookmark */; + 8B79317C21F4B33A006E9731 /* PBXTextBookmark */ = 8B79317C21F4B33A006E9731 /* PBXTextBookmark */; + 8B79317E21F4B33A006E9731 /* PBXTextBookmark */ = 8B79317E21F4B33A006E9731 /* PBXTextBookmark */; + 8B79318321F4B354006E9731 /* PBXTextBookmark */ = 8B79318321F4B354006E9731 /* PBXTextBookmark */; 8B9EC58B1D90BE2400BD1DCA /* PlistBookmark */ = 8B9EC58B1D90BE2400BD1DCA /* PlistBookmark */; - 8BFE4BDA1D92E59A00BBC6AC /* PBXTextBookmark */ = 8BFE4BDA1D92E59A00BBC6AC /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B9D67CF1F7C90C4007AB60F /* PBXTextBookmark */ = { + 8B79317B21F4B33A006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A690720730100365D66 /* ThunderVersion.h */; name = "ThunderVersion.h: 51"; rLen = 0; rLoc = 2757; rType = 0; - vrLen = 344; - vrLoc = 2598; + vrLen = 286; + vrLoc = 2656; }; - 8B9D76B11F7FA32E007AB60F /* PBXTextBookmark */ = { + 8B79317C21F4B33A006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 8BA05A690720730100365D66 /* ThunderVersion.h */; - name = "ThunderVersion.h: 51"; + fRef = 8BC6025B073B072D006C4272 /* Thunder.h */; + name = "Thunder.h: 134"; rLen = 0; - rLoc = 2757; + rLoc = 5285; + rType = 0; + vrLen = 598; + vrLoc = 4806; + }; + 8B79317E21F4B33A006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Thunder.cpp */; + name = "Thunder.cpp: 431"; + rLen = 0; + rLoc = 16556; + rType = 0; + vrLen = 1132; + vrLoc = 15627; + }; + 8B79318321F4B354006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Thunder.cpp */; + name = "Thunder.cpp: 431"; + rLen = 0; + rLoc = 16556; rType = 0; - vrLen = 315; - vrLoc = 2627; + vrLen = 1172; + vrLoc = 15587; }; 8B9EC58B1D90BE2400BD1DCA /* PlistBookmark */ = { isa = PlistBookmark; @@ -96,25 +117,25 @@ }; 8BA05A660720730100365D66 /* Thunder.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 6071}}"; - sepNavSelRange = "{10065, 0}"; - sepNavVisRange = "{9779, 2277}"; + sepNavIntBoundsRect = "{{0, 0}, {754, 6227}}"; + sepNavSelRange = "{16556, 0}"; + sepNavVisRange = "{15587, 1172}"; sepNavWindowFrame = "{{258, 39}, {895, 819}}"; }; }; 8BA05A690720730100365D66 /* ThunderVersion.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {824, 806}}"; + sepNavIntBoundsRect = "{{0, 0}, {824, 832}}"; sepNavSelRange = "{2757, 0}"; - sepNavVisRange = "{2627, 315}"; + sepNavVisRange = "{2656, 286}"; sepNavWindowFrame = "{{15, 54}, {895, 819}}"; }; }; 8BC6025B073B072D006C4272 /* Thunder.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1807}}"; - sepNavSelRange = "{5082, 0}"; - sepNavVisRange = "{3802, 1647}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 2197}}"; + sepNavSelRange = "{5285, 0}"; + sepNavVisRange = "{4806, 598}"; sepNavWindowFrame = "{{7, 42}, {895, 819}}"; }; }; @@ -132,16 +153,6 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8BFE4BDA1D92E59A00BBC6AC /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* Thunder.cpp */; - name = "Thunder.cpp: 227"; - rLen = 0; - rLoc = 9525; - rType = 0; - vrLen = 508; - vrLoc = 12277; - }; 8D01CCC60486CAD60068D4B7 /* Thunder */ = { activeExec = 0; }; diff --git a/plugins/MacAU/Thunder/Thunder.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Thunder/Thunder.xcodeproj/christopherjohnson.perspectivev3 index 25a2588..5586ae7 100755 --- a/plugins/MacAU/Thunder/Thunder.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Thunder/Thunder.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -282,7 +280,7 @@ <dict> <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> <array> - <real>288</real> + <real>197</real> </array> <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> <array> @@ -308,7 +306,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {288, 595}}</string> + <string>{{0, 0}, {197, 595}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -318,19 +316,19 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {305, 613}}</string> + <string>{{0, 0}, {214, 613}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> - <real>288</real> + <real>197</real> </array> <key>RubberWindowFrame</key> - <string>566 213 841 654 0 0 1440 878 </string> + <string>473 199 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> <key>Proportion</key> - <string>305pt</string> + <string>214pt</string> </dict> <dict> <key>Dock</key> @@ -341,7 +339,7 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274A1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>ThunderVersion.h</string> + <string>Thunder.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -349,16 +347,17 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274B1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>ThunderVersion.h</string> + <string>Thunder.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D76B11F7FA32E007AB60F</string> + <string>8B79318321F4B354006E9731</string> <key>history</key> <array> <string>8B9EC58B1D90BE2400BD1DCA</string> - <string>8BFE4BDA1D92E59A00BBC6AC</string> - <string>8B9D67CF1F7C90C4007AB60F</string> + <string>8B79317B21F4B33A006E9731</string> + <string>8B79317C21F4B33A006E9731</string> + <string>8B79317E21F4B33A006E9731</string> </array> </dict> <key>SplitCount</key> @@ -372,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 216}}</string> + <string>{{0, 0}, {622, 493}}</string> <key>RubberWindowFrame</key> - <string>566 213 841 654 0 0 1440 878 </string> + <string>473 199 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>216pt</string> + <string>493pt</string> </dict> <dict> <key>Proportion</key> - <string>392pt</string> + <string>115pt</string> <key>Tabs</key> <array> <dict> @@ -397,9 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 365}}</string> - <key>RubberWindowFrame</key> - <string>566 213 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {622, 88}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -453,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 315}}</string> + <string>{{10, 27}, {622, 88}}</string> + <key>RubberWindowFrame</key> + <string>473 199 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -462,7 +461,7 @@ </dict> </array> <key>Proportion</key> - <string>531pt</string> + <string>622pt</string> </dict> </array> <key>Name</key> @@ -481,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D76B21F7FA32E007AB60F</string> + <string>8B79318421F4B354006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D76B31F7FA32E007AB60F</string> + <string>8B79318521F4B354006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D76B41F7FA32E007AB60F</string> + <string>8B79318621F4B354006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -658,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528458542.19629401</real> + <real>569684820.36503005</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -675,11 +674,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D76B51F7FA32E007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/Thunder/Thunder.xcodeproj</string> </array> <key>WindowString</key> - <string>566 213 841 654 0 0 1440 878 </string> + <string>473 199 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/ToTape5/ToTape5.cpp b/plugins/MacAU/ToTape5/ToTape5.cpp index abe8496..2135e1d 100755 --- a/plugins/MacAU/ToTape5/ToTape5.cpp +++ b/plugins/MacAU/ToTape5/ToTape5.cpp @@ -238,9 +238,7 @@ void ToTape5::ToTape5Kernel::Reset() sweep = 0.0; rateof = 0.5; nextmax = 0.5; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -258,7 +256,8 @@ void ToTape5::ToTape5Kernel::Process( const Float32 *inSourceP, Float64 overallscale = 1.0; overallscale /= 44100.0; overallscale *= GetSampleRate(); - + long double fpOld = 0.618033988749894848204586; //golden ratio! + Float64 inputgain = pow(GetParameter( kParam_One )+1.0,3); Float64 outputgain = GetParameter( kParam_Five ); Float64 wet = GetParameter( kParam_Six ); @@ -295,12 +294,7 @@ void ToTape5::ToTape5Kernel::Process( const Float32 *inSourceP, SInt32 count; Float64 tempSample; Float64 drySample; - - long double inputSample; - Float32 fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; while (nSampleFrames-- > 0) { inputSample = *sourceP; @@ -478,19 +472,11 @@ void ToTape5::ToTape5Kernel::Process( const Float32 *inSourceP, } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/ToTape5/ToTape5.h b/plugins/MacAU/ToTape5/ToTape5.h index 8561873..250d9a5 100755 --- a/plugins/MacAU/ToTape5/ToTape5.h +++ b/plugins/MacAU/ToTape5/ToTape5.h @@ -185,10 +185,7 @@ public: Float64 iirSampleY; Float64 iirSampleZ; int flip; - - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/ToTape5/ToTape5.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/ToTape5/ToTape5.xcodeproj/christopherjohnson.pbxuser index b447041..6427718 100755 --- a/plugins/MacAU/ToTape5/ToTape5.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/ToTape5/ToTape5.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 292, + 419, 20, 48, 43, @@ -49,13 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 553894227; - PBXWorkspaceStateSaveDate = 553894227; + PBXPerProjectTemplateStateSaveDate = 569685129; + PBXWorkspaceStateSaveDate = 569685129; }; perUserProjectItems = { 8B1A32741F16BBA2004DE6C5 /* PlistBookmark */ = 8B1A32741F16BBA2004DE6C5 /* PlistBookmark */; - 8B9D76CF1F7FA38F007AB60F /* PBXTextBookmark */ = 8B9D76CF1F7FA38F007AB60F /* PBXTextBookmark */; - 8BB8B7D82103C66300751000 /* PBXTextBookmark */ = 8BB8B7D82103C66300751000 /* PBXTextBookmark */; + 8B7931A821F4B4FA006E9731 /* PBXTextBookmark */ = 8B7931A821F4B4FA006E9731 /* PBXTextBookmark */; + 8B7931AA21F4B4FA006E9731 /* PBXTextBookmark */ = 8B7931AA21F4B4FA006E9731 /* PBXTextBookmark */; + 8B7931B321F4B54A006E9731 /* PBXTextBookmark */ = 8B7931B321F4B54A006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -73,21 +74,41 @@ rLen = 0; rLoc = 9223372036854775808; }; - 8B9D76CF1F7FA38F007AB60F /* PBXTextBookmark */ = { + 8B7931A821F4B4FA006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* ToTape5.h */; + name = "ToTape5.h: 187"; + rLen = 0; + rLoc = 6560; + rType = 0; + vrLen = 717; + vrLoc = 5977; + }; + 8B7931AA21F4B4FA006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* ToTape5.cpp */; + name = "ToTape5.cpp: 479"; + rLen = 0; + rLoc = 22753; + rType = 0; + vrLen = 3225; + vrLoc = 19204; + }; + 8B7931B321F4B54A006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* ToTape5.cpp */; - name = "ToTape5.cpp: 470"; + name = "ToTape5.cpp: 260"; rLen = 0; - rLoc = 22425; + rLoc = 11019; rType = 0; - vrLen = 472; - vrLoc = 20068; + vrLen = 1511; + vrLoc = 10684; }; 8BA05A660720730100365D66 /* ToTape5.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {873, 6396}}"; - sepNavSelRange = "{22425, 0}"; - sepNavVisRange = "{20304, 236}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 6929}}"; + sepNavSelRange = "{11019, 0}"; + sepNavVisRange = "{10684, 1511}"; sepNavWindowFrame = "{{488, 39}, {952, 839}}"; }; }; @@ -107,21 +128,11 @@ sepNavWindowFrame = "{{15, 39}, {952, 839}}"; }; }; - 8BB8B7D82103C66300751000 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* ToTape5.cpp */; - name = "ToTape5.cpp: 470"; - rLen = 0; - rLoc = 22425; - rType = 0; - vrLen = 236; - vrLoc = 20304; - }; 8BC6025B073B072D006C4272 /* ToTape5.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {905, 2964}}"; - sepNavSelRange = "{6561, 0}"; - sepNavVisRange = "{5662, 1074}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 2964}}"; + sepNavSelRange = "{6560, 0}"; + sepNavVisRange = "{5977, 717}"; sepNavWindowFrame = "{{470, 39}, {952, 839}}"; }; }; diff --git a/plugins/MacAU/ToTape5/ToTape5.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/ToTape5/ToTape5.xcodeproj/christopherjohnson.perspectivev3 index 7293723..7e231dd 100755 --- a/plugins/MacAU/ToTape5/ToTape5.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/ToTape5/ToTape5.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -282,7 +280,7 @@ <dict> <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> <array> - <real>288</real> + <real>161</real> </array> <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> <array> @@ -308,7 +306,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {288, 595}}</string> + <string>{{0, 0}, {161, 595}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -318,24 +316,26 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {305, 613}}</string> + <string>{{0, 0}, {178, 613}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> - <real>288</real> + <real>161</real> </array> <key>RubberWindowFrame</key> - <string>581 201 841 654 0 0 1440 878 </string> + <string>490 203 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> <key>Proportion</key> - <string>305pt</string> + <string>178pt</string> </dict> <dict> <key>Dock</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXProjectModuleGUID</key> @@ -353,11 +353,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BB8B7D82103C66300751000</string> + <string>8B7931B321F4B54A006E9731</string> <key>history</key> <array> <string>8B1A32741F16BBA2004DE6C5</string> - <string>8B9D76CF1F7FA38F007AB60F</string> + <string>8B7931A821F4B4FA006E9731</string> + <string>8B7931AA21F4B4FA006E9731</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +372,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 56}}</string> + <string>{{0, 0}, {658, 481}}</string> <key>RubberWindowFrame</key> - <string>581 201 841 654 0 0 1440 878 </string> + <string>490 203 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>56pt</string> + <string>481pt</string> </dict> <dict> <key>Proportion</key> - <string>552pt</string> + <string>127pt</string> <key>Tabs</key> <array> <dict> @@ -396,9 +397,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 525}}</string> - <key>RubberWindowFrame</key> - <string>581 201 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {658, 100}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -452,7 +451,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 327}}</string> + <string>{{10, 27}, {658, 100}}</string> + <key>RubberWindowFrame</key> + <string>490 203 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -461,7 +462,7 @@ </dict> </array> <key>Proportion</key> - <string>531pt</string> + <string>658pt</string> </dict> </array> <key>Name</key> @@ -480,11 +481,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BB8B7D92103C66300751000</string> + <string>8B7931B421F4B54A006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BB8B7DA2103C66300751000</string> + <string>8B7931B521F4B54A006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8BB8B7DB2103C66300751000</string> + <string>8B7931B621F4B54A006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -657,7 +658,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>553895523.636742</real> + <real>569685322.27313697</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -674,11 +675,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BB8B7DC2103C66300751000</string> <string>/Users/christopherjohnson/Desktop/MacAU/ToTape5/ToTape5.xcodeproj</string> </array> <key>WindowString</key> - <string>581 201 841 654 0 0 1440 878 </string> + <string>490 203 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/ToVinyl4/ToVinyl4.cpp b/plugins/MacAU/ToVinyl4/ToVinyl4.cpp index 0f7f248..3f0d6e4 100755 --- a/plugins/MacAU/ToVinyl4/ToVinyl4.cpp +++ b/plugins/MacAU/ToVinyl4/ToVinyl4.cpp @@ -270,11 +270,8 @@ ComponentResult ToVinyl4::Reset(AudioUnitScope inScope, AudioUnitElement inElem s1R = s2R = s3R = 0.0; o1R = o2R = o3R = 0.0; m1R = m2R = desR = 0.0; - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; return noErr; @@ -295,11 +292,7 @@ OSStatus ToVinyl4::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlag UInt32 nSampleFrames = inFramesToProcess; Float64 overallscale = 1.0; overallscale /= 44100.0; - overallscale *= GetSampleRate(); - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; - + overallscale *= GetSampleRate(); Float64 fusswithscale = 50000; //corrected Float64 cutofffreq = GetParameter( kParam_One ); Float64 resonance = 0.992; @@ -741,25 +734,14 @@ OSStatus ToVinyl4::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlag inputSampleR = accumulatorSample; //we just re-use accumulatorSample to do this little shuffle - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((Float32)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *outputL = inputSampleL; *outputR = inputSampleR; diff --git a/plugins/MacAU/ToVinyl4/ToVinyl4.h b/plugins/MacAU/ToVinyl4/ToVinyl4.h index 31495f3..7e613b7 100755 --- a/plugins/MacAU/ToVinyl4/ToVinyl4.h +++ b/plugins/MacAU/ToVinyl4/ToVinyl4.h @@ -209,13 +209,8 @@ private: Float64 aSidePrev; Float64 bMidPrev; Float64 bSidePrev; - - Float64 fpNShapeAL; - Float64 fpNShapeAR; - Float64 fpNShapeBL; - Float64 fpNShapeBR; - bool fpFlip; - + Float64 fpNShapeR; + Float64 fpNShapeL; }; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/plugins/MacAU/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.pbxuser index a31ab0c..1fee72e 100755 --- a/plugins/MacAU/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 364, + 410, 20, 48, 43, @@ -49,42 +49,53 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 541893053; - PBXWorkspaceStateSaveDate = 541893053; + PBXPerProjectTemplateStateSaveDate = 569685344; + PBXWorkspaceStateSaveDate = 569685344; }; perUserProjectItems = { - 8B181B5D204CA28100516BEE /* PBXTextBookmark */ = 8B181B5D204CA28100516BEE /* PBXTextBookmark */; - 8B181B5E204CA28100516BEE /* PBXTextBookmark */ = 8B181B5E204CA28100516BEE /* PBXTextBookmark */; + 8B7931C221F4B60F006E9731 /* PBXTextBookmark */ = 8B7931C221F4B60F006E9731 /* PBXTextBookmark */; + 8B7931C421F4B60F006E9731 /* PBXTextBookmark */ = 8B7931C421F4B60F006E9731 /* PBXTextBookmark */; + 8B7931C921F4B651006E9731 /* PBXTextBookmark */ = 8B7931C921F4B651006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B181B5D204CA28100516BEE /* PBXTextBookmark */ = { + 8B7931C221F4B60F006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* ToVinyl4.h */; + name = "ToVinyl4.h: 211"; + rLen = 0; + rLoc = 6757; + rType = 0; + vrLen = 390; + vrLoc = 6513; + }; + 8B7931C421F4B60F006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* ToVinyl4.cpp */; - name = "ToVinyl4.cpp: 428"; + name = "ToVinyl4.cpp: 745"; rLen = 0; - rLoc = 16809; + rLoc = 32669; rType = 0; - vrLen = 91; - vrLoc = 43; + vrLen = 985; + vrLoc = 31849; }; - 8B181B5E204CA28100516BEE /* PBXTextBookmark */ = { + 8B7931C921F4B651006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* ToVinyl4.cpp */; - name = "ToVinyl4.cpp: 428"; + name = "ToVinyl4.cpp: 745"; rLen = 0; - rLoc = 16809; + rLoc = 32669; rType = 0; - vrLen = 91; - vrLoc = 43; + vrLen = 1451; + vrLoc = 19373; }; 8BA05A660720730100365D66 /* ToVinyl4.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {803, 10166}}"; - sepNavSelRange = "{16809, 0}"; - sepNavVisRange = "{43, 91}"; + sepNavIntBoundsRect = "{{0, 0}, {782, 9386}}"; + sepNavSelRange = "{32669, 0}"; + sepNavVisRange = "{19373, 1451}"; sepNavWindowFrame = "{{627, 62}, {981, 816}}"; }; }; @@ -106,9 +117,9 @@ }; 8BC6025B073B072D006C4272 /* ToVinyl4.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {934, 2899}}"; - sepNavSelRange = "{5133, 22}"; - sepNavVisRange = "{5920, 1044}"; + sepNavIntBoundsRect = "{{0, 0}, {656, 3250}}"; + sepNavSelRange = "{6757, 0}"; + sepNavVisRange = "{6513, 390}"; sepNavWindowFrame = "{{459, 62}, {981, 816}}"; }; }; diff --git a/plugins/MacAU/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.perspectivev3 index 64c9c61..2bfe30e 100755 --- a/plugins/MacAU/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>856</integer> + <integer>856</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -308,7 +306,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {185, 428}}</string> + <string>{{0, 0}, {185, 635}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -318,14 +316,14 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {202, 446}}</string> + <string>{{0, 0}, {202, 653}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> <real>185</real> </array> <key>RubberWindowFrame</key> - <string>608 328 810 487 0 0 1440 878 </string> + <string>373 142 856 694 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -353,10 +351,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B181B5E204CA28100516BEE</string> + <string>8B7931C921F4B651006E9731</string> <key>history</key> <array> - <string>8B181B5D204CA28100516BEE</string> + <string>8B7931C221F4B60F006E9731</string> + <string>8B7931C421F4B60F006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 86}}</string> + <string>{{0, 0}, {649, 490}}</string> <key>RubberWindowFrame</key> - <string>608 328 810 487 0 0 1440 878 </string> + <string>373 142 856 694 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>86pt</string> + <string>490pt</string> </dict> <dict> <key>Proportion</key> - <string>355pt</string> + <string>158pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 328}}</string> - <key>RubberWindowFrame</key> - <string>608 328 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {649, 131}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 345}}</string> + <string>{{10, 27}, {649, 131}}</string> + <key>RubberWindowFrame</key> + <string>373 142 856 694 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -460,7 +459,7 @@ </dict> </array> <key>Proportion</key> - <string>603pt</string> + <string>649pt</string> </dict> </array> <key>Name</key> @@ -479,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B181B5F204CA28100516BEE</string> + <string>8B7931CA21F4B651006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B181B60204CA28100516BEE</string> + <string>8B7931CB21F4B651006E9731</string> <string>8B277E7C1FDB48610038EA07</string> - <string>8B181B61204CA28100516BEE</string> + <string>8B7931CC21F4B651006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>541893249.61319196</real> + <real>569685585.11167395</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,11 +652,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B181B62204CA28100516BEE</string> <string>/Users/christopherjohnson/Desktop/MacAU/ToVinyl4/ToVinyl4.xcodeproj</string> </array> <key>WindowString</key> - <string>608 328 810 487 0 0 1440 878 </string> + <string>373 142 856 694 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/ToneSlant/ToneSlant.cpp b/plugins/MacAU/ToneSlant/ToneSlant.cpp index 9b78bea..55f7435 100755 --- a/plugins/MacAU/ToneSlant/ToneSlant.cpp +++ b/plugins/MacAU/ToneSlant/ToneSlant.cpp @@ -168,9 +168,7 @@ ComponentResult ToneSlant::Initialize() void ToneSlant::ToneSlantKernel::Reset() { for(int count = 0; count < 102; count++) {b[count] = 0.0; f[count] = 0.0;} - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -192,9 +190,6 @@ void ToneSlant::ToneSlantKernel::Process( const Float32 *inSourceP, Float64 overallscale = GetParameter( kParam_One ); if (overallscale < 1.0) overallscale = 1.0; Float64 applySlant = GetParameter( kParam_Two ); - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; f[0] = 1.0 / overallscale; //count to f(gain) which will be 0. f(0) is x1 @@ -236,7 +231,6 @@ void ToneSlant::ToneSlantKernel::Process( const Float32 *inSourceP, //the silence will return to being digital black again. } - b[0] = accumulatorSample = drySample = inputSample; accumulatorSample *= f[0]; @@ -248,19 +242,11 @@ void ToneSlant::ToneSlantKernel::Process( const Float32 *inSourceP, inputSample += (correctionSample * applySlant); //our one math operation on the input data coming in - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/ToneSlant/ToneSlant.h b/plugins/MacAU/ToneSlant/ToneSlant.h index f07890b..8f94128 100755 --- a/plugins/MacAU/ToneSlant/ToneSlant.h +++ b/plugins/MacAU/ToneSlant/ToneSlant.h @@ -131,9 +131,7 @@ public: private: Float64 b[102]; Float64 f[102]; - long double fpNShapeA; - long double fpNShapeB; - bool fpFlip; + long double fpNShape; }; }; diff --git a/plugins/MacAU/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.pbxuser index bd0d093..e300ab9 100755 --- a/plugins/MacAU/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 292, + 388, 20, 48, 43, @@ -49,15 +49,15 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528458576; - PBXWorkspaceStateSaveDate = 528458576; + PBXPerProjectTemplateStateSaveDate = 569684848; + PBXWorkspaceStateSaveDate = 569684848; }; perUserProjectItems = { 8B22B0A31DB17F9F0075D7AA /* PBXTextBookmark */ = 8B22B0A31DB17F9F0075D7AA /* PBXTextBookmark */; - 8B42FB2B1DB15DB60057B6AB /* PBXTextBookmark */ = 8B42FB2B1DB15DB60057B6AB /* PBXTextBookmark */; 8B51D7811DAF1671009F3CF8 /* PlistBookmark */ = 8B51D7811DAF1671009F3CF8 /* PlistBookmark */; - 8B9D67DF1F7C911F007AB60F /* PBXTextBookmark */ = 8B9D67DF1F7C911F007AB60F /* PBXTextBookmark */; - 8B9D76C01F7FA369007AB60F /* PBXTextBookmark */ = 8B9D76C01F7FA369007AB60F /* PBXTextBookmark */; + 8B79319221F4B409006E9731 /* PBXTextBookmark */ = 8B79319221F4B409006E9731 /* PBXTextBookmark */; + 8B79319421F4B409006E9731 /* PBXTextBookmark */ = 8B79319421F4B409006E9731 /* PBXTextBookmark */; + 8B79319921F4B43F006E9731 /* PBXTextBookmark */ = 8B79319921F4B43F006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { @@ -73,16 +73,6 @@ vrLen = 356; vrLoc = 2601; }; - 8B42FB2B1DB15DB60057B6AB /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* ToneSlant.h */; - name = "ToneSlant.h: 57"; - rLen = 0; - rLoc = 2865; - rType = 0; - vrLen = 410; - vrLoc = 2675; - }; 8B51D7811DAF1671009F3CF8 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; @@ -95,31 +85,41 @@ rLen = 0; rLoc = 9223372036854775808; }; - 8B9D67DF1F7C911F007AB60F /* PBXTextBookmark */ = { + 8B79319221F4B409006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* ToneSlant.h */; + name = "ToneSlant.h: 134"; + rLen = 0; + rLoc = 5306; + rType = 0; + vrLen = 794; + vrLoc = 4622; + }; + 8B79319421F4B409006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* ToneSlant.cpp */; - name = "ToneSlant.cpp: 195"; + name = "ToneSlant.cpp: 250"; rLen = 0; - rLoc = 8729; + rLoc = 11254; rType = 0; - vrLen = 457; - vrLoc = 8458; + vrLen = 1286; + vrLoc = 10056; }; - 8B9D76C01F7FA369007AB60F /* PBXTextBookmark */ = { + 8B79319921F4B43F006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* ToneSlant.cpp */; - name = "ToneSlant.cpp: 195"; + name = "ToneSlant.cpp: 250"; rLen = 0; - rLoc = 8729; + rLoc = 11254; rType = 0; - vrLen = 418; - vrLoc = 8421; + vrLen = 1320; + vrLoc = 10022; }; 8BA05A660720730100365D66 /* ToneSlant.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {656, 3549}}"; - sepNavSelRange = "{8729, 0}"; - sepNavVisRange = "{8421, 418}"; + sepNavIntBoundsRect = "{{0, 0}, {726, 3471}}"; + sepNavSelRange = "{11254, 0}"; + sepNavVisRange = "{10022, 1320}"; sepNavWindowFrame = "{{537, 59}, {895, 819}}"; }; }; @@ -133,9 +133,9 @@ }; 8BC6025B073B072D006C4272 /* ToneSlant.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 1859}}"; - sepNavSelRange = "{5283, 65}"; - sepNavVisRange = "{3870, 1587}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 2145}}"; + sepNavSelRange = "{5306, 0}"; + sepNavVisRange = "{4622, 794}"; sepNavWindowFrame = "{{15, 54}, {895, 819}}"; }; }; diff --git a/plugins/MacAU/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.perspectivev3 index d236663..4b2a46a 100755 --- a/plugins/MacAU/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -282,7 +280,7 @@ <dict> <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> <array> - <real>288</real> + <real>192</real> </array> <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> <array> @@ -308,7 +306,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {288, 595}}</string> + <string>{{0, 0}, {192, 595}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -318,19 +316,19 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {305, 613}}</string> + <string>{{0, 0}, {209, 613}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> - <real>288</real> + <real>192</real> </array> <key>RubberWindowFrame</key> - <string>591 215 841 654 0 0 1440 878 </string> + <string>448 210 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> <key>Proportion</key> - <string>305pt</string> + <string>209pt</string> </dict> <dict> <key>Dock</key> @@ -353,13 +351,13 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D76C01F7FA369007AB60F</string> + <string>8B79319921F4B43F006E9731</string> <key>history</key> <array> <string>8B51D7811DAF1671009F3CF8</string> - <string>8B42FB2B1DB15DB60057B6AB</string> <string>8B22B0A31DB17F9F0075D7AA</string> - <string>8B9D67DF1F7C911F007AB60F</string> + <string>8B79319221F4B409006E9731</string> + <string>8B79319421F4B409006E9731</string> </array> </dict> <key>SplitCount</key> @@ -373,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 188}}</string> + <string>{{0, 0}, {627, 466}}</string> <key>RubberWindowFrame</key> - <string>591 215 841 654 0 0 1440 878 </string> + <string>448 210 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>188pt</string> + <string>466pt</string> </dict> <dict> <key>Proportion</key> - <string>420pt</string> + <string>142pt</string> <key>Tabs</key> <array> <dict> @@ -398,9 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 393}}</string> - <key>RubberWindowFrame</key> - <string>591 215 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {627, 115}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -454,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 315}}</string> + <string>{{10, 27}, {627, 115}}</string> + <key>RubberWindowFrame</key> + <string>448 210 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -463,7 +461,7 @@ </dict> </array> <key>Proportion</key> - <string>531pt</string> + <string>627pt</string> </dict> </array> <key>Name</key> @@ -482,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D76C11F7FA369007AB60F</string> + <string>8B79319A21F4B43F006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D76C21F7FA369007AB60F</string> + <string>8B79319B21F4B43F006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D76C31F7FA369007AB60F</string> + <string>8B79319C21F4B43F006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -659,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528458601.15789098</real> + <real>569685055.02673697</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -676,11 +674,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D76C41F7FA369007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/ToneSlant/ToneSlant.xcodeproj</string> </array> <key>WindowString</key> - <string>591 215 841 654 0 0 1440 878 </string> + <string>448 210 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/TransDesk/TransDesk.cpp b/plugins/MacAU/TransDesk/TransDesk.cpp index 0aa57f4..f508b67 100755 --- a/plugins/MacAU/TransDesk/TransDesk.cpp +++ b/plugins/MacAU/TransDesk/TransDesk.cpp @@ -157,9 +157,7 @@ void TransDesk::TransDeskKernel::Reset() lastSample = 0.0; lastOutSample = 0.0; lastSlew = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -202,9 +200,6 @@ void TransDesk::TransDeskKernel::Process( const Float32 *inSourceP, Float64 combSample; long double inputSample; long double drySample; - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; while (nSampleFrames-- > 0) { inputSample = *sourceP; @@ -297,21 +292,11 @@ void TransDesk::TransDeskKernel::Process( const Float32 *inSourceP, inputSample /= gain; //end of Desk section - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output - + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; diff --git a/plugins/MacAU/TransDesk/TransDesk.h b/plugins/MacAU/TransDesk/TransDesk.h index f73f550..7479936 100755 --- a/plugins/MacAU/TransDesk/TransDesk.h +++ b/plugins/MacAU/TransDesk/TransDesk.h @@ -123,9 +123,7 @@ public: long double lastSample; long double lastOutSample; Float64 lastSlew; - Float64 fpNShapeA; - Float64 fpNShapeB; - bool fpFlip; + Float64 fpNShape; }; }; diff --git a/plugins/MacAU/TransDesk/TransDesk.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/TransDesk/TransDesk.xcodeproj/christopherjohnson.pbxuser index 0688c58..3879aa7 100755 --- a/plugins/MacAU/TransDesk/TransDesk.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/TransDesk/TransDesk.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 364, + 455, 20, 48, 43, @@ -49,53 +49,53 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528458726; - PBXWorkspaceStateSaveDate = 528458726; + PBXPerProjectTemplateStateSaveDate = 569685635; + PBXWorkspaceStateSaveDate = 569685635; }; perUserProjectItems = { - 8B3ED5DC1DDE6589004F9D64 /* PBXTextBookmark */ = 8B3ED5DC1DDE6589004F9D64 /* PBXTextBookmark */; - 8B9D680F1F7C919B007AB60F /* PBXTextBookmark */ = 8B9D680F1F7C919B007AB60F /* PBXTextBookmark */; - 8B9D76EC1F7FA409007AB60F /* PBXTextBookmark */ = 8B9D76EC1F7FA409007AB60F /* PBXTextBookmark */; + 8B7931D821F4B744006E9731 /* PBXTextBookmark */ = 8B7931D821F4B744006E9731 /* PBXTextBookmark */; + 8B7931DA21F4B744006E9731 /* PBXTextBookmark */ = 8B7931DA21F4B744006E9731 /* PBXTextBookmark */; + 8B7931DF21F4B769006E9731 /* PBXTextBookmark */ = 8B7931DF21F4B769006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B3ED5DC1DDE6589004F9D64 /* PBXTextBookmark */ = { + 8B7931D821F4B744006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* TransDesk.h */; name = "TransDesk.h: 126"; - rLen = 57; - rLoc = 4907; + rLen = 0; + rLoc = 4926; rType = 0; - vrLen = 113; - vrLoc = 4858; + vrLen = 406; + vrLoc = 4630; }; - 8B9D680F1F7C919B007AB60F /* PBXTextBookmark */ = { + 8B7931DA21F4B744006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* TransDesk.cpp */; - name = "TransDesk.cpp: 1"; + name = "TransDesk.cpp: 297"; rLen = 0; - rLoc = 0; + rLoc = 11884; rType = 0; - vrLen = 199; - vrLoc = 11010; + vrLen = 1440; + vrLoc = 9447; }; - 8B9D76EC1F7FA409007AB60F /* PBXTextBookmark */ = { + 8B7931DF21F4B769006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* TransDesk.cpp */; - name = "TransDesk.cpp: 1"; + name = "TransDesk.cpp: 203"; rLen = 0; - rLoc = 0; + rLoc = 8371; rType = 0; - vrLen = 147; - vrLoc = 11028; + vrLen = 1325; + vrLoc = 7918; }; 8BA05A660720730100365D66 /* TransDesk.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {558, 4264}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{11028, 147}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 4134}}"; + sepNavSelRange = "{8371, 0}"; + sepNavVisRange = "{7918, 1325}"; sepNavWindowFrame = "{{506, 58}, {932, 815}}"; }; }; @@ -117,9 +117,9 @@ }; 8BC6025B073B072D006C4272 /* TransDesk.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {885, 1755}}"; - sepNavSelRange = "{4906, 0}"; - sepNavVisRange = "{3678, 1395}"; + sepNavIntBoundsRect = "{{0, 0}, {698, 1911}}"; + sepNavSelRange = "{4926, 0}"; + sepNavVisRange = "{4630, 406}"; sepNavWindowFrame = "{{508, 63}, {932, 815}}"; }; }; diff --git a/plugins/MacAU/TransDesk/TransDesk.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/TransDesk/TransDesk.xcodeproj/christopherjohnson.perspectivev3 index 31d86a2..db0c5ba 100755 --- a/plugins/MacAU/TransDesk/TransDesk.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/TransDesk/TransDesk.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>901</integer> + <integer>901</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -307,7 +305,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {185, 428}}</string> + <string>{{0, 0}, {185, 676}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -317,14 +315,14 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {202, 446}}</string> + <string>{{0, 0}, {202, 694}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> <real>185</real> </array> <key>RubberWindowFrame</key> - <string>630 249 810 487 0 0 1440 878 </string> + <string>398 107 901 735 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -335,6 +333,8 @@ <key>Dock</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXProjectModuleGUID</key> @@ -352,11 +352,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D76EC1F7FA409007AB60F</string> + <string>8B7931DF21F4B769006E9731</string> <key>history</key> <array> - <string>8B3ED5DC1DDE6589004F9D64</string> - <string>8B9D680F1F7C919B007AB60F</string> + <string>8B7931D821F4B744006E9731</string> + <string>8B7931DA21F4B744006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 69}}</string> + <string>{{0, 0}, {694, 520}}</string> <key>RubberWindowFrame</key> - <string>630 249 810 487 0 0 1440 878 </string> + <string>398 107 901 735 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>69pt</string> + <string>520pt</string> </dict> <dict> <key>Proportion</key> - <string>372pt</string> + <string>169pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 345}}</string> - <key>RubberWindowFrame</key> - <string>630 249 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {694, 142}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {694, 142}}</string> + <key>RubberWindowFrame</key> + <string>398 107 901 735 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -460,7 +460,7 @@ </dict> </array> <key>Proportion</key> - <string>603pt</string> + <string>694pt</string> </dict> </array> <key>Name</key> @@ -479,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D76ED1F7FA409007AB60F</string> + <string>8B7931E021F4B769006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D76EE1F7FA409007AB60F</string> + <string>8B7931E121F4B769006E9731</string> <string>8B3ED5581DDE63B1004F9D64</string> - <string>8B9D76EF1F7FA409007AB60F</string> + <string>8B7931E221F4B769006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528458761.70146298</real> + <real>569685865.03802896</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,11 +653,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D76F01F7FA409007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/TransDesk/TransDesk.xcodeproj</string> </array> <key>WindowString</key> - <string>630 249 810 487 0 0 1440 878 </string> + <string>398 107 901 735 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/Tremolo/Tremolo.cpp b/plugins/MacAU/Tremolo/Tremolo.cpp index e70b244..6e1f644 100755 --- a/plugins/MacAU/Tremolo/Tremolo.cpp +++ b/plugins/MacAU/Tremolo/Tremolo.cpp @@ -173,9 +173,7 @@ void Tremolo::TremoloKernel::Reset() depthAmount = 0.0; lastSpeed = 1000.0; lastDepth = 1000.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -216,9 +214,6 @@ void Tremolo::TremoloKernel::Process( const Float32 *inSourceP, Float64 out; Float64 bridgerectifier; Float64 offset; - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; while (nSampleFrames-- > 0) { inputSample = *sourceP; @@ -289,22 +284,12 @@ void Tremolo::TremoloKernel::Process( const Float32 *inSourceP, //apply tremolo, apply gain boost to compensate for volume loss inputSample = (drySample * (1-depth)) + (inputSample*depth); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither - - *destP = inputSample; destP += inNumChannels; sourceP += inNumChannels; diff --git a/plugins/MacAU/Tremolo/Tremolo.h b/plugins/MacAU/Tremolo/Tremolo.h index 38910c3..8b4204a 100755 --- a/plugins/MacAU/Tremolo/Tremolo.h +++ b/plugins/MacAU/Tremolo/Tremolo.h @@ -136,10 +136,7 @@ public: Float64 lastSpeed; Float64 lastDepth; Float64 sweep; - Float64 fpNShapeA; - Float64 fpNShapeB; - bool fpFlip; - + Float64 fpNShape; }; }; diff --git a/plugins/MacAU/Tremolo/Tremolo.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Tremolo/Tremolo.xcodeproj/christopherjohnson.pbxuser index 822426d..4a72292 100755 --- a/plugins/MacAU/Tremolo/Tremolo.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Tremolo/Tremolo.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 364, + 528, 20, 48, 43, @@ -49,43 +49,54 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528458789; - PBXWorkspaceStateSaveDate = 528458789; + PBXPerProjectTemplateStateSaveDate = 569685954; + PBXWorkspaceStateSaveDate = 569685954; }; perUserProjectItems = { - 8B9D681F1F7C91BB007AB60F /* PBXTextBookmark */ = 8B9D681F1F7C91BB007AB60F /* PBXTextBookmark */; - 8B9D76FB1F7FA435007AB60F /* PBXTextBookmark */ = 8B9D76FB1F7FA435007AB60F /* PBXTextBookmark */; + 8B7931EE21F4B82A006E9731 /* PBXTextBookmark */ = 8B7931EE21F4B82A006E9731 /* PBXTextBookmark */; + 8B7931F021F4B82A006E9731 /* PBXTextBookmark */ = 8B7931F021F4B82A006E9731 /* PBXTextBookmark */; + 8B7931F521F4B845006E9731 /* PBXTextBookmark */ = 8B7931F521F4B845006E9731 /* PBXTextBookmark */; 8BD8CB021DF8ECAA00CC3427 /* PBXTextBookmark */ = 8BD8CB021DF8ECAA00CC3427 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B9D681F1F7C91BB007AB60F /* PBXTextBookmark */ = { + 8B7931EE21F4B82A006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* Tremolo.h */; + name = "Tremolo.h: 139"; + rLen = 0; + rLoc = 5331; + rType = 0; + vrLen = 813; + vrLoc = 4630; + }; + 8B7931F021F4B82A006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Tremolo.cpp */; - name = "Tremolo.cpp: 290"; + name = "Tremolo.cpp: 292"; rLen = 0; - rLoc = 12305; + rLoc = 12430; rType = 0; - vrLen = 145; - vrLoc = 10647; + vrLen = 1235; + vrLoc = 11280; }; - 8B9D76FB1F7FA435007AB60F /* PBXTextBookmark */ = { + 8B7931F521F4B845006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* Tremolo.cpp */; - name = "Tremolo.cpp: 290"; + name = "Tremolo.cpp: 292"; rLen = 0; - rLoc = 12305; + rLoc = 12430; rType = 0; - vrLen = 0; - vrLoc = 0; + vrLen = 1268; + vrLoc = 11247; }; 8BA05A660720730100365D66 /* Tremolo.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 4108}}"; - sepNavSelRange = "{12305, 0}"; - sepNavVisRange = "{0, 0}"; + sepNavIntBoundsRect = "{{0, 0}, {718, 4043}}"; + sepNavSelRange = "{12430, 0}"; + sepNavVisRange = "{11247, 1268}"; sepNavWindowFrame = "{{386, 39}, {1024, 839}}"; }; }; @@ -107,9 +118,9 @@ }; 8BC6025B073B072D006C4272 /* Tremolo.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {922, 1885}}"; - sepNavSelRange = "{5163, 132}"; - sepNavVisRange = "{4043, 1438}"; + sepNavIntBoundsRect = "{{0, 0}, {922, 2262}}"; + sepNavSelRange = "{5331, 0}"; + sepNavVisRange = "{4630, 813}"; sepNavWindowFrame = "{{469, 34}, {679, 835}}"; }; }; diff --git a/plugins/MacAU/Tremolo/Tremolo.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Tremolo/Tremolo.xcodeproj/christopherjohnson.perspectivev3 index 0be2553..832afcd 100755 --- a/plugins/MacAU/Tremolo/Tremolo.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Tremolo/Tremolo.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>810</integer> - <integer>810</integer> + <integer>954</integer> + <integer>954</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -282,7 +280,7 @@ <dict> <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> <array> - <real>185</real> + <real>165</real> </array> <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> <array> @@ -307,7 +305,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {185, 428}}</string> + <string>{{0, 0}, {165, 635}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -317,19 +315,19 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {202, 446}}</string> + <string>{{0, 0}, {182, 653}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> - <real>185</real> + <real>165</real> </array> <key>RubberWindowFrame</key> - <string>504 296 810 487 0 0 1440 878 </string> + <string>341 162 954 694 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> <key>Proportion</key> - <string>202pt</string> + <string>182pt</string> </dict> <dict> <key>Dock</key> @@ -352,11 +350,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D76FB1F7FA435007AB60F</string> + <string>8B7931F521F4B845006E9731</string> <key>history</key> <array> <string>8BD8CB021DF8ECAA00CC3427</string> - <string>8B9D681F1F7C91BB007AB60F</string> + <string>8B7931EE21F4B82A006E9731</string> + <string>8B7931F021F4B82A006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 32}}</string> + <string>{{0, 0}, {767, 469}}</string> <key>RubberWindowFrame</key> - <string>504 296 810 487 0 0 1440 878 </string> + <string>341 162 954 694 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>32pt</string> + <string>469pt</string> </dict> <dict> <key>Proportion</key> - <string>409pt</string> + <string>179pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 382}}</string> - <key>RubberWindowFrame</key> - <string>504 296 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {767, 152}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {767, 152}}</string> + <key>RubberWindowFrame</key> + <string>341 162 954 694 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -460,7 +459,7 @@ </dict> </array> <key>Proportion</key> - <string>603pt</string> + <string>767pt</string> </dict> </array> <key>Name</key> @@ -479,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D76FC1F7FA435007AB60F</string> + <string>8B7931F621F4B845006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D76FD1F7FA435007AB60F</string> + <string>8B7931F721F4B845006E9731</string> <string>8B3ED5B51DDE654F004F9D64</string> - <string>8B9D76FE1F7FA435007AB60F</string> + <string>8B7931F821F4B845006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528458805.46372598</real> + <real>569686085.74729097</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,11 +652,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D76FF1F7FA435007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/Tremolo/Tremolo.xcodeproj</string> </array> <key>WindowString</key> - <string>504 296 810 487 0 0 1440 878 </string> + <string>341 162 954 694 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/TubeDesk/TubeDesk.cpp b/plugins/MacAU/TubeDesk/TubeDesk.cpp index 4b730c4..cf2c042 100755 --- a/plugins/MacAU/TubeDesk/TubeDesk.cpp +++ b/plugins/MacAU/TubeDesk/TubeDesk.cpp @@ -157,9 +157,7 @@ void TubeDesk::TubeDeskKernel::Reset() lastSample = 0.0; lastOutSample = 0.0; lastSlew = 0.0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -200,9 +198,6 @@ void TubeDesk::TubeDeskKernel::Process( const Float32 *inSourceP, Float64 combSample; long double inputSample; long double drySample; - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; while (nSampleFrames-- > 0) { inputSample = *sourceP; @@ -295,20 +290,11 @@ void TubeDesk::TubeDeskKernel::Process( const Float32 *inSourceP, inputSample /= gain; //end of Desk section - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output - + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; diff --git a/plugins/MacAU/TubeDesk/TubeDesk.h b/plugins/MacAU/TubeDesk/TubeDesk.h index 93110b5..393c14b 100755 --- a/plugins/MacAU/TubeDesk/TubeDesk.h +++ b/plugins/MacAU/TubeDesk/TubeDesk.h @@ -124,9 +124,7 @@ public: long double lastSample; long double lastOutSample; Float64 lastSlew; - Float64 fpNShapeA; - Float64 fpNShapeB; - bool fpFlip; + Float64 fpNShape; }; }; diff --git a/plugins/MacAU/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.pbxuser index 6c8870e..5884fa0 100755 --- a/plugins/MacAU/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 364, + 474, 20, 48, 43, @@ -49,43 +49,53 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528458816; - PBXWorkspaceStateSaveDate = 528458816; + PBXPerProjectTemplateStateSaveDate = 569686163; + PBXWorkspaceStateSaveDate = 569686163; }; perUserProjectItems = { - 8B9D68401F7C91F2007AB60F /* PBXTextBookmark */ = 8B9D68401F7C91F2007AB60F /* PBXTextBookmark */; - 8B9D770A1F7FA48A007AB60F /* PBXTextBookmark */ = 8B9D770A1F7FA48A007AB60F /* PBXTextBookmark */; - 8BD8CB131DF8EDB000CC3427 /* PBXTextBookmark */ = 8BD8CB131DF8EDB000CC3427 /* PBXTextBookmark */; + 8B79320521F4B8E5006E9731 /* PBXTextBookmark */ = 8B79320521F4B8E5006E9731 /* PBXTextBookmark */; + 8B79320721F4B8E5006E9731 /* PBXTextBookmark */ = 8B79320721F4B8E5006E9731 /* PBXTextBookmark */; + 8B79320C21F4B8F7006E9731 /* PBXTextBookmark */ = 8B79320C21F4B8F7006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B9D68401F7C91F2007AB60F /* PBXTextBookmark */ = { + 8B79320521F4B8E5006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* TubeDesk.h */; + name = "TubeDesk.h: 121"; + rLen = 127; + rLoc = 4740; + rType = 0; + vrLen = 159; + vrLoc = 4728; + }; + 8B79320721F4B8E5006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* TubeDesk.cpp */; - name = "TubeDesk.cpp: 1"; + name = "TubeDesk.cpp: 297"; rLen = 0; - rLoc = 0; + rLoc = 12119; rType = 0; - vrLen = 0; - vrLoc = 0; + vrLen = 1239; + vrLoc = 10970; }; - 8B9D770A1F7FA48A007AB60F /* PBXTextBookmark */ = { + 8B79320C21F4B8F7006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* TubeDesk.cpp */; - name = "TubeDesk.cpp: 1"; + name = "TubeDesk.cpp: 297"; rLen = 0; - rLoc = 0; + rLoc = 12119; rType = 0; - vrLen = 0; - vrLoc = 0; + vrLen = 1298; + vrLoc = 10911; }; 8BA05A660720730100365D66 /* TubeDesk.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 4186}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 0}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 4147}}"; + sepNavSelRange = "{12119, 0}"; + sepNavVisRange = "{10911, 1298}"; sepNavWindowFrame = "{{508, 63}, {932, 815}}"; }; }; @@ -107,9 +117,9 @@ }; 8BC6025B073B072D006C4272 /* TubeDesk.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 1859}}"; + sepNavIntBoundsRect = "{{0, 0}, {656, 1924}}"; sepNavSelRange = "{4740, 127}"; - sepNavVisRange = "{4740, 107}"; + sepNavVisRange = "{4728, 159}"; sepNavWindowFrame = "{{508, 63}, {932, 815}}"; }; }; @@ -127,16 +137,6 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8BD8CB131DF8EDB000CC3427 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* TubeDesk.h */; - name = "TubeDesk.h: 121"; - rLen = 127; - rLoc = 4740; - rType = 0; - vrLen = 107; - vrLoc = 4740; - }; 8D01CCC60486CAD60068D4B7 /* TubeDesk */ = { activeExec = 0; }; diff --git a/plugins/MacAU/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.perspectivev3 index 5a5dc2b..a910f97 100755 --- a/plugins/MacAU/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>920</integer> + <integer>920</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -307,7 +305,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {185, 428}}</string> + <string>{{0, 0}, {185, 675}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -317,14 +315,14 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {202, 446}}</string> + <string>{{0, 0}, {202, 693}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> <real>185</real> </array> <key>RubberWindowFrame</key> - <string>630 304 810 487 0 0 1440 878 </string> + <string>387 106 920 734 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,11 +350,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D770A1F7FA48A007AB60F</string> + <string>8B79320C21F4B8F7006E9731</string> <key>history</key> <array> - <string>8BD8CB131DF8EDB000CC3427</string> - <string>8B9D68401F7C91F2007AB60F</string> + <string>8B79320521F4B8E5006E9731</string> + <string>8B79320721F4B8E5006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 13}}</string> + <string>{{0, 0}, {713, 543}}</string> <key>RubberWindowFrame</key> - <string>630 304 810 487 0 0 1440 878 </string> + <string>387 106 920 734 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>13pt</string> + <string>543pt</string> </dict> <dict> <key>Proportion</key> - <string>428pt</string> + <string>145pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 401}}</string> - <key>RubberWindowFrame</key> - <string>630 304 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {713, 118}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {713, 118}}</string> + <key>RubberWindowFrame</key> + <string>387 106 920 734 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -460,7 +458,7 @@ </dict> </array> <key>Proportion</key> - <string>603pt</string> + <string>713pt</string> </dict> </array> <key>Name</key> @@ -479,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D770B1F7FA48A007AB60F</string> + <string>8B79320D21F4B8F7006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D770C1F7FA48A007AB60F</string> + <string>8B79320E21F4B8F7006E9731</string> <string>8B3ED5701DDE63FA004F9D64</string> - <string>8B9D770D1F7FA48A007AB60F</string> + <string>8B79320F21F4B8F7006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528458890.160869</real> + <real>569686263.00768697</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,11 +651,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D770E1F7FA48A007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacAU/TubeDesk/TubeDesk.xcodeproj</string> </array> <key>WindowString</key> - <string>630 304 810 487 0 0 1440 878 </string> + <string>387 106 920 734 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/UnBox/UnBox.cpp b/plugins/MacAU/UnBox/UnBox.cpp index b5d9943..4c1685c 100755 --- a/plugins/MacAU/UnBox/UnBox.cpp +++ b/plugins/MacAU/UnBox/UnBox.cpp @@ -179,7 +179,6 @@ void UnBox::UnBoxKernel::Reset() for(int count = 0; count < 11; count++) {c[count] = 0.0; f[count] = 0.0;} iirSampleA = 0.0; iirSampleB = 0.0; - } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -328,21 +327,14 @@ void UnBox::UnBoxKernel::Process( const Float32 *inSourceP, if (output != 1.0) inputSample *= output; - //noise shaping to 32-bit floating point - Float32 fpTemp = inputSample; - fpNShape += (inputSample-fpTemp); - inputSample += fpNShape; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither + *destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; } - fpNShape *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacAU/UnBox/UnBox.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/UnBox/UnBox.xcodeproj/christopherjohnson.pbxuser index 57e0f3e..502ab45 100755 --- a/plugins/MacAU/UnBox/UnBox.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/UnBox/UnBox.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 292, + 389, 20, 48, 43, @@ -49,35 +49,55 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 557536465; - PBXWorkspaceStateSaveDate = 557536465; + PBXPerProjectTemplateStateSaveDate = 569686552; + PBXWorkspaceStateSaveDate = 569686552; }; perUserProjectItems = { - 8B6DBA6A213B59B000E44739 /* PBXTextBookmark */ = 8B6DBA6A213B59B000E44739 /* PBXTextBookmark */; + 8B79324821F4BABB006E9731 /* PBXTextBookmark */ = 8B79324821F4BABB006E9731 /* PBXTextBookmark */; + 8B79324A21F4BABB006E9731 /* PBXTextBookmark */ = 8B79324A21F4BABB006E9731 /* PBXTextBookmark */; + 8B79324F21F4BACB006E9731 /* PBXTextBookmark */ = 8B79324F21F4BACB006E9731 /* PBXTextBookmark */; 8BFDB0B1213A19500079F90D /* PlistBookmark */ = 8BFDB0B1213A19500079F90D /* PlistBookmark */; - 8BFDB0B2213A19500079F90D /* PBXTextBookmark */ = 8BFDB0B2213A19500079F90D /* PBXTextBookmark */; - 8BFDB0B4213A19500079F90D /* PBXTextBookmark */ = 8BFDB0B4213A19500079F90D /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B6DBA6A213B59B000E44739 /* PBXTextBookmark */ = { + 8B79324821F4BABB006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* UnBox.h */; name = "UnBox.h: 140"; rLen = 24; rLoc = 5350; rType = 0; - vrLen = 294; - vrLoc = 5181; + vrLen = 259; + vrLoc = 5216; + }; + 8B79324A21F4BABB006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* UnBox.cpp */; + name = "UnBox.cpp: 339"; + rLen = 0; + rLoc = 14386; + rType = 0; + vrLen = 1013; + vrLoc = 13376; + }; + 8B79324F21F4BACB006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* UnBox.cpp */; + name = "UnBox.cpp: 339"; + rLen = 0; + rLoc = 14386; + rType = 0; + vrLen = 1013; + vrLoc = 13376; }; 8BA05A660720730100365D66 /* UnBox.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {747, 4745}}"; - sepNavSelRange = "{11915, 2143}"; - sepNavVisRange = "{12509, 2376}"; - sepNavWindowFrame = "{{683, 44}, {776, 834}}"; + sepNavIntBoundsRect = "{{0, 0}, {747, 4511}}"; + sepNavSelRange = "{14386, 0}"; + sepNavVisRange = "{13376, 1013}"; + sepNavWindowFrame = "{{664, 44}, {776, 834}}"; }; }; 8BA05A690720730100365D66 /* UnBoxVersion.h */ = { @@ -90,9 +110,9 @@ }; 8BC6025B073B072D006C4272 /* UnBox.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 2093}}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 2119}}"; sepNavSelRange = "{5350, 24}"; - sepNavVisRange = "{5181, 294}"; + sepNavVisRange = "{5216, 259}"; sepNavWindowFrame = "{{724, 44}, {776, 834}}"; }; }; @@ -122,26 +142,6 @@ rLen = 0; rLoc = 9223372036854775808; }; - 8BFDB0B2213A19500079F90D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* UnBox.cpp */; - name = "UnBox.cpp: 297"; - rLen = 238; - rLoc = 12561; - rType = 0; - vrLen = 707; - vrLoc = 12336; - }; - 8BFDB0B4213A19500079F90D /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* UnBox.h */; - name = "UnBox.h: 140"; - rLen = 24; - rLoc = 5350; - rType = 0; - vrLen = 295; - vrLoc = 5181; - }; 8D01CCC60486CAD60068D4B7 /* UnBox */ = { activeExec = 0; }; diff --git a/plugins/MacAU/UnBox/UnBox.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/UnBox/UnBox.xcodeproj/christopherjohnson.perspectivev3 index 74c3c5b..5891050 100755 --- a/plugins/MacAU/UnBox/UnBox.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/UnBox/UnBox.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -282,7 +280,7 @@ <dict> <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> <array> - <real>288</real> + <real>191</real> </array> <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> <array> @@ -309,7 +307,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {288, 595}}</string> + <string>{{0, 0}, {191, 595}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -319,19 +317,19 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {305, 613}}</string> + <string>{{0, 0}, {208, 613}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> - <real>288</real> + <real>191</real> </array> <key>RubberWindowFrame</key> - <string>654 195 841 654 0 0 1440 878 </string> + <string>454 199 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> <key>Proportion</key> - <string>305pt</string> + <string>208pt</string> </dict> <dict> <key>Dock</key> @@ -342,7 +340,7 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274A1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>UnBox.h</string> + <string>UnBox.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -350,16 +348,16 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274B1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>UnBox.h</string> + <string>UnBox.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B6DBA6A213B59B000E44739</string> + <string>8B79324F21F4BACB006E9731</string> <key>history</key> <array> <string>8BFDB0B1213A19500079F90D</string> - <string>8BFDB0B2213A19500079F90D</string> - <string>8BFDB0B4213A19500079F90D</string> + <string>8B79324821F4BABB006E9731</string> + <string>8B79324A21F4BABB006E9731</string> </array> </dict> <key>SplitCount</key> @@ -373,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 202}}</string> + <string>{{0, 0}, {628, 422}}</string> <key>RubberWindowFrame</key> - <string>654 195 841 654 0 0 1440 878 </string> + <string>454 199 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>202pt</string> + <string>422pt</string> </dict> <dict> <key>Proportion</key> - <string>406pt</string> + <string>186pt</string> <key>Tabs</key> <array> <dict> @@ -398,9 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 379}}</string> - <key>RubberWindowFrame</key> - <string>654 195 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {628, 159}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -454,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 339}}</string> + <string>{{10, 27}, {628, 159}}</string> + <key>RubberWindowFrame</key> + <string>454 199 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -463,7 +461,7 @@ </dict> </array> <key>Proportion</key> - <string>531pt</string> + <string>628pt</string> </dict> </array> <key>Name</key> @@ -482,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B6DBA6B213B59B000E44739</string> + <string>8B79325021F4BACB006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B6DBA6C213B59B000E44739</string> + <string>8B79325121F4BACB006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B6DBA6D213B59B000E44739</string> + <string>8B79325221F4BACB006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -659,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>557537712.47539306</real> + <real>569686731.11476696</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -679,7 +677,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/UnBox/UnBox.xcodeproj</string> </array> <key>WindowString</key> - <string>654 195 841 654 0 0 1440 878 </string> + <string>454 199 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/VariMu/VariMu.cpp b/plugins/MacAU/VariMu/VariMu.cpp index 50babba..de02670 100755 --- a/plugins/MacAU/VariMu/VariMu.cpp +++ b/plugins/MacAU/VariMu/VariMu.cpp @@ -331,14 +331,11 @@ void VariMu::VariMuKernel::Process( const Float32 *inSourceP, //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 32-bit floating point - Float32 fpTemp = inputSample; - fpNShape += (inputSample-fpTemp); - inputSample += fpNShape; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; diff --git a/plugins/MacAU/VariMu/VariMu.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/VariMu/VariMu.xcodeproj/christopherjohnson.pbxuser index 3724cac..1a4176c 100755 --- a/plugins/MacAU/VariMu/VariMu.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/VariMu/VariMu.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 364, + 398, 20, 48, 43, @@ -49,18 +49,42 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 553985775; - PBXWorkspaceStateSaveDate = 553985775; + PBXPerProjectTemplateStateSaveDate = 569686793; + PBXWorkspaceStateSaveDate = 569686793; + }; + perUserProjectItems = { + 8B79326021F4BB45006E9731 /* PBXTextBookmark */ = 8B79326021F4BB45006E9731 /* PBXTextBookmark */; + 8B79326521F4BB59006E9731 /* PBXTextBookmark */ = 8B79326521F4BB59006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B79326021F4BB45006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* VariMu.cpp */; + name = "VariMu.cpp: 339"; + rLen = 0; + rLoc = 13742; + rType = 0; + vrLen = 1137; + vrLoc = 12693; + }; + 8B79326521F4BB59006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* VariMu.cpp */; + name = "VariMu.cpp: 339"; + rLen = 0; + rLoc = 13742; + rType = 0; + vrLen = 1204; + vrLoc = 12626; + }; 8BA05A660720730100365D66 /* VariMu.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {754, 4823}}"; - sepNavSelRange = "{10960, 2235}"; - sepNavVisRange = "{10339, 1838}"; + sepNavIntBoundsRect = "{{0, 0}, {754, 4875}}"; + sepNavSelRange = "{13742, 0}"; + sepNavVisRange = "{12626, 1204}"; sepNavWindowFrame = "{{643, 44}, {776, 834}}"; }; }; @@ -83,9 +107,9 @@ 8BC6025B073B072D006C4272 /* VariMu.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {824, 1976}}"; - sepNavSelRange = "{5236, 185}"; - sepNavVisRange = "{1248, 2117}"; - sepNavWindowFrame = "{{606, 77}, {834, 801}}"; + sepNavSelRange = "{5122, 0}"; + sepNavVisRange = "{4202, 1352}"; + sepNavWindowFrame = "{{456, 70}, {834, 801}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/VariMu/VariMu.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/VariMu/VariMu.xcodeproj/christopherjohnson.perspectivev3 index 442c0b6..b11d3d7 100755 --- a/plugins/MacAU/VariMu/VariMu.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/VariMu/VariMu.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>810</integer> - <integer>810</integer> + <integer>844</integer> + <integer>844</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -307,7 +305,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {185, 428}}</string> + <string>{{0, 0}, {185, 681}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -317,14 +315,14 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {202, 446}}</string> + <string>{{0, 0}, {202, 699}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> <real>185</real> </array> <key>RubberWindowFrame</key> - <string>623 325 810 487 0 0 1440 878 </string> + <string>477 100 844 740 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -340,7 +338,7 @@ <key>PBXProjectModuleGUID</key> <string>8BB8B6602102749700751000</string> <key>PBXProjectModuleLabel</key> - <string></string> + <string>VariMu.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -348,7 +346,15 @@ <key>PBXProjectModuleGUID</key> <string>8BB8B6612102749700751000</string> <key>PBXProjectModuleLabel</key> - <string></string> + <string>VariMu.cpp</string> + <key>_historyCapacity</key> + <integer>0</integer> + <key>bookmark</key> + <string>8B79326521F4BB59006E9731</string> + <key>history</key> + <array> + <string>8B79326021F4BB45006E9731</string> + </array> </dict> <key>SplitCount</key> <string>1</string> @@ -361,18 +367,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 0}}</string> + <string>{{0, 0}, {637, 544}}</string> <key>RubberWindowFrame</key> - <string>623 325 810 487 0 0 1440 878 </string> + <string>477 100 844 740 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>0pt</string> + <string>544pt</string> </dict> <dict> <key>Proportion</key> - <string>441pt</string> + <string>150pt</string> <key>Tabs</key> <array> <dict> @@ -386,9 +392,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> - <key>RubberWindowFrame</key> - <string>623 325 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {637, 123}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -442,7 +446,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {637, 123}}</string> + <key>RubberWindowFrame</key> + <string>477 100 844 740 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -451,7 +457,7 @@ </dict> </array> <key>Proportion</key> - <string>603pt</string> + <string>637pt</string> </dict> </array> <key>Name</key> @@ -470,11 +476,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBD18752105423A0015A233</string> + <string>8B79326621F4BB59006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBD18762105423A0015A233</string> + <string>8B79326721F4BB59006E9731</string> <string>8BB8B6602102749700751000</string> - <string>8BBD18772105423A0015A233</string> + <string>8B79326821F4BB59006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -627,7 +633,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>553992762.45564604</real> + <real>569686873.84603405</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -644,11 +650,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BBD18782105423A0015A233</string> <string>/Users/christopherjohnson/Desktop/MacAU/VariMu/VariMu.xcodeproj</string> </array> <key>WindowString</key> - <string>623 325 810 487 0 0 1440 878 </string> + <string>477 100 844 740 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.cpp b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.cpp index e89cc53..cfc6806 100755 --- a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.cpp +++ b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.cpp @@ -175,9 +175,7 @@ void VoiceOfTheStarship::VoiceOfTheStarshipKernel::Reset() filterflip = false; for(int count = 0; count < 11; count++) {b[count] = 0.0; f[count] = 0.0;} lastAlgorithm = 0; - fpNShapeA = 0.0; - fpNShapeB = 0.0; - fpFlip = true; + fpNShape = 0.0; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -259,9 +257,6 @@ void VoiceOfTheStarship::VoiceOfTheStarshipKernel::Process( const Float32 *inS Float64 rumbletrim = sqrt(lowcut); //this among other things is just to give volume compensation Float64 inputSample; - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; while (nSampleFrames-- > 0) { inputSample = *sourceP; @@ -323,19 +318,11 @@ void VoiceOfTheStarship::VoiceOfTheStarshipKernel::Process( const Float32 *inS flip = !flip; filterflip = !filterflip; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSample; - fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeA; - } - else { - fpTemp = inputSample; - fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew); - inputSample += fpNShapeB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; diff --git a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.h b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.h index d2731b8..28d236a 100755 --- a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.h +++ b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.h @@ -138,9 +138,7 @@ public: Float64 b[11]; Float64 f[11]; int lastAlgorithm; - Float64 fpNShapeA; - Float64 fpNShapeB; - bool fpFlip; + Float64 fpNShape; }; }; diff --git a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.mode1v3 b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.mode1v3 index e28aecb..e28aecb 100644..100755 --- a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.mode1v3 +++ b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.mode1v3 diff --git a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.pbxuser index 31707e8..2622f4a 100644..100755 --- a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.pbxuser @@ -12,7 +12,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 181, + 327, 20, 48, 43, @@ -51,22 +51,53 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 539483684; - PBXWorkspaceStateSaveDate = 539483684; + PBXPerProjectTemplateStateSaveDate = 569686894; + PBXWorkspaceStateSaveDate = 569686894; }; perUserProjectItems = { - 8BCA6F4B2027DF6C00D92BAD /* PBXTextBookmark */ = 8BCA6F4B2027DF6C00D92BAD /* PBXTextBookmark */; - 8BCA6F4C2027DF6C00D92BAD /* PBXTextBookmark */ = 8BCA6F4C2027DF6C00D92BAD /* PBXTextBookmark */; + 8B79327421F4BBE8006E9731 /* PBXTextBookmark */ = 8B79327421F4BBE8006E9731 /* PBXTextBookmark */; + 8B79327621F4BBE8006E9731 /* PBXTextBookmark */ = 8B79327621F4BBE8006E9731 /* PBXTextBookmark */; + 8B79327F21F4BC16006E9731 /* PBXTextBookmark */ = 8B79327F21F4BC16006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B79327421F4BBE8006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* VoiceOfTheStarship.h */; + name = "VoiceOfTheStarship.h: 141"; + rLen = 0; + rLoc = 5399; + rType = 0; + vrLen = 878; + vrLoc = 4631; + }; + 8B79327621F4BBE8006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* VoiceOfTheStarship.cpp */; + name = "VoiceOfTheStarship.cpp: 329"; + rLen = 0; + rLoc = 13814; + rType = 0; + vrLen = 1135; + vrLoc = 12872; + }; + 8B79327F21F4BC16006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* VoiceOfTheStarship.cpp */; + name = "VoiceOfTheStarship.cpp: 260"; + rLen = 0; + rLoc = 11704; + rType = 0; + vrLen = 1504; + vrLoc = 10760; + }; 8BA05A660720730100365D66 /* VoiceOfTheStarship.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {803, 4758}}"; - sepNavSelRange = "{13583, 0}"; - sepNavVisRange = "{12506, 267}"; + sepNavIntBoundsRect = "{{0, 0}, {677, 4446}}"; + sepNavSelRange = "{11704, 0}"; + sepNavVisRange = "{10760, 1504}"; sepNavWindowFrame = "{{459, 62}, {981, 816}}"; }; }; @@ -96,32 +127,12 @@ }; 8BC6025B073B072D006C4272 /* VoiceOfTheStarship.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {824, 1937}}"; - sepNavSelRange = "{5380, 57}"; - sepNavVisRange = "{4200, 1340}"; + sepNavIntBoundsRect = "{{0, 0}, {824, 2171}}"; + sepNavSelRange = "{5399, 0}"; + sepNavVisRange = "{4631, 878}"; sepNavWindowFrame = "{{670, 67}, {770, 811}}"; }; }; - 8BCA6F4B2027DF6C00D92BAD /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* VoiceOfTheStarship.cpp */; - name = "VoiceOfTheStarship.cpp: 319"; - rLen = 0; - rLoc = 13583; - rType = 0; - vrLen = 267; - vrLoc = 12506; - }; - 8BCA6F4C2027DF6C00D92BAD /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* VoiceOfTheStarship.cpp */; - name = "VoiceOfTheStarship.cpp: 319"; - rLen = 0; - rLoc = 13583; - rType = 0; - vrLen = 267; - vrLoc = 12506; - }; 8BD3CCB8148830B20062E48C /* Source Control */ = { isa = PBXSourceControlManager; fallbackIsa = XCSourceControlManager; diff --git a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.perspectivev3 index e5ee563..93dc9d7 100644..100755 --- a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>810</integer> - <integer>810</integer> + <integer>850</integer> + <integer>850</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -300,14 +298,14 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>3</integer> + <integer>4</integer> <integer>2</integer> <integer>1</integer> <integer>0</integer> </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {262, 390}}</string> + <string>{{0, 0}, {262, 653}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -317,14 +315,14 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {279, 408}}</string> + <string>{{0, 0}, {279, 671}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> <real>262</real> </array> <key>RubberWindowFrame</key> - <string>727 422 704 449 0 0 1440 878 </string> + <string>436 140 850 712 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -335,6 +333,8 @@ <key>Dock</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXProjectModuleGUID</key> @@ -352,10 +352,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BCA6F4C2027DF6C00D92BAD</string> + <string>8B79327F21F4BC16006E9731</string> <key>history</key> <array> - <string>8BCA6F4B2027DF6C00D92BAD</string> + <string>8B79327421F4BBE8006E9731</string> + <string>8B79327621F4BBE8006E9731</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {420, 121}}</string> + <string>{{0, 0}, {566, 560}}</string> <key>RubberWindowFrame</key> - <string>727 422 704 449 0 0 1440 878 </string> + <string>436 140 850 712 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>121pt</string> + <string>560pt</string> </dict> <dict> <key>Proportion</key> - <string>282pt</string> + <string>106pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {420, 255}}</string> - <key>RubberWindowFrame</key> - <string>727 422 704 449 0 0 1440 878 </string> + <string>{{10, 27}, {566, 79}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -450,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {526, 414}}</string> + <string>{{10, 27}, {566, 79}}</string> + <key>RubberWindowFrame</key> + <string>436 140 850 712 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -459,7 +460,7 @@ </dict> </array> <key>Proportion</key> - <string>420pt</string> + <string>566pt</string> </dict> </array> <key>Name</key> @@ -478,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BCA6F4D2027DF6C00D92BAD</string> + <string>8B79328021F4BC16006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BCA6F4E2027DF6C00D92BAD</string> + <string>8B79328121F4BC16006E9731</string> <string>8BD3753F2011847B00FD04C9</string> - <string>8BCA6F4F2027DF6C00D92BAD</string> + <string>8B79328221F4BC16006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -655,7 +656,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>539484012.35384703</real> + <real>569687062.55458999</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -675,7 +676,7 @@ <string>/Users/christopherjohnson/Desktop/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj</string> </array> <key>WindowString</key> - <string>727 422 704 449 0 0 1440 878 </string> + <string>436 140 850 712 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.pbxproj b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.pbxproj index cc10978..cc10978 100644..100755 --- a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.pbxproj +++ b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.pbxproj diff --git a/plugins/MacAU/Wider/Wider.cpp b/plugins/MacAU/Wider/Wider.cpp index 050f43a..3063f97 100755 --- a/plugins/MacAU/Wider/Wider.cpp +++ b/plugins/MacAU/Wider/Wider.cpp @@ -189,11 +189,8 @@ ComponentResult Wider::Reset(AudioUnitScope inScope, AudioUnitElement inElement { for(int fcount = 0; fcount < 4098; fcount++) {p[fcount] = 0.0;} count = 0; - flip = false; - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; return noErr; } @@ -215,9 +212,6 @@ OSStatus Wider::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags, Float64 overallscale = 1.0; overallscale /= 44100.0; overallscale *= GetSampleRate(); - Float32 fpTemp; - Float64 fpOld = 0.618033988749894848204586; //golden ratio! - Float64 fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; Float64 drySampleL; @@ -338,27 +332,14 @@ OSStatus Wider::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags, inputSampleL = (drySampleL * dry) + ((mid+side) * wet); inputSampleR = (drySampleR * dry) + ((mid-side) * wet); - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((Float32)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *outputL = inputSampleL; *outputR = inputSampleR; diff --git a/plugins/MacAU/Wider/Wider.h b/plugins/MacAU/Wider/Wider.h index 8bad13a..5d5608f 100755 --- a/plugins/MacAU/Wider/Wider.h +++ b/plugins/MacAU/Wider/Wider.h @@ -118,11 +118,8 @@ public: private: Float64 p[4099]; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; - bool flip; + long double fpNShapeL; + long double fpNShapeR; int count; }; diff --git a/plugins/MacAU/Wider/Wider.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Wider/Wider.xcodeproj/christopherjohnson.pbxuser index 7c2423a..0d5f1a6 100755 --- a/plugins/MacAU/Wider/Wider.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Wider/Wider.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 364, + 450, 20, 48, 43, @@ -49,23 +49,54 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 546574001; - PBXWorkspaceStateSaveDate = 546574001; + PBXPerProjectTemplateStateSaveDate = 569687155; + PBXWorkspaceStateSaveDate = 569687155; }; perUserProjectItems = { - 8BC5D08220940F340058B257 /* PBXTextBookmark */ = 8BC5D08220940F340058B257 /* PBXTextBookmark */; - 8BC5D08320940F340058B257 /* PBXTextBookmark */ = 8BC5D08320940F340058B257 /* PBXTextBookmark */; + 8B79328E21F4BD0E006E9731 /* PBXTextBookmark */ = 8B79328E21F4BD0E006E9731 /* PBXTextBookmark */; + 8B79329021F4BD0E006E9731 /* PBXTextBookmark */ = 8B79329021F4BD0E006E9731 /* PBXTextBookmark */; + 8B79329521F4BD1F006E9731 /* PBXTextBookmark */ = 8B79329521F4BD1F006E9731 /* PBXTextBookmark */; 8BEF337F1D81EAE5008B0B7F /* PBXTextBookmark */ = 8BEF337F1D81EAE5008B0B7F /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; + 8B79328E21F4BD0E006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* Wider.h */; + name = "Wider.h: 123"; + rLen = 0; + rLoc = 5115; + rType = 0; + vrLen = 1305; + vrLoc = 3927; + }; + 8B79329021F4BD0E006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Wider.cpp */; + name = "Wider.cpp: 215"; + rLen = 0; + rLoc = 8890; + rType = 0; + vrLen = 1668; + vrLoc = 8634; + }; + 8B79329521F4BD1F006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Wider.cpp */; + name = "Wider.cpp: 215"; + rLen = 0; + rLoc = 8890; + rType = 0; + vrLen = 1668; + vrLoc = 8634; + }; 8BA05A660720730100365D66 /* Wider.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 4992}}"; - sepNavSelRange = "{14374, 15}"; - sepNavVisRange = "{0, 0}"; + sepNavIntBoundsRect = "{{0, 0}, {852, 4940}}"; + sepNavSelRange = "{8890, 0}"; + sepNavVisRange = "{8634, 1668}"; sepNavWindowFrame = "{{607, 73}, {1021, 800}}"; }; }; @@ -93,31 +124,11 @@ sepNavWindowFrame = "{{424, 78}, {1021, 800}}"; }; }; - 8BC5D08220940F340058B257 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* Wider.cpp */; - name = "Wider.cpp: 371"; - rLen = 15; - rLoc = 14374; - rType = 0; - vrLen = 0; - vrLoc = 0; - }; - 8BC5D08320940F340058B257 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* Wider.cpp */; - name = "Wider.cpp: 371"; - rLen = 15; - rLoc = 14374; - rType = 0; - vrLen = 0; - vrLoc = 0; - }; 8BC6025B073B072D006C4272 /* Wider.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {974, 1716}}"; - sepNavSelRange = "{5049, 18}"; - sepNavVisRange = "{1459, 1999}"; + sepNavIntBoundsRect = "{{0, 0}, {922, 1781}}"; + sepNavSelRange = "{5115, 0}"; + sepNavVisRange = "{3927, 1305}"; sepNavWindowFrame = "{{419, 78}, {1021, 800}}"; }; }; diff --git a/plugins/MacAU/Wider/Wider.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Wider/Wider.xcodeproj/christopherjohnson.perspectivev3 index c4329ad..11f2693 100755 --- a/plugins/MacAU/Wider/Wider.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Wider/Wider.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>-1</integer> - <integer>-1</integer> + <integer>896</integer> + <integer>896</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -307,7 +305,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {185, 428}}</string> + <string>{{0, 0}, {185, 685}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -317,14 +315,14 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {202, 446}}</string> + <string>{{0, 0}, {202, 703}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> <real>185</real> </array> <key>RubberWindowFrame</key> - <string>622 326 810 487 0 0 1440 878 </string> + <string>416 108 896 744 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -352,11 +350,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BC5D08320940F340058B257</string> + <string>8B79329521F4BD1F006E9731</string> <key>history</key> <array> <string>8BEF337F1D81EAE5008B0B7F</string> - <string>8BC5D08220940F340058B257</string> + <string>8B79328E21F4BD0E006E9731</string> + <string>8B79329021F4BD0E006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 13}}</string> + <string>{{0, 0}, {689, 547}}</string> <key>RubberWindowFrame</key> - <string>622 326 810 487 0 0 1440 878 </string> + <string>416 108 896 744 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>13pt</string> + <string>547pt</string> </dict> <dict> <key>Proportion</key> - <string>428pt</string> + <string>151pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 401}}</string> - <key>RubberWindowFrame</key> - <string>622 326 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {689, 124}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> + <string>{{10, 27}, {689, 124}}</string> + <key>RubberWindowFrame</key> + <string>416 108 896 744 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -460,7 +459,7 @@ </dict> </array> <key>Proportion</key> - <string>603pt</string> + <string>689pt</string> </dict> </array> <key>Name</key> @@ -479,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BC5D08420940F340058B257</string> + <string>8B79329621F4BD1F006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BC5D08520940F340058B257</string> + <string>8B79329721F4BD1F006E9731</string> <string>8BEF335B1D81E786008B0B7F</string> - <string>8BC5D08620940F340058B257</string> + <string>8B79329821F4BD1F006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>546574132.41940296</real> + <real>569687327.62574196</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,11 +652,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BC5D08720940F340058B257</string> <string>/Users/christopherjohnson/Desktop/MacAU/Wider/Wider.xcodeproj</string> </array> <key>WindowString</key> - <string>622 326 810 487 0 0 1440 878 </string> + <string>416 108 896 744 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/uLawDecode/uLawDecode.cpp b/plugins/MacAU/uLawDecode/uLawDecode.cpp index 8bf3e5a..3f4581c 100755 --- a/plugins/MacAU/uLawDecode/uLawDecode.cpp +++ b/plugins/MacAU/uLawDecode/uLawDecode.cpp @@ -231,23 +231,15 @@ void uLawDecode::uLawDecodeKernel::Process( const Float32 *inSourceP, } //Dry/Wet control, defaults to the last slider - //noise shaping to 32-bit floating point - Float32 fpTemp = inputSample; - fpNShape += (inputSample-fpTemp); - inputSample += fpNShape; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; } - fpNShape *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacAU/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.pbxuser index 7c52743..fa546fe 100755 --- a/plugins/MacAU/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 292, + 382, 20, 48, 43, @@ -49,33 +49,54 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 561231051; - PBXWorkspaceStateSaveDate = 561231051; + PBXPerProjectTemplateStateSaveDate = 569686304; + PBXWorkspaceStateSaveDate = 569686304; }; perUserProjectItems = { - 8B2720A82173B5FC00396442 /* PBXTextBookmark */ = 8B2720A82173B5FC00396442 /* PBXTextBookmark */; + 8B79321B21F4B952006E9731 /* PBXTextBookmark */ = 8B79321B21F4B952006E9731 /* PBXTextBookmark */; + 8B79321D21F4B952006E9731 /* PBXTextBookmark */ = 8B79321D21F4B952006E9731 /* PBXTextBookmark */; + 8B79322221F4B963006E9731 /* PBXTextBookmark */ = 8B79322221F4B963006E9731 /* PBXTextBookmark */; 8BE1D69D2145372700D5F5B6 /* PlistBookmark */ = 8BE1D69D2145372700D5F5B6 /* PlistBookmark */; - 8BE626FE2159745A00E4E476 /* PBXTextBookmark */ = 8BE626FE2159745A00E4E476 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B2720A82173B5FC00396442 /* PBXTextBookmark */ = { + 8B79321B21F4B952006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* uLawDecode.h */; + name = "uLawDecode.h: 67"; + rLen = 0; + rLoc = 3125; + rType = 0; + vrLen = 1015; + vrLoc = 4252; + }; + 8B79321D21F4B952006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* uLawDecode.cpp */; + name = "uLawDecode.cpp: 244"; + rLen = 0; + rLoc = 10226; + rType = 0; + vrLen = 974; + vrLoc = 9255; + }; + 8B79322221F4B963006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BA05A660720730100365D66 /* uLawDecode.cpp */; - name = "uLawDecode.cpp: 224"; + name = "uLawDecode.cpp: 244"; rLen = 0; - rLoc = 9598; + rLoc = 10226; rType = 0; - vrLen = 437; - vrLoc = 10287; + vrLen = 1006; + vrLoc = 9223; }; 8BA05A660720730100365D66 /* uLawDecode.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {621, 3471}}"; - sepNavSelRange = "{9598, 0}"; - sepNavVisRange = "{10287, 437}"; + sepNavIntBoundsRect = "{{0, 0}, {670, 3471}}"; + sepNavSelRange = "{10226, 0}"; + sepNavVisRange = "{9223, 1006}"; sepNavWindowFrame = "{{587, 45}, {816, 833}}"; }; }; @@ -89,9 +110,9 @@ }; 8BC6025B073B072D006C4272 /* uLawDecode.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {843, 1664}}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 1781}}"; sepNavSelRange = "{3125, 0}"; - sepNavVisRange = "{1679, 1855}"; + sepNavVisRange = "{4252, 1015}"; sepNavWindowFrame = "{{15, 63}, {890, 810}}"; }; }; @@ -121,16 +142,6 @@ rLen = 0; rLoc = 9223372036854775808; }; - 8BE626FE2159745A00E4E476 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BA05A660720730100365D66 /* uLawDecode.cpp */; - name = "uLawDecode.cpp: 224"; - rLen = 0; - rLoc = 9598; - rType = 0; - vrLen = 434; - vrLoc = 10290; - }; 8D01CCC60486CAD60068D4B7 /* uLawDecode */ = { activeExec = 0; }; diff --git a/plugins/MacAU/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.perspectivev3 index b412088..a73a00a 100755 --- a/plugins/MacAU/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -282,7 +280,7 @@ <dict> <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> <array> - <real>288</real> + <real>198</real> </array> <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> <array> @@ -309,7 +307,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {288, 595}}</string> + <string>{{0, 0}, {198, 595}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -319,19 +317,19 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {305, 613}}</string> + <string>{{0, 0}, {215, 613}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> - <real>288</real> + <real>198</real> </array> <key>RubberWindowFrame</key> - <string>585 216 841 654 0 0 1440 878 </string> + <string>464 204 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> <key>Proportion</key> - <string>305pt</string> + <string>215pt</string> </dict> <dict> <key>Dock</key> @@ -354,11 +352,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B2720A82173B5FC00396442</string> + <string>8B79322221F4B963006E9731</string> <key>history</key> <array> <string>8BE1D69D2145372700D5F5B6</string> - <string>8BE626FE2159745A00E4E476</string> + <string>8B79321B21F4B952006E9731</string> + <string>8B79321D21F4B952006E9731</string> </array> </dict> <key>SplitCount</key> @@ -372,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 173}}</string> + <string>{{0, 0}, {621, 497}}</string> <key>RubberWindowFrame</key> - <string>585 216 841 654 0 0 1440 878 </string> + <string>464 204 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>173pt</string> + <string>497pt</string> </dict> <dict> <key>Proportion</key> - <string>435pt</string> + <string>111pt</string> <key>Tabs</key> <array> <dict> @@ -397,9 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 408}}</string> - <key>RubberWindowFrame</key> - <string>585 216 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {621, 84}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -453,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 339}}</string> + <string>{{10, 27}, {621, 84}}</string> + <key>RubberWindowFrame</key> + <string>464 204 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -462,7 +461,7 @@ </dict> </array> <key>Proportion</key> - <string>531pt</string> + <string>621pt</string> </dict> </array> <key>Name</key> @@ -481,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B2720A92173B5FC00396442</string> + <string>8B79322321F4B963006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B2720AA2173B5FC00396442</string> + <string>8B79322421F4B963006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B2720AB2173B5FC00396442</string> + <string>8B79322521F4B963006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -658,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>561231356.44708204</real> + <real>569686371.96209395</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -675,11 +674,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B2720AC2173B5FC00396442</string> <string>/Users/christopherjohnson/Desktop/MacAU/uLawDecode/uLawDecode.xcodeproj</string> </array> <key>WindowString</key> - <string>585 216 841 654 0 0 1440 878 </string> + <string>464 204 841 654 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacAU/uLawEncode/uLawEncode.cpp b/plugins/MacAU/uLawEncode/uLawEncode.cpp index 60e0bb1..9c663fb 100755 --- a/plugins/MacAU/uLawEncode/uLawEncode.cpp +++ b/plugins/MacAU/uLawEncode/uLawEncode.cpp @@ -229,23 +229,15 @@ void uLawEncode::uLawEncodeKernel::Process( const Float32 *inSourceP, inputSample = (inputSample * wet) + (drySample * dry); } - //noise shaping to 32-bit floating point - Float32 fpTemp = inputSample; - fpNShape += (inputSample-fpTemp); - inputSample += fpNShape; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //32 bit dither, made small and tidy. + int expon; frexpf((Float32)inputSample, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSample += (dither-fpNShape); fpNShape = dither; + //end 32 bit dither *destP = inputSample; sourceP += inNumChannels; destP += inNumChannels; } - fpNShape *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacAU/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.pbxuser index 79aef9a..3d079b0 100755 --- a/plugins/MacAU/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 292, + 444, 20, 48, 43, @@ -49,18 +49,20 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 561229885; - PBXWorkspaceStateSaveDate = 561229885; + PBXPerProjectTemplateStateSaveDate = 569686467; + PBXWorkspaceStateSaveDate = 569686467; }; perUserProjectItems = { - 8B27203D2173B23100396442 /* PlistBookmark */ = 8B27203D2173B23100396442 /* PlistBookmark */; - 8BE627102159750A00E4E476 /* PlistBookmark */ = 8BE627102159750A00E4E476 /* PlistBookmark */; + 8B79323121F4B9E7006E9731 /* PlistBookmark */ = 8B79323121F4B9E7006E9731 /* PlistBookmark */; + 8B79323221F4B9E7006E9731 /* PBXTextBookmark */ = 8B79323221F4B9E7006E9731 /* PBXTextBookmark */; + 8B79323421F4B9E7006E9731 /* PBXTextBookmark */ = 8B79323421F4B9E7006E9731 /* PBXTextBookmark */; + 8B79323921F4BA03006E9731 /* PBXTextBookmark */ = 8B79323921F4BA03006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B27203D2173B23100396442 /* PlistBookmark */ = { + 8B79323121F4B9E7006E9731 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; fallbackIsa = PBXBookmark; @@ -72,11 +74,41 @@ rLen = 0; rLoc = 9223372036854775807; }; + 8B79323221F4B9E7006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BC6025B073B072D006C4272 /* uLawEncode.h */; + name = "uLawEncode.h: 50"; + rLen = 1; + rLoc = 2740; + rType = 0; + vrLen = 1139; + vrLoc = 4128; + }; + 8B79323421F4B9E7006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* uLawEncode.cpp */; + name = "uLawEncode.cpp: 242"; + rLen = 0; + rLoc = 10181; + rType = 0; + vrLen = 1133; + vrLoc = 9051; + }; + 8B79323921F4BA03006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* uLawEncode.cpp */; + name = "uLawEncode.cpp: 242"; + rLen = 0; + rLoc = 10181; + rType = 0; + vrLen = 1159; + vrLoc = 9025; + }; 8BA05A660720730100365D66 /* uLawEncode.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {824, 3276}}"; - sepNavSelRange = "{9497, 258}"; - sepNavVisRange = "{8738, 1941}"; + sepNavIntBoundsRect = "{{0, 0}, {670, 3406}}"; + sepNavSelRange = "{10181, 0}"; + sepNavVisRange = "{9025, 1159}"; sepNavWindowFrame = "{{684, 45}, {816, 833}}"; }; }; @@ -92,7 +124,7 @@ uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {894, 1781}}"; sepNavSelRange = "{2740, 1}"; - sepNavVisRange = "{1993, 1589}"; + sepNavVisRange = "{4128, 1139}"; sepNavWindowFrame = "{{732, 67}, {890, 810}}"; }; }; @@ -110,18 +142,6 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8BE627102159750A00E4E476 /* PlistBookmark */ = { - isa = PlistBookmark; - fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */; - fallbackIsa = PBXBookmark; - isK = 0; - kPath = ( - CFBundleName, - ); - name = /Users/christopherjohnson/Desktop/MacAU/uLawEncode/Info.plist; - rLen = 0; - rLoc = 9223372036854775808; - }; 8D01CCC60486CAD60068D4B7 /* uLawEncode */ = { activeExec = 0; }; diff --git a/plugins/MacAU/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.perspectivev3 index 75813d1..663d11c 100755 --- a/plugins/MacAU/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ <array/> <key>PerspectiveWidths</key> <array> - <integer>841</integer> - <integer>841</integer> + <integer>899</integer> + <integer>899</integer> </array> <key>Perspectives</key> <array> @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -282,7 +280,7 @@ <dict> <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> <array> - <real>288</real> + <real>194</real> </array> <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> <array> @@ -309,7 +307,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {288, 595}}</string> + <string>{{0, 0}, {194, 656}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -319,19 +317,19 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {305, 613}}</string> + <string>{{0, 0}, {211, 674}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> - <real>288</real> + <real>194</real> </array> <key>RubberWindowFrame</key> - <string>637 204 841 654 0 0 1440 878 </string> + <string>406 163 899 715 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> <key>Proportion</key> - <string>305pt</string> + <string>211pt</string> </dict> <dict> <key>Dock</key> @@ -342,7 +340,7 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274A1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>Info.plist</string> + <string>uLawEncode.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -350,14 +348,16 @@ <key>PBXProjectModuleGUID</key> <string>8BD7274B1D46E5A5000176F0</string> <key>PBXProjectModuleLabel</key> - <string>Info.plist</string> + <string>uLawEncode.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B27203D2173B23100396442</string> + <string>8B79323921F4BA03006E9731</string> <key>history</key> <array> - <string>8BE627102159750A00E4E476</string> + <string>8B79323121F4B9E7006E9731</string> + <string>8B79323221F4B9E7006E9731</string> + <string>8B79323421F4B9E7006E9731</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 202}}</string> + <string>{{0, 0}, {683, 549}}</string> <key>RubberWindowFrame</key> - <string>637 204 841 654 0 0 1440 878 </string> + <string>406 163 899 715 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>202pt</string> + <string>549pt</string> </dict> <dict> <key>Proportion</key> - <string>406pt</string> + <string>120pt</string> <key>Tabs</key> <array> <dict> @@ -396,9 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 379}}</string> - <key>RubberWindowFrame</key> - <string>637 204 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {683, 93}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -452,7 +450,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 339}}</string> + <string>{{10, 27}, {683, 93}}</string> + <key>RubberWindowFrame</key> + <string>406 163 899 715 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -461,7 +461,7 @@ </dict> </array> <key>Proportion</key> - <string>531pt</string> + <string>683pt</string> </dict> </array> <key>Name</key> @@ -480,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B27203E2173B23100396442</string> + <string>8B79323A21F4BA03006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B27203F2173B23100396442</string> + <string>8B79323B21F4BA03006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B2720402173B23100396442</string> + <string>8B79323C21F4BA03006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -657,7 +657,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>561230385.17758596</real> + <real>569686531.54984498</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -674,11 +674,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B2720412173B23100396442</string> <string>/Users/christopherjohnson/Desktop/MacAU/uLawEncode/uLawEncode.xcodeproj</string> </array> <key>WindowString</key> - <string>637 204 841 654 0 0 1440 878 </string> + <string>406 163 899 715 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/ADClip7/ADClip7.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/ADClip7/ADClip7.xcodeproj/christopherjohnson.pbxuser index 799d07e..a0c7b52 100755 --- a/plugins/MacVST/ADClip7/ADClip7.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/ADClip7/ADClip7.xcodeproj/christopherjohnson.pbxuser @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 538005027; - PBXWorkspaceStateSaveDate = 538005027; + PBXPerProjectTemplateStateSaveDate = 569707583; + PBXWorkspaceStateSaveDate = 569707583; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -82,9 +82,9 @@ }; 24D8286F09A914000093AEF8 /* ADClip7Proc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {894, 12142}}"; + sepNavIntBoundsRect = "{{0, 0}, {894, 12259}}"; sepNavSelRange = "{31114, 0}"; - sepNavVisRange = "{17851, 2149}"; + sepNavVisRange = "{14613, 1745}"; sepNavWindowFrame = "{{361, 47}, {895, 831}}"; }; }; diff --git a/plugins/MacVST/ADClip7/ADClip7.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/ADClip7/ADClip7.xcodeproj/christopherjohnson.perspectivev3 index c9b5da3..ea91334 100755 --- a/plugins/MacVST/ADClip7/ADClip7.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/ADClip7/ADClip7.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -386,8 +384,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> - <key>RubberWindowFrame</key> - <string>96 265 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -441,7 +437,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {603, 414}}</string> + <key>RubberWindowFrame</key> + <string>96 265 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -469,11 +467,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B79CD1820114E3100E8A187</string> + <string>8B79332C21F50C74006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B79CD1920114E3100E8A187</string> + <string>8B79332D21F50C74006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B79CD1A20114E3100E8A187</string> + <string>8B79332E21F50C74006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +624,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>538005096.68480003</real> + <real>569707636.05000305</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,7 +641,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B79CD2620114E6800E8A187</string> <string>/Users/christopherjohnson/Desktop/MacVST/ADClip7/ADClip7.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/ADClip7/source/ADClip7.cpp b/plugins/MacVST/ADClip7/source/ADClip7.cpp index fb6d6c6..7ebc817 100755 --- a/plugins/MacVST/ADClip7/source/ADClip7.cpp +++ b/plugins/MacVST/ADClip7/source/ADClip7.cpp @@ -30,11 +30,8 @@ ADClip7::ADClip7(audioMasterCallback audioMaster) : iirLowsBL = 0.0; iirLowsBR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/ADClip7/source/ADClip7.h b/plugins/MacVST/ADClip7/source/ADClip7.h index f20d3fb..f0cde6c 100755 --- a/plugins/MacVST/ADClip7/source/ADClip7.h +++ b/plugins/MacVST/ADClip7/source/ADClip7.h @@ -55,11 +55,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff long double lastSampleL; long double lastSampleR; diff --git a/plugins/MacVST/ADClip7/source/ADClip7Proc.cpp b/plugins/MacVST/ADClip7/source/ADClip7Proc.cpp index 2705d61..abc9909 100755 --- a/plugins/MacVST/ADClip7/source/ADClip7Proc.cpp +++ b/plugins/MacVST/ADClip7/source/ADClip7Proc.cpp @@ -17,10 +17,8 @@ void ADClip7::processReplacing(float **inputs, float **outputs, VstInt32 sampleF double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + long double fpNew = 1.0 - fpOld; double inputGain = pow(10.0,(A*18.0)/20.0); double softness = B * fpNew; double hardness = 1.0 - softness; @@ -449,25 +447,14 @@ void ADClip7::processReplacing(float **inputs, float **outputs, VstInt32 sampleF if (inputSampleR < -refclipR) inputSampleR = -refclipR; //final iron bar - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -489,10 +476,8 @@ void ADClip7::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + long double fpNew = 1.0 - fpOld; double inputGain = pow(10.0,(A*18.0)/20.0); double softness = B * fpNew; double hardness = 1.0 - softness; @@ -922,25 +907,16 @@ void ADClip7::processDoubleReplacing(double **inputs, double **outputs, VstInt32 if (inputSampleR < -refclipR) inputSampleR = -refclipR; //final iron bar - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/ADT/ADT.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/ADT/ADT.xcodeproj/christopherjohnson.pbxuser index 883fa84..8d10b59 100755 --- a/plugins/MacVST/ADT/ADT.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/ADT/ADT.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 561773367; - PBXWorkspaceStateSaveDate = 561773367; + PBXPerProjectTemplateStateSaveDate = 569707657; + PBXWorkspaceStateSaveDate = 569707657; }; perUserProjectItems = { - 8B15DB9A21743644007AD769 /* PBXTextBookmark */ = 8B15DB9A21743644007AD769 /* PBXTextBookmark */; - 8B15DD60217BFB50007AD769 /* PBXTextBookmark */ = 8B15DD60217BFB50007AD769 /* PBXTextBookmark */; + 8B79334D21F50CB2006E9731 /* PBXTextBookmark */ = 8B79334D21F50CB2006E9731 /* PBXTextBookmark */; + 8B79334E21F50CB2006E9731 /* PBXTextBookmark */ = 8B79334E21F50CB2006E9731 /* PBXTextBookmark */; + 8B79334F21F50CB2006E9731 /* PBXTextBookmark */ = 8B79334F21F50CB2006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -62,9 +63,9 @@ }; 2407DEB6089929BA00EB68BF /* ADT.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {740, 2093}}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 2002}}"; sepNavSelRange = "{4290, 0}"; - sepNavVisRange = "{3343, 2609}"; + sepNavVisRange = "{4100, 345}"; sepNavWindowFrame = "{{735, 48}, {705, 830}}"; }; }; @@ -86,9 +87,9 @@ }; 24D8286F09A914000093AEF8 /* ADTProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {649, 4875}}"; + sepNavIntBoundsRect = "{{0, 0}, {782, 4446}}"; sepNavSelRange = "{7166, 0}"; - sepNavVisRange = "{7098, 143}"; + sepNavVisRange = "{5269, 841}"; sepNavWindowFrame = "{{129, 47}, {895, 831}}"; }; }; @@ -106,25 +107,35 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B15DB9A21743644007AD769 /* PBXTextBookmark */ = { + 8B79334D21F50CB2006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2407DEB6089929BA00EB68BF /* ADT.cpp */; + name = "ADT.cpp: 121"; + rLen = 0; + rLoc = 4290; + rType = 0; + vrLen = 345; + vrLoc = 4100; + }; + 8B79334E21F50CB2006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* ADTProc.cpp */; - name = "ADTProc.cpp: 207"; + name = "ADTProc.cpp: 213"; rLen = 0; rLoc = 7166; rType = 0; - vrLen = 178; - vrLoc = 7098; + vrLen = 256; + vrLoc = 7031; }; - 8B15DD60217BFB50007AD769 /* PBXTextBookmark */ = { + 8B79334F21F50CB2006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* ADTProc.cpp */; - name = "ADTProc.cpp: 207"; + name = "ADTProc.cpp: 213"; rLen = 0; rLoc = 7166; rType = 0; - vrLen = 143; - vrLoc = 7098; + vrLen = 841; + vrLoc = 5269; }; 8D01CCC60486CAD60068D4B7 /* ADT */ = { activeExec = 0; diff --git a/plugins/MacVST/ADT/ADT.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/ADT/ADT.xcodeproj/christopherjohnson.perspectivev3 index 1eef004..05aaf68 100755 --- a/plugins/MacVST/ADT/ADT.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/ADT/ADT.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>5</integer> + <integer>6</integer> <integer>4</integer> <integer>0</integer> </array> @@ -351,10 +351,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B15DD60217BFB50007AD769</string> + <string>8B79334F21F50CB2006E9731</string> <key>history</key> <array> - <string>8B15DB9A21743644007AD769</string> + <string>8B79334D21F50CB2006E9731</string> + <string>8B79334E21F50CB2006E9731</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 117}}</string> + <string>{{0, 0}, {603, 322}}</string> <key>RubberWindowFrame</key> <string>162 338 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>117pt</string> + <string>322pt</string> </dict> <dict> <key>Proportion</key> - <string>324pt</string> + <string>119pt</string> <key>Tabs</key> <array> <dict> @@ -393,7 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 297}}</string> + <string>{{10, 27}, {603, 92}}</string> <key>RubberWindowFrame</key> <string>162 338 810 487 0 0 1440 878 </string> </dict> @@ -477,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B15DD52217BFB50007AD769</string> + <string>8B79335021F50CB2006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B15DD53217BFB50007AD769</string> + <string>8B79335121F50CB2006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B15DD54217BFB50007AD769</string> + <string>8B79335221F50CB2006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>561773392.88148701</real> + <real>569707698.51112998</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,7 +652,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B15DD55217BFB50007AD769</string> <string>/Users/christopherjohnson/Desktop/MacVST/ADT/ADT.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/ADT/source/ADTProc.cpp b/plugins/MacVST/ADT/source/ADTProc.cpp index f963f2f..74d23dd 100755 --- a/plugins/MacVST/ADT/source/ADTProc.cpp +++ b/plugins/MacVST/ADT/source/ADTProc.cpp @@ -156,18 +156,14 @@ void ADT::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame if (output < 1.0) {inputSampleL *= output; inputSampleR *= output;} - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -177,12 +173,6 @@ void ADT::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void ADT::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -334,18 +324,16 @@ void ADT::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam if (output < 1.0) {inputSampleL *= output; inputSampleR *= output;} - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -355,10 +343,4 @@ void ADT::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacVST/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.pbxuser index 9ff059e..56e51e7 100755 --- a/plugins/MacVST/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.pbxuser @@ -49,11 +49,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528459055; - PBXWorkspaceStateSaveDate = 528459055; + PBXPerProjectTemplateStateSaveDate = 569707744; + PBXWorkspaceStateSaveDate = 569707744; }; perUserProjectItems = { - 8B1949391F0F1A0500C5FAB9 /* PBXTextBookmark */ = 8B1949391F0F1A0500C5FAB9 /* PBXTextBookmark */; + 8B79338421F50CE8006E9731 /* PBXTextBookmark */ = 8B79338421F50CE8006E9731 /* PBXTextBookmark */; 8B9D774E1F7FA54A007AB60F /* PBXTextBookmark */ = 8B9D774E1F7FA54A007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -70,7 +70,7 @@ }; 245463B80991757100464AD3 /* AQuickVoiceClip.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 1976}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 1690}}"; sepNavSelRange = "{3742, 0}"; sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{514, 47}, {895, 831}}"; @@ -106,7 +106,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B1949391F0F1A0500C5FAB9 /* PBXTextBookmark */ = { + 8B79338421F50CE8006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 245463B80991757100464AD3 /* AQuickVoiceClip.h */; name = "AQuickVoiceClip.h: 117"; diff --git a/plugins/MacVST/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.perspectivev3 index 57c47dc..ce95340 100755 --- a/plugins/MacVST/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -351,10 +349,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D774E1F7FA54A007AB60F</string> + <string>8B79338421F50CE8006E9731</string> <key>history</key> <array> - <string>8B1949391F0F1A0500C5FAB9</string> + <string>8B9D774E1F7FA54A007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -394,8 +392,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> - <key>RubberWindowFrame</key> - <string>384 225 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -449,7 +445,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 401}}</string> + <string>{{10, 27}, {603, 414}}</string> + <key>RubberWindowFrame</key> + <string>384 225 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -477,11 +475,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D774F1F7FA54A007AB60F</string> + <string>8B79338521F50CE8006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D77501F7FA54A007AB60F</string> + <string>8B79338621F50CE8006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D77511F7FA54A007AB60F</string> + <string>8B79338721F50CE8006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +632,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528459082.86255097</real> + <real>569707752.54956698</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,7 +649,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D77521F7FA54A007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/AQuickVoiceClip/AQuickVoiceClip.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClip.cpp b/plugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClip.cpp index 9b5ea81..9b84221 100755 --- a/plugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClip.cpp +++ b/plugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClip.cpp @@ -57,11 +57,8 @@ AQuickVoiceClip::AQuickVoiceClip(audioMasterCallback audioMaster) : ataK4 = 0.886; //remainder of interpolated dry, adds up to 1.0 ataK5 = 0.431; //subtract this much prev. diff sample, brightens. 0.431 becomes flat - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClip.h b/plugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClip.h index dc8f5fa..40cfab2 100755 --- a/plugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClip.h +++ b/plugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClip.h @@ -115,11 +115,8 @@ private: double RiirSampleD; bool flip; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClipProc.cpp b/plugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClipProc.cpp index 69dc283..cc282b6 100755 --- a/plugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClipProc.cpp +++ b/plugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClipProc.cpp @@ -41,9 +41,6 @@ void AQuickVoiceClip::processReplacing(float **inputs, float **outputs, VstInt32 double RoutputSample; double RdrySample; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -410,25 +407,14 @@ void AQuickVoiceClip::processReplacing(float **inputs, float **outputs, VstInt32 if (LlpDepth < 0.0) LlpDepth = 0.0; if (RlpDepth < 0.0) RlpDepth = 0.0; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither inputSampleL *= (1.0-LmaxRecent); inputSampleR *= (1.0-RmaxRecent); @@ -487,9 +473,6 @@ void AQuickVoiceClip::processDoubleReplacing(double **inputs, double **outputs, double RoutputSample; double RdrySample; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -856,25 +839,16 @@ void AQuickVoiceClip::processDoubleReplacing(double **inputs, double **outputs, if (LlpDepth < 0.0) LlpDepth = 0.0; if (RlpDepth < 0.0) RlpDepth = 0.0; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither inputSampleL *= (1.0-LmaxRecent); inputSampleR *= (1.0-RmaxRecent); diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/christopherjohnson.pbxuser index 6146ccc..de2e9ea 100644..100755 --- a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 539484698; - PBXWorkspaceStateSaveDate = 539484698; + PBXPerProjectTemplateStateSaveDate = 569706438; + PBXWorkspaceStateSaveDate = 569706438; }; perUserProjectItems = { - 8BCA6F6E2027E22B00D92BAD /* PBXTextBookmark */ = 8BCA6F6E2027E22B00D92BAD /* PBXTextBookmark */; - 8BCA6F6F2027E22B00D92BAD /* PBXTextBookmark */ = 8BCA6F6F2027E22B00D92BAD /* PBXTextBookmark */; + 8B7932FD21F507DF006E9731 /* XCBuildMessageTextBookmark */ = 8B7932FD21F507DF006E9731 /* XCBuildMessageTextBookmark */; + 8B79330721F50B3A006E9731 /* PBXTextBookmark */ = 8B79330721F50B3A006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -63,16 +63,16 @@ 2407DEB6089929BA00EB68BF /* Acceleration.cpp */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {848, 1820}}"; - sepNavSelRange = "{671, 0}"; - sepNavVisRange = "{2909, 2099}"; + sepNavSelRange = "{681, 92}"; + sepNavVisRange = "{0, 2007}"; sepNavWindowFrame = "{{12, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* Acceleration.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 1157}}"; - sepNavSelRange = "{2833, 0}"; - sepNavVisRange = "{720, 2154}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 1118}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{661, 2147}"; sepNavWindowFrame = "{{20, 47}, {895, 831}}"; }; }; @@ -86,9 +86,9 @@ }; 24D8286F09A914000093AEF8 /* AccelerationProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 4277}}"; - sepNavSelRange = "{5841, 0}"; - sepNavVisRange = "{5761, 137}"; + sepNavIntBoundsRect = "{{0, 0}, {621, 3822}}"; + sepNavSelRange = "{9506, 0}"; + sepNavVisRange = "{4212, 165}"; sepNavWindowFrame = "{{25, 47}, {895, 831}}"; }; }; @@ -106,25 +106,24 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8BCA6F6E2027E22B00D92BAD /* PBXTextBookmark */ = { + 8B7932FD21F507DF006E9731 /* XCBuildMessageTextBookmark */ = { isa = PBXTextBookmark; + comments = "'Float32' was not declared in this scope"; fRef = 24D8286F09A914000093AEF8 /* AccelerationProc.cpp */; - name = "AccelerationProc.cpp: 196"; - rLen = 0; - rLoc = 5841; - rType = 0; - vrLen = 137; - vrLoc = 5761; + fallbackIsa = XCBuildMessageTextBookmark; + rLen = 1; + rLoc = 135; + rType = 1; }; - 8BCA6F6F2027E22B00D92BAD /* PBXTextBookmark */ = { + 8B79330721F50B3A006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* AccelerationProc.cpp */; - name = "AccelerationProc.cpp: 196"; + name = "AccelerationProc.cpp: 298"; rLen = 0; - rLoc = 5841; + rLoc = 9506; rType = 0; - vrLen = 137; - vrLoc = 5761; + vrLen = 165; + vrLoc = 4212; }; 8D01CCC60486CAD60068D4B7 /* Acceleration */ = { activeExec = 0; diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/christopherjohnson.perspectivev3 index c17455b..6330e85 100644..100755 --- a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/christopherjohnson.perspectivev3 @@ -323,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>9 374 810 487 0 0 1440 878 </string> + <string>7 375 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BCA6F6F2027E22B00D92BAD</string> + <string>8B79330721F50B3A006E9731</string> <key>history</key> <array> - <string>8BCA6F6E2027E22B00D92BAD</string> + <string>8B7932FD21F507DF006E9731</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 117}}</string> + <string>{{0, 0}, {603, 86}}</string> <key>RubberWindowFrame</key> - <string>9 374 810 487 0 0 1440 878 </string> + <string>7 375 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> @@ -393,9 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 297}}</string> - <key>RubberWindowFrame</key> - <string>9 374 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 328}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -449,7 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {603, 328}}</string> + <key>RubberWindowFrame</key> + <string>7 375 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BCA6F702027E22B00D92BAD</string> + <string>8B7932EA21F507C8006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BCA6F712027E22B00D92BAD</string> + <string>8B7932EB21F507C8006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BCA6F722027E22B00D92BAD</string> + <string>8B7932EC21F507C8006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>539484715.52542996</real> + <real>569707322.35574102</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,11 +651,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BCA6F732027E22B00D92BAD</string> + <string>8B79330821F50B3A006E9731</string> <string>/Users/christopherjohnson/Desktop/MacVST/Acceleration/Acceleration.xcodeproj</string> </array> <key>WindowString</key> - <string>9 374 810 487 0 0 1440 878 </string> + <string>7 375 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/contents.xcworkspacedata index a80c038..a80c038 100644..100755 --- a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate Binary files differindex 5c38f94..5c38f94 100644..100755 --- a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate +++ b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate Binary files differindex 314de0f..314de0f 100644..100755 --- a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate +++ b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/spiadmin.mode1v3 index c572326..c572326 100644..100755 --- a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/spiadmin.mode1v3 +++ b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/spiadmin.mode1v3 diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/spiadmin.pbxuser index df94780..df94780 100644..100755 --- a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/spiadmin.pbxuser +++ b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/spiadmin.pbxuser diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme index 8ee693f..8ee693f 100644..100755 --- a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme +++ b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist index 5bccbcb..5bccbcb 100644..100755 --- a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist index a7bdd62..a7bdd62 100644..100755 --- a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme index 0df2de4..0df2de4 100644..100755 --- a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme +++ b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme diff --git a/plugins/MacVST/Acceleration/source/Acceleration.cpp b/plugins/MacVST/Acceleration/source/Acceleration.cpp index f20c8f2..b2721d9 100755 --- a/plugins/MacVST/Acceleration/source/Acceleration.cpp +++ b/plugins/MacVST/Acceleration/source/Acceleration.cpp @@ -23,11 +23,8 @@ Acceleration::Acceleration(audioMasterCallback audioMaster) : o1R = o2R = o3R = 0.0; m1R = m2R = desR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Acceleration/source/Acceleration.h b/plugins/MacVST/Acceleration/source/Acceleration.h index a152e25..02a3760 100755 --- a/plugins/MacVST/Acceleration/source/Acceleration.h +++ b/plugins/MacVST/Acceleration/source/Acceleration.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double ataLastOutL; double s1L; diff --git a/plugins/MacVST/Acceleration/source/AccelerationProc.cpp b/plugins/MacVST/Acceleration/source/AccelerationProc.cpp index 4785e37..0151dbe 100755 --- a/plugins/MacVST/Acceleration/source/AccelerationProc.cpp +++ b/plugins/MacVST/Acceleration/source/AccelerationProc.cpp @@ -17,9 +17,6 @@ void Acceleration::processReplacing(float **inputs, float **outputs, VstInt32 sa double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double intensity = pow(A,3)*(32/overallscale); double wet = B; @@ -135,25 +132,14 @@ void Acceleration::processReplacing(float **inputs, float **outputs, VstInt32 sa inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -175,9 +161,6 @@ void Acceleration::processDoubleReplacing(double **inputs, double **outputs, Vst double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double intensity = pow(A,3)*(32/overallscale); double wet = B; @@ -293,25 +276,16 @@ void Acceleration::processDoubleReplacing(double **inputs, double **outputs, Vst inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Air/Air.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Air/Air.xcodeproj/christopherjohnson.pbxuser index f47bee4..1d6d131 100755 --- a/plugins/MacVST/Air/Air.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Air/Air.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* Air */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528459012; - PBXWorkspaceStateSaveDate = 528459012; + PBXPerProjectTemplateStateSaveDate = 569707718; + PBXWorkspaceStateSaveDate = 569707718; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* Air */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/Air/Air.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Air/Air.xcodeproj/christopherjohnson.perspectivev3 index 51c8a58..fc2db00 100755 --- a/plugins/MacVST/Air/Air.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Air/Air.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -323,7 +321,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>630 108 810 487 0 0 1440 878 </string> + <string>172 221 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -362,7 +360,7 @@ <key>Frame</key> <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> - <string>630 108 810 487 0 0 1440 878 </string> + <string>172 221 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -386,8 +384,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> - <key>RubberWindowFrame</key> - <string>630 108 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -441,7 +437,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {603, 414}}</string> + <key>RubberWindowFrame</key> + <string>172 221 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -469,11 +467,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D77391F7FA524007AB60F</string> + <string>8B79336521F50CD1006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D773A1F7FA524007AB60F</string> + <string>8B79336621F50CD1006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D773B1F7FA524007AB60F</string> + <string>8B79336721F50CD1006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +624,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528459044.96789801</real> + <real>569707729.79363501</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,11 +641,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D773C1F7FA524007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/Air/Air.xcodeproj</string> </array> <key>WindowString</key> - <string>630 108 810 487 0 0 1440 878 </string> + <string>172 221 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/Air/Air.xcodeproj/project.pbxproj b/plugins/MacVST/Air/Air.xcodeproj/project.pbxproj index 014f5ac..6f03014 100755 --- a/plugins/MacVST/Air/Air.xcodeproj/project.pbxproj +++ b/plugins/MacVST/Air/Air.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* Air */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "Air" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* Air */, + 8D01CCC60486CAD60068D4B7 /* AudioUnit */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/Air/source/Air.cpp b/plugins/MacVST/Air/source/Air.cpp index ebe8adc..ea52c26 100755 --- a/plugins/MacVST/Air/source/Air.cpp +++ b/plugins/MacVST/Air/source/Air.cpp @@ -61,11 +61,8 @@ Air::Air(audioMasterCallback audioMaster) : D = 0.0; E = 1.0; F = 1.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Air/source/Air.h b/plugins/MacVST/Air/source/Air.h index 00c0b76..a713cf2 100755 --- a/plugins/MacVST/Air/source/Air.h +++ b/plugins/MacVST/Air/source/Air.h @@ -100,11 +100,8 @@ private: bool flop; int count; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/Air/source/AirProc.cpp b/plugins/MacVST/Air/source/AirProc.cpp index f73e7d8..f5eb39f 100755 --- a/plugins/MacVST/Air/source/AirProc.cpp +++ b/plugins/MacVST/Air/source/AirProc.cpp @@ -22,9 +22,6 @@ void Air::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame double wet = F; double dry = 1.0-wet; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -260,25 +257,14 @@ void Air::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -305,9 +291,6 @@ void Air::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam double wet = F; double dry = 1.0-wet; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -543,25 +526,16 @@ void Air::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.pbxuser index e6a5761..5640742 100755 --- a/plugins/MacVST/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 546567340; - PBXWorkspaceStateSaveDate = 546567340; + PBXPerProjectTemplateStateSaveDate = 569718087; + PBXWorkspaceStateSaveDate = 569718087; }; perUserProjectItems = { + 8B7933A421F53550006E9731 /* PBXTextBookmark */ = 8B7933A421F53550006E9731 /* PBXTextBookmark */; 8BC5CF342093F49F0058B257 /* PBXTextBookmark */ = 8BC5CF342093F49F0058B257 /* PBXTextBookmark */; - 8BC5CF692093F4CF0058B257 /* PBXTextBookmark */ = 8BC5CF692093F4CF0058B257 /* PBXTextBookmark */; 8BC5CF6A2093F4CF0058B257 /* PBXTextBookmark */ = 8BC5CF6A2093F4CF0058B257 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -87,9 +87,9 @@ }; 24D8286F09A914000093AEF8 /* AtmosphereBussProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {670, 7397}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 6929}}"; sepNavSelRange = "{13569, 0}"; - sepNavVisRange = "{1515, 154}"; + sepNavVisRange = "{1538, 131}"; sepNavWindowFrame = "{{15, 47}, {895, 831}}"; }; }; @@ -107,6 +107,16 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; + 8B7933A421F53550006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 24D8286F09A914000093AEF8 /* AtmosphereBussProc.cpp */; + name = "AtmosphereBussProc.cpp: 378"; + rLen = 0; + rLoc = 13569; + rType = 0; + vrLen = 131; + vrLoc = 1538; + }; 8BC5CF342093F49F0058B257 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 2407DEB6089929BA00EB68BF /* AtmosphereBuss.cpp */; @@ -117,16 +127,6 @@ vrLen = 421; vrLoc = 2085; }; - 8BC5CF692093F4CF0058B257 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 24D8286F09A914000093AEF8 /* AtmosphereBussProc.cpp */; - name = "AtmosphereBussProc.cpp: 379"; - rLen = 0; - rLoc = 13569; - rType = 0; - vrLen = 154; - vrLoc = 1515; - }; 8BC5CF6A2093F4CF0058B257 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* AtmosphereBussProc.cpp */; diff --git a/plugins/MacVST/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.perspectivev3 index 9bbfe98..16bcc2b 100755 --- a/plugins/MacVST/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.perspectivev3 @@ -349,11 +349,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BC5CF6A2093F4CF0058B257</string> + <string>8B7933A421F53550006E9731</string> <key>history</key> <array> <string>8BC5CF342093F49F0058B257</string> - <string>8BC5CF692093F4CF0058B257</string> + <string>8BC5CF6A2093F4CF0058B257</string> </array> </dict> <key>SplitCount</key> @@ -367,18 +367,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 117}}</string> + <string>{{0, 0}, {603, 102}}</string> <key>RubberWindowFrame</key> <string>11 221 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>117pt</string> + <string>102pt</string> </dict> <dict> <key>Proportion</key> - <string>324pt</string> + <string>339pt</string> <key>Tabs</key> <array> <dict> @@ -394,7 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 297}}</string> + <string>{{10, 27}, {603, 312}}</string> <key>RubberWindowFrame</key> <string>11 221 810 487 0 0 1440 878 </string> </dict> @@ -478,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BC5CF6B2093F4CF0058B257</string> + <string>8B7933A521F53550006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BC5CF6C2093F4CF0058B257</string> + <string>8B7933A621F53550006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BC5CF6D2093F4CF0058B257</string> + <string>8B7933A721F53550006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>546567375.58979297</real> + <real>569718096.20929098</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,7 +652,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>/Users/christopherjohnson/Desktop/AtmosphereBuss/AtmosphereBuss.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/AtmosphereBuss/AtmosphereBuss.xcodeproj</string> </array> <key>WindowString</key> <string>11 221 810 487 0 0 1440 878 </string> diff --git a/plugins/MacVST/AtmosphereBuss/source/AtmosphereBussProc.cpp b/plugins/MacVST/AtmosphereBuss/source/AtmosphereBussProc.cpp index 6530a7e..16d7a31 100755 --- a/plugins/MacVST/AtmosphereBuss/source/AtmosphereBussProc.cpp +++ b/plugins/MacVST/AtmosphereBuss/source/AtmosphereBussProc.cpp @@ -13,7 +13,6 @@ void AtmosphereBuss::processReplacing(float **inputs, float **outputs, VstInt32 float* in2 = inputs[1]; float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); @@ -250,18 +249,14 @@ void AtmosphereBuss::processReplacing(float **inputs, float **outputs, VstInt32 lastSampleAR = drySampleR; //store the raw R input sample again for use next time - //noise shaping to 32-bit floating point - fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -271,12 +266,6 @@ void AtmosphereBuss::processReplacing(float **inputs, float **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void AtmosphereBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -285,7 +274,6 @@ void AtmosphereBuss::processDoubleReplacing(double **inputs, double **outputs, V double* in2 = inputs[1]; double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); @@ -522,18 +510,16 @@ void AtmosphereBuss::processDoubleReplacing(double **inputs, double **outputs, V lastSampleAR = drySampleR; //store the raw R input sample again for use next time - //noise shaping to 64-bit floating point - fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -543,10 +529,4 @@ void AtmosphereBuss::processDoubleReplacing(double **inputs, double **outputs, V *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. }
\ No newline at end of file diff --git a/plugins/MacVST/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.pbxuser index f90657e..2f73690 100755 --- a/plugins/MacVST/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 546562888; - PBXWorkspaceStateSaveDate = 546562888; + PBXPerProjectTemplateStateSaveDate = 569718117; + PBXWorkspaceStateSaveDate = 569718117; }; perUserProjectItems = { - 8BC5CF292093F3420058B257 /* PBXTextBookmark */ = 8BC5CF292093F3420058B257 /* PBXTextBookmark */; - 8BC5CF5A2093F4C50058B257 /* PBXTextBookmark */ = 8BC5CF5A2093F4C50058B257 /* PBXTextBookmark */; + 8B7933C421F5356E006E9731 /* PBXTextBookmark */ = 8B7933C421F5356E006E9731 /* PBXTextBookmark */; + 8B904B70209D2FF5008CBAD8 /* PBXTextBookmark */ = 8B904B70209D2FF5008CBAD8 /* PBXTextBookmark */; + 8B904BB3209D3409008CBAD8 /* PBXTextBookmark */ = 8B904BB3209D3409008CBAD8 /* PBXTextBookmark */; + 8BFBE952209D206700E1438C /* PBXTextBookmark */ = 8BFBE952209D206700E1438C /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -62,17 +64,17 @@ }; 2407DEB6089929BA00EB68BF /* AtmosphereChannel.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {754, 1716}}"; + sepNavIntBoundsRect = "{{0, 0}, {754, 1976}}"; sepNavSelRange = "{4879, 0}"; - sepNavVisRange = "{2108, 329}"; + sepNavVisRange = "{2134, 303}"; sepNavWindowFrame = "{{291, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* AtmosphereChannel.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 1391}}"; + sepNavIntBoundsRect = "{{0, 0}, {817, 1378}}"; sepNavSelRange = "{2886, 0}"; - sepNavVisRange = "{0, 2464}"; + sepNavVisRange = "{2348, 116}"; sepNavWindowFrame = "{{20, 47}, {895, 831}}"; }; }; @@ -86,10 +88,10 @@ }; 24D8286F09A914000093AEF8 /* AtmosphereChannelProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 7046}}"; - sepNavSelRange = "{10357, 9646}"; - sepNavVisRange = "{9730, 1796}"; - sepNavWindowFrame = "{{570, 47}, {895, 831}}"; + sepNavIntBoundsRect = "{{0, 0}, {747, 6825}}"; + sepNavSelRange = "{9679, 0}"; + sepNavVisRange = "{9613, 109}"; + sepNavWindowFrame = "{{545, 45}, {895, 831}}"; }; }; 8B02375E1D42B1C400E1E8C8 /* Source Control */ = { @@ -106,25 +108,45 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8BC5CF292093F3420058B257 /* PBXTextBookmark */ = { + 8B7933C421F5356E006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 2407DEB6089929BA00EB68BF /* AtmosphereChannel.cpp */; - name = "AtmosphereChannel.cpp: 146"; + fRef = 24D8286F09A914000093AEF8 /* AtmosphereChannelProc.cpp */; + name = "AtmosphereChannelProc.cpp: 266"; rLen = 0; - rLoc = 4879; + rLoc = 9679; + rType = 0; + vrLen = 109; + vrLoc = 9613; + }; + 8B904B70209D2FF5008CBAD8 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 245463B80991757100464AD3 /* AtmosphereChannel.h */; + name = "AtmosphereChannel.h: 73"; + rLen = 0; + rLoc = 2886; + rType = 0; + vrLen = 116; + vrLoc = 2348; + }; + 8B904BB3209D3409008CBAD8 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 24D8286F09A914000093AEF8 /* AtmosphereChannelProc.cpp */; + name = "AtmosphereChannelProc.cpp: 262"; + rLen = 0; + rLoc = 9679; rType = 0; - vrLen = 329; - vrLoc = 2108; + vrLen = 52; + vrLoc = 9647; }; - 8BC5CF5A2093F4C50058B257 /* PBXTextBookmark */ = { + 8BFBE952209D206700E1438C /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 2407DEB6089929BA00EB68BF /* AtmosphereChannel.cpp */; name = "AtmosphereChannel.cpp: 146"; rLen = 0; rLoc = 4879; rType = 0; - vrLen = 329; - vrLoc = 2108; + vrLen = 303; + vrLoc = 2134; }; 8D01CCC60486CAD60068D4B7 /* AtmosphereChannel */ = { activeExec = 0; diff --git a/plugins/MacVST/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.perspectivev3 index 3cbeff8..75a73d9 100755 --- a/plugins/MacVST/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.perspectivev3 @@ -256,6 +256,8 @@ <key>Layout</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -298,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>7</integer> + <integer>6</integer> <integer>4</integer> <integer>0</integer> </array> @@ -321,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>17 313 810 487 0 0 1440 878 </string> + <string>630 297 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -337,7 +339,7 @@ <key>PBXProjectModuleGUID</key> <string>8B0237581D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>AtmosphereChannel.cpp</string> + <string>AtmosphereChannelProc.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -345,14 +347,16 @@ <key>PBXProjectModuleGUID</key> <string>8B0237591D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>AtmosphereChannel.cpp</string> + <string>AtmosphereChannelProc.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BC5CF5A2093F4C50058B257</string> + <string>8B7933C421F5356E006E9731</string> <key>history</key> <array> - <string>8BC5CF292093F3420058B257</string> + <string>8BFBE952209D206700E1438C</string> + <string>8B904B70209D2FF5008CBAD8</string> + <string>8B904BB3209D3409008CBAD8</string> </array> </dict> <key>SplitCount</key> @@ -366,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 117}}</string> + <string>{{0, 0}, {603, 51}}</string> <key>RubberWindowFrame</key> - <string>17 313 810 487 0 0 1440 878 </string> + <string>630 297 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>117pt</string> + <string>51pt</string> </dict> <dict> <key>Proportion</key> - <string>324pt</string> + <string>390pt</string> <key>Tabs</key> <array> <dict> @@ -391,7 +395,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 297}}</string> + <string>{{10, 27}, {603, 363}}</string> + <key>RubberWindowFrame</key> + <string>630 297 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -446,8 +452,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 297}}</string> - <key>RubberWindowFrame</key> - <string>17 313 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -475,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BC5CECB2093E3520058B257</string> + <string>8B7933C521F5356E006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BC5CECC2093E3520058B257</string> + <string>8B7933C621F5356E006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BC5CECD2093E3520058B257</string> + <string>8B7933C721F5356E006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -632,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>546567365.81376398</real> + <real>569718126.81761706</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -649,10 +653,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>/Users/christopherjohnson/Desktop/AtmosphereChannel/AtmosphereChannel.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/AtmosphereChannel/AtmosphereChannel.xcodeproj</string> </array> <key>WindowString</key> - <string>17 313 810 487 0 0 1440 878 </string> + <string>630 297 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/AtmosphereChannel/source/AtmosphereChannelProc.cpp b/plugins/MacVST/AtmosphereChannel/source/AtmosphereChannelProc.cpp index 97038e8..bbdf44c 100755 --- a/plugins/MacVST/AtmosphereChannel/source/AtmosphereChannelProc.cpp +++ b/plugins/MacVST/AtmosphereChannel/source/AtmosphereChannelProc.cpp @@ -13,7 +13,6 @@ void AtmosphereChannel::processReplacing(float **inputs, float **outputs, VstInt float* in2 = inputs[1]; float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); @@ -245,18 +244,14 @@ void AtmosphereChannel::processReplacing(float **inputs, float **outputs, VstInt lastSampleAR = drySampleR; //store the raw R input sample again for use next time - //noise shaping to 32-bit floating point - fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -266,12 +261,6 @@ void AtmosphereChannel::processReplacing(float **inputs, float **outputs, VstInt *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void AtmosphereChannel::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -280,7 +269,6 @@ void AtmosphereChannel::processDoubleReplacing(double **inputs, double **outputs double* in2 = inputs[1]; double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); @@ -512,18 +500,16 @@ void AtmosphereChannel::processDoubleReplacing(double **inputs, double **outputs lastSampleAR = drySampleR; //store the raw R input sample again for use next time - //noise shaping to 64-bit floating point - fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -533,10 +519,4 @@ void AtmosphereChannel::processDoubleReplacing(double **inputs, double **outputs *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. }
\ No newline at end of file diff --git a/plugins/MacVST/Aura/Aura.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Aura/Aura.xcodeproj/christopherjohnson.pbxuser index 37c0976..ae8beb8 100755 --- a/plugins/MacVST/Aura/Aura.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Aura/Aura.xcodeproj/christopherjohnson.pbxuser @@ -49,11 +49,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 546126715; - PBXWorkspaceStateSaveDate = 546126715; + PBXPerProjectTemplateStateSaveDate = 569718158; + PBXWorkspaceStateSaveDate = 569718158; }; perUserProjectItems = { - 8BC5CC52208D3DCE0058B257 /* PBXTextBookmark */ = 8BC5CC52208D3DCE0058B257 /* PBXTextBookmark */; + 8B7933E421F53595006E9731 /* PBXTextBookmark */ = 8B7933E421F53595006E9731 /* PBXTextBookmark */; 8BC5CEBA208D734A0058B257 /* PBXTextBookmark */ = 8BC5CEBA208D734A0058B257 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -86,9 +86,9 @@ }; 24D8286F09A914000093AEF8 /* AuraProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 6305}}"; - sepNavSelRange = "{18235, 0}"; - sepNavVisRange = "{17720, 259}"; + sepNavIntBoundsRect = "{{0, 0}, {621, 5967}}"; + sepNavSelRange = "{17733, 0}"; + sepNavVisRange = "{17681, 52}"; sepNavWindowFrame = "{{7, 47}, {877, 831}}"; }; }; @@ -106,24 +106,24 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8BC5CC52208D3DCE0058B257 /* PBXTextBookmark */ = { + 8B7933E421F53595006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* AuraProc.cpp */; - name = "AuraProc.cpp: 446"; + name = "AuraProc.cpp: 450"; rLen = 0; - rLoc = 14170; + rLoc = 17733; rType = 0; - vrLen = 285; - vrLoc = 17613; + vrLen = 52; + vrLoc = 17681; }; 8BC5CEBA208D734A0058B257 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* AuraProc.cpp */; name = "AuraProc.cpp: 475"; rLen = 0; - rLoc = 18235; + rLoc = 17733; rType = 0; - vrLen = 259; + vrLen = 13; vrLoc = 17720; }; 8D01CCC60486CAD60068D4B7 /* Aura */ = { diff --git a/plugins/MacVST/Aura/Aura.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Aura/Aura.xcodeproj/christopherjohnson.perspectivev3 index bc4d2cf..7f62a6d 100755 --- a/plugins/MacVST/Aura/Aura.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Aura/Aura.xcodeproj/christopherjohnson.perspectivev3 @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BC5CEBA208D734A0058B257</string> + <string>8B7933E421F53595006E9731</string> <key>history</key> <array> - <string>8BC5CC52208D3DCE0058B257</string> + <string>8BC5CEBA208D734A0058B257</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 132}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> <string>36 294 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -393,7 +393,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {603, 297}}</string> + <key>RubberWindowFrame</key> + <string>36 294 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -448,8 +450,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 282}}</string> - <key>RubberWindowFrame</key> - <string>36 294 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BC5CC5D208D3E220058B257</string> + <string>8B7933E521F53595006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BC5CC5E208D3E220058B257</string> + <string>8B7933E621F53595006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BC5CC5F208D3E220058B257</string> + <string>8B7933E721F53595006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>546141002.76876497</real> + <real>569718165.96792996</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,8 +651,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BC5CD63208D5C950058B257</string> - <string>/Users/christopherjohnson/Desktop/Aura/Aura.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/Aura/Aura.xcodeproj</string> </array> <key>WindowString</key> <string>36 294 810 487 0 0 1440 878 </string> diff --git a/plugins/MacVST/Aura/source/Aura.cpp b/plugins/MacVST/Aura/source/Aura.cpp index d011564..8663d3b 100755 --- a/plugins/MacVST/Aura/source/Aura.cpp +++ b/plugins/MacVST/Aura/source/Aura.cpp @@ -24,11 +24,8 @@ Aura::Aura(audioMasterCallback audioMaster) : lastSampleR = 0.0; previousVelocityR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Aura/source/Aura.h b/plugins/MacVST/Aura/source/Aura.h index 557169d..22d4653 100755 --- a/plugins/MacVST/Aura/source/Aura.h +++ b/plugins/MacVST/Aura/source/Aura.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff long double lastSampleL; double previousVelocityL; diff --git a/plugins/MacVST/Aura/source/AuraProc.cpp b/plugins/MacVST/Aura/source/AuraProc.cpp index daf54d6..089a873 100755 --- a/plugins/MacVST/Aura/source/AuraProc.cpp +++ b/plugins/MacVST/Aura/source/AuraProc.cpp @@ -14,9 +14,6 @@ void Aura::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double correctionL; double correctionR; @@ -211,25 +208,14 @@ void Aura::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -248,9 +234,6 @@ void Aura::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double correctionL; double correctionR; @@ -445,25 +428,16 @@ void Aura::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Average/Average.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Average/Average.xcodeproj/christopherjohnson.pbxuser index cede59c..1b8551b 100755 --- a/plugins/MacVST/Average/Average.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Average/Average.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* Average */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 530376878; - PBXWorkspaceStateSaveDate = 530376878; + PBXPerProjectTemplateStateSaveDate = 569718186; + PBXWorkspaceStateSaveDate = 569718186; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -82,9 +82,9 @@ }; 24D8286F09A914000093AEF8 /* AverageProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 4719}}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 4329}}"; sepNavSelRange = "{9111, 0}"; - sepNavVisRange = "{8668, 2468}"; + sepNavVisRange = "{4985, 1917}"; sepNavWindowFrame = "{{460, 41}, {895, 831}}"; }; }; @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* Average */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/Average/Average.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Average/Average.xcodeproj/christopherjohnson.perspectivev3 index 01ca524..53bb902 100755 --- a/plugins/MacVST/Average/Average.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Average/Average.xcodeproj/christopherjohnson.perspectivev3 @@ -300,8 +300,9 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>10</integer> - <integer>9</integer> + <integer>6</integer> + <integer>4</integer> + <integer>0</integer> </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> @@ -468,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BB863411F9CE8E100FC8156</string> + <string>8B79340521F535C0006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BB863421F9CE8E100FC8156</string> + <string>8B79340621F535C0006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BB863431F9CE8E100FC8156</string> + <string>8B79340721F535C0006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -625,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>530376929.99594998</real> + <real>569718208.35486102</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> diff --git a/plugins/MacVST/Average/Average.xcodeproj/project.pbxproj b/plugins/MacVST/Average/Average.xcodeproj/project.pbxproj index a4f3ebf..b01e8d9 100755 --- a/plugins/MacVST/Average/Average.xcodeproj/project.pbxproj +++ b/plugins/MacVST/Average/Average.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* Average */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "Average" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* Average */, + 8D01CCC60486CAD60068D4B7 /* AudioUnit */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/Average/source/Average.cpp b/plugins/MacVST/Average/source/Average.cpp index 945c76c..2f39ca1 100755 --- a/plugins/MacVST/Average/source/Average.cpp +++ b/plugins/MacVST/Average/source/Average.cpp @@ -17,11 +17,8 @@ Average::Average(audioMasterCallback audioMaster) : for(int count = 0; count < 11; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;} - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Average/source/Average.h b/plugins/MacVST/Average/source/Average.h index 7e4b25e..9932e99 100755 --- a/plugins/MacVST/Average/source/Average.h +++ b/plugins/MacVST/Average/source/Average.h @@ -57,11 +57,8 @@ private: double f[11]; double bR[11]; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/Average/source/AverageProc.cpp b/plugins/MacVST/Average/source/AverageProc.cpp index 2b1c355..17f4783 100755 --- a/plugins/MacVST/Average/source/AverageProc.cpp +++ b/plugins/MacVST/Average/source/AverageProc.cpp @@ -14,9 +14,6 @@ void Average::processReplacing(float **inputs, float **outputs, VstInt32 sampleF float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double correctionSample; double accumulatorSampleL; @@ -154,25 +151,14 @@ void Average::processReplacing(float **inputs, float **outputs, VstInt32 sampleF //in the floating point system. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -189,12 +175,7 @@ void Average::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double* in1 = inputs[0]; double* in2 = inputs[1]; double* out1 = outputs[0]; - double* out2 = outputs[1]; - - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + double* out2 = outputs[1]; double correctionSample; double accumulatorSampleL; double accumulatorSampleR; @@ -330,25 +311,16 @@ void Average::processDoubleReplacing(double **inputs, double **outputs, VstInt32 //if it 'won't change anything' but our sample might be at a very different scaling //in the floating point system. - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/BassKit/BassKit.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/BassKit/BassKit.xcodeproj/christopherjohnson.pbxuser index 7a8a384..71471a7 100755 --- a/plugins/MacVST/BassKit/BassKit.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/BassKit/BassKit.xcodeproj/christopherjohnson.pbxuser @@ -49,14 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 561849688; - PBXWorkspaceStateSaveDate = 561849688; + PBXPerProjectTemplateStateSaveDate = 569718226; + PBXWorkspaceStateSaveDate = 569718226; }; perUserProjectItems = { - 8B15DC872178931A007AD769 /* PBXTextBookmark */ = 8B15DC872178931A007AD769 /* PBXTextBookmark */; - 8B15DC8A2178931A007AD769 /* PBXTextBookmark */ = 8B15DC8A2178931A007AD769 /* PBXTextBookmark */; + 8B79342421F535E6006E9731 /* PBXTextBookmark */ = 8B79342421F535E6006E9731 /* PBXTextBookmark */; 8BC3BC31217D257A0043A8B7 /* PBXTextBookmark */ = 8BC3BC31217D257A0043A8B7 /* PBXTextBookmark */; - 8BC3BC35217D257A0043A8B7 /* PBXTextBookmark */ = 8BC3BC35217D257A0043A8B7 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -80,7 +78,7 @@ }; 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {838, 19877}}"; + sepNavIntBoundsRect = "{{0, 0}, {838, 19864}}"; sepNavSelRange = "{10616, 0}"; sepNavVisRange = "{10459, 280}"; sepNavWindowFrame = "{{15, 42}, {895, 831}}"; @@ -88,9 +86,9 @@ }; 24D8286F09A914000093AEF8 /* BassKitProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {901, 6097}}"; + sepNavIntBoundsRect = "{{0, 0}, {901, 5759}}"; sepNavSelRange = "{3023, 0}"; - sepNavVisRange = "{1492, 2701}"; + sepNavVisRange = "{16984, 1948}"; sepNavWindowFrame = "{{41, 39}, {895, 831}}"; }; }; @@ -108,26 +106,16 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B15DC872178931A007AD769 /* PBXTextBookmark */ = { + 8B79342421F535E6006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; name = "audioeffectx.cpp: 307"; rLen = 0; rLoc = 10616; rType = 0; - vrLen = 399; + vrLen = 280; vrLoc = 10459; }; - 8B15DC8A2178931A007AD769 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 24D8286F09A914000093AEF8 /* BassKitProc.cpp */; - name = "BassKitProc.cpp: 259"; - rLen = 0; - rLoc = 10702; - rType = 0; - vrLen = 1721; - vrLoc = 9607; - }; 8BC3BC31217D257A0043A8B7 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; @@ -138,16 +126,6 @@ vrLen = 280; vrLoc = 10459; }; - 8BC3BC35217D257A0043A8B7 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 24D8286F09A914000093AEF8 /* BassKitProc.cpp */; - name = "BassKitProc.cpp: 91"; - rLen = 0; - rLoc = 3023; - rType = 0; - vrLen = 2701; - vrLoc = 1492; - }; 8D01CCC60486CAD60068D4B7 /* BassKit */ = { activeExec = 0; }; diff --git a/plugins/MacVST/BassKit/BassKit.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/BassKit/BassKit.xcodeproj/christopherjohnson.perspectivev3 index f720cd0..4925ffa 100755 --- a/plugins/MacVST/BassKit/BassKit.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/BassKit/BassKit.xcodeproj/christopherjohnson.perspectivev3 @@ -222,48 +222,7 @@ </dict> </array> <key>OpenEditors</key> - <array> - <dict> - <key>Content</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>8B15DC882178931A007AD769</string> - <key>PBXProjectModuleLabel</key> - <string>BassKitProc.cpp</string> - <key>PBXSplitModuleInNavigatorKey</key> - <dict> - <key>Split0</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>8B15DC892178931A007AD769</string> - <key>PBXProjectModuleLabel</key> - <string>BassKitProc.cpp</string> - <key>_historyCapacity</key> - <integer>0</integer> - <key>bookmark</key> - <string>8BC3BC35217D257A0043A8B7</string> - <key>history</key> - <array> - <string>8B15DC8A2178931A007AD769</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, 734}}</string> - <key>PBXModuleWindowStatusBarHidden2</key> - <false/> - <key>RubberWindowFrame</key> - <string>41 95 895 775 0 0 1440 878 </string> - </dict> - </dict> - </array> + <array/> <key>PerspectiveWidths</key> <array> <integer>810</integer> @@ -392,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BC3BC31217D257A0043A8B7</string> + <string>8B79342421F535E6006E9731</string> <key>history</key> <array> - <string>8B15DC872178931A007AD769</string> + <string>8BC3BC31217D257A0043A8B7</string> </array> </dict> <key>SplitCount</key> @@ -409,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 117}}</string> + <string>{{0, 0}, {603, 102}}</string> <key>RubberWindowFrame</key> <string>103 354 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>117pt</string> + <string>102pt</string> </dict> <dict> <key>Proportion</key> - <string>324pt</string> + <string>339pt</string> <key>Tabs</key> <array> <dict> @@ -434,7 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 297}}</string> + <string>{{10, 27}, {603, 312}}</string> <key>RubberWindowFrame</key> <string>103 354 810 487 0 0 1440 878 </string> </dict> @@ -518,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BC3BC32217D257A0043A8B7</string> + <string>8B79342521F535E6006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BC3BC33217D257A0043A8B7</string> + <string>8B79342621F535E6006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BC3BC34217D257A0043A8B7</string> + <string>8B79342721F535E6006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -675,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>561849722.95006502</real> + <real>569718246.60174298</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -693,7 +652,6 @@ <key>WindowOrderList</key> <array> <string>/Users/christopherjohnson/Desktop/MacVST/BassKit/BassKit.xcodeproj</string> - <string>8B15DC882178931A007AD769</string> </array> <key>WindowString</key> <string>103 354 810 487 0 0 1440 878 </string> diff --git a/plugins/MacVST/BassKit/source/BassKitProc.cpp b/plugins/MacVST/BassKit/source/BassKitProc.cpp index df3310e..9199c82 100755 --- a/plugins/MacVST/BassKit/source/BassKitProc.cpp +++ b/plugins/MacVST/BassKit/source/BassKitProc.cpp @@ -204,18 +204,14 @@ void BassKit::processReplacing(float **inputs, float **outputs, VstInt32 sampleF bflip++; if (bflip < 1 || bflip > 3) bflip = 1; - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -225,12 +221,6 @@ void BassKit::processReplacing(float **inputs, float **outputs, VstInt32 sampleF *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void BassKit::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -430,18 +420,16 @@ void BassKit::processDoubleReplacing(double **inputs, double **outputs, VstInt32 bflip++; if (bflip < 1 || bflip > 3) bflip = 1; - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -451,10 +439,4 @@ void BassKit::processDoubleReplacing(double **inputs, double **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacVST/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.pbxuser index 04c5006..eadf6da 100755 --- a/plugins/MacVST/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.pbxuser @@ -51,8 +51,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 553994307; - PBXWorkspaceStateSaveDate = 553994307; + PBXPerProjectTemplateStateSaveDate = 569718310; + PBXWorkspaceStateSaveDate = 569718310; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -60,17 +60,17 @@ }; 2407DEB6089929BA00EB68BF /* BitGlitter.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 2249}}"; - sepNavSelRange = "{842, 0}"; - sepNavVisRange = "{1388, 1919}"; - sepNavWindowFrame = "{{891, 27}, {895, 831}}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 2158}}"; + sepNavSelRange = "{533, 0}"; + sepNavVisRange = "{0, 1600}"; + sepNavWindowFrame = "{{333, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* BitGlitter.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 1118}}"; - sepNavSelRange = "{2943, 0}"; - sepNavVisRange = "{652, 2357}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 1157}}"; + sepNavSelRange = "{2511, 0}"; + sepNavVisRange = "{652, 2399}"; sepNavWindowFrame = "{{20, 47}, {895, 831}}"; }; }; @@ -84,10 +84,10 @@ }; 24D8286F09A914000093AEF8 /* BitGlitterProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 5200}}"; - sepNavSelRange = "{7162, 0}"; - sepNavVisRange = "{6302, 1605}"; - sepNavWindowFrame = "{{37, 33}, {895, 831}}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 5902}}"; + sepNavSelRange = "{13421, 0}"; + sepNavVisRange = "{11871, 1722}"; + sepNavWindowFrame = "{{169, 47}, {895, 831}}"; }; }; 8B02375E1D42B1C400E1E8C8 /* Source Control */ = { diff --git a/plugins/MacVST/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.perspectivev3 index 9b744d3..b2c5d8c 100755 --- a/plugins/MacVST/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.perspectivev3 @@ -256,6 +256,8 @@ <key>Layout</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -298,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>5</integer> + <integer>6</integer> <integer>4</integer> <integer>0</integer> </array> @@ -321,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>129 148 810 487 0 0 1440 878 </string> + <string>144 271 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -360,7 +362,7 @@ <key>Frame</key> <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> - <string>129 148 810 487 0 0 1440 878 </string> + <string>144 271 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -384,6 +386,8 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> + <key>RubberWindowFrame</key> + <string>144 271 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -438,8 +442,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> - <key>RubberWindowFrame</key> - <string>129 148 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -467,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBD19152105484B0015A233</string> + <string>8B79347521F5371F006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBD19162105484B0015A233</string> + <string>8B79347621F5371F006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BBD19172105484B0015A233</string> + <string>8B79347721F5371F006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -644,7 +646,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>553998201.254879</real> + <real>569718559.741974</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -661,10 +663,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>/Users/christopherjohnson/Desktop/BitGlitter/BitGlitter.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/BitGlitter/BitGlitter.xcodeproj</string> </array> <key>WindowString</key> - <string>129 148 810 487 0 0 1440 878 </string> + <string>144 271 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/BitGlitter/source/BitGlitter.cpp b/plugins/MacVST/BitGlitter/source/BitGlitter.cpp index 7e9cfdb..a1e1a9b 100755 --- a/plugins/MacVST/BitGlitter/source/BitGlitter.cpp +++ b/plugins/MacVST/BitGlitter/source/BitGlitter.cpp @@ -17,6 +17,9 @@ BitGlitter::BitGlitter(audioMasterCallback audioMaster) : C = 0.5; D = 1.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + ataLastSampleL = 0.0; ataHalfwaySampleL = 0.0; lastSampleL = 0.0; diff --git a/plugins/MacVST/BitGlitter/source/BitGlitter.h b/plugins/MacVST/BitGlitter/source/BitGlitter.h index d87e277..4f108cd 100755 --- a/plugins/MacVST/BitGlitter/source/BitGlitter.h +++ b/plugins/MacVST/BitGlitter/source/BitGlitter.h @@ -55,6 +55,9 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; + long double fpNShapeL; + long double fpNShapeR; + double ataLastSampleL; double ataHalfwaySampleL; double ataDrySampleL; diff --git a/plugins/MacVST/BitGlitter/source/BitGlitterProc.cpp b/plugins/MacVST/BitGlitter/source/BitGlitterProc.cpp index 321d0b6..ff2968c 100755 --- a/plugins/MacVST/BitGlitter/source/BitGlitterProc.cpp +++ b/plugins/MacVST/BitGlitter/source/BitGlitterProc.cpp @@ -202,6 +202,14 @@ void BitGlitter::processReplacing(float **inputs, float **outputs, VstInt32 samp outputSampleL = (drySampleL * (1.0-wet)) + (outputSampleL * wet); outputSampleR = (drySampleR * (1.0-wet)) + (outputSampleR * wet); } + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)outputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + outputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)outputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + outputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = outputSampleL; *out2 = outputSampleR; @@ -408,6 +416,17 @@ void BitGlitter::processDoubleReplacing(double **inputs, double **outputs, VstIn outputSampleR = (drySampleR * (1.0-wet)) + (outputSampleR * wet); } + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)outputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + outputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)outputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + outputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither + *out1 = outputSampleL; *out2 = outputSampleR; diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.pbxuser index 073b4c5..5810e3f 100644..100755 --- a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.pbxuser @@ -10,7 +10,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 199, + 389, 20, 48, 43, @@ -49,13 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528459201; - PBXWorkspaceStateSaveDate = 528459201; + PBXPerProjectTemplateStateSaveDate = 569802073; + PBXWorkspaceStateSaveDate = 569802073; }; perUserProjectItems = { - 8B9D692D1F7EDCD2007AB60F /* PBXTextBookmark */ = 8B9D692D1F7EDCD2007AB60F /* PBXTextBookmark */; - 8B9D77B71F7FA5E4007AB60F /* PBXTextBookmark */ = 8B9D77B71F7FA5E4007AB60F /* PBXTextBookmark */; - 8BD42AEE1DE22B3A00869065 /* PBXTextBookmark */ = 8BD42AEE1DE22B3A00869065 /* PBXTextBookmark */; + 8BEF858D21F67E1D00FEF113 /* PBXTextBookmark */ = 8BEF858D21F67E1D00FEF113 /* PBXTextBookmark */; + 8BEF858E21F67E1D00FEF113 /* PBXTextBookmark */ = 8BEF858E21F67E1D00FEF113 /* PBXTextBookmark */; + 8BEF858F21F67E1D00FEF113 /* PBXTextBookmark */ = 8BEF858F21F67E1D00FEF113 /* PBXTextBookmark */; + 8BEF859021F67E1D00FEF113 /* PBXTextBookmark */ = 8BEF859021F67E1D00FEF113 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -63,9 +64,9 @@ }; 2407DEB6089929BA00EB68BF /* BitShiftGain.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {754, 1482}}"; - sepNavSelRange = "{1650, 0}"; - sepNavVisRange = "{1613, 753}"; + sepNavIntBoundsRect = "{{0, 0}, {754, 1534}}"; + sepNavSelRange = "{3361, 19}"; + sepNavVisRange = "{2730, 1669}"; sepNavWindowFrame = "{{12, 47}, {895, 831}}"; }; }; @@ -79,17 +80,17 @@ }; 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {859, 20033}}"; + sepNavIntBoundsRect = "{{0, 0}, {859, 20046}}"; sepNavSelRange = "{10616, 0}"; - sepNavVisRange = "{10195, 852}"; + sepNavVisRange = "{10195, 759}"; sepNavWindowFrame = "{{15, 42}, {895, 831}}"; }; }; 24D8286F09A914000093AEF8 /* BitShiftGainProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 1638}}"; - sepNavSelRange = "{1754, 0}"; - sepNavVisRange = "{395, 1500}"; + sepNavIntBoundsRect = "{{0, 0}, {712, 1586}}"; + sepNavSelRange = "{476, 8}"; + sepNavVisRange = "{1474, 1209}"; sepNavWindowFrame = "{{476, 47}, {895, 831}}"; }; }; @@ -107,35 +108,45 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B9D692D1F7EDCD2007AB60F /* PBXTextBookmark */ = { + 8BEF858D21F67E1D00FEF113 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; name = "audioeffectx.cpp: 307"; rLen = 0; rLoc = 10616; rType = 0; - vrLen = 852; + vrLen = 759; vrLoc = 10195; }; - 8B9D77B71F7FA5E4007AB60F /* PBXTextBookmark */ = { + 8BEF858E21F67E1D00FEF113 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; - name = "audioeffectx.cpp: 307"; - rLen = 0; - rLoc = 10616; + fRef = 2407DEB6089929BA00EB68BF /* BitShiftGain.cpp */; + name = "BitShiftGain.cpp: 90"; + rLen = 19; + rLoc = 3361; rType = 0; - vrLen = 849; - vrLoc = 10195; + vrLen = 1669; + vrLoc = 2730; }; - 8BD42AEE1DE22B3A00869065 /* PBXTextBookmark */ = { + 8BEF858F21F67E1D00FEF113 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 2407DEB6089929BA00EB68BF /* BitShiftGain.cpp */; - name = "BitShiftGain.cpp: 37"; + fRef = 24D8286F09A914000093AEF8 /* BitShiftGainProc.cpp */; + name = "BitShiftGainProc.cpp: 56"; rLen = 0; - rLoc = 1650; + rLoc = 1754; + rType = 0; + vrLen = 1226; + vrLoc = 1820; + }; + 8BEF859021F67E1D00FEF113 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 24D8286F09A914000093AEF8 /* BitShiftGainProc.cpp */; + name = "BitShiftGainProc.cpp: 17"; + rLen = 8; + rLoc = 476; rType = 0; - vrLen = 753; - vrLoc = 1613; + vrLen = 1209; + vrLoc = 1474; }; 8D01CCC60486CAD60068D4B7 /* BitShiftGain */ = { activeExec = 0; diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.perspectivev3 index 1b7af95..b5d4e93 100644..100755 --- a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -306,7 +304,7 @@ </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {185, 716}}</string> + <string>{{0, 0}, {185, 711}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> @@ -316,14 +314,14 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {202, 734}}</string> + <string>{{0, 0}, {202, 729}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> <real>185</real> </array> <key>RubberWindowFrame</key> - <string>434 99 645 775 0 0 1440 878 </string> + <string>493 108 835 770 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -334,12 +332,14 @@ <key>Dock</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXProjectModuleGUID</key> <string>8B0237581D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>audioeffectx.cpp</string> + <string>BitShiftGainProc.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -347,15 +347,16 @@ <key>PBXProjectModuleGUID</key> <string>8B0237591D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>audioeffectx.cpp</string> + <string>BitShiftGainProc.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D77B71F7FA5E4007AB60F</string> + <string>8BEF859021F67E1D00FEF113</string> <key>history</key> <array> - <string>8BD42AEE1DE22B3A00869065</string> - <string>8B9D692D1F7EDCD2007AB60F</string> + <string>8BEF858D21F67E1D00FEF113</string> + <string>8BEF858E21F67E1D00FEF113</string> + <string>8BEF858F21F67E1D00FEF113</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {438, 312}}</string> + <string>{{0, 0}, {628, 592}}</string> <key>RubberWindowFrame</key> - <string>434 99 645 775 0 0 1440 878 </string> + <string>493 108 835 770 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>312pt</string> + <string>592pt</string> </dict> <dict> <key>Proportion</key> - <string>417pt</string> + <string>132pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +395,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {438, 390}}</string> + <string>{{10, 27}, {628, 105}}</string> <key>RubberWindowFrame</key> - <string>434 99 645 775 0 0 1440 878 </string> + <string>493 108 835 770 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -459,7 +460,7 @@ </dict> </array> <key>Proportion</key> - <string>438pt</string> + <string>628pt</string> </dict> </array> <key>Name</key> @@ -478,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D77B81F7FA5E4007AB60F</string> + <string>8BEF859121F67E1D00FEF113</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D77B91F7FA5E4007AB60F</string> + <string>8BEF859221F67E1D00FEF113</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D77BA1F7FA5E4007AB60F</string> + <string>8BEF859321F67E1D00FEF113</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528459236.94347501</real> + <real>569802269.42069495</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,11 +653,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D77BB1F7FA5E4007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/BitShiftGain/BitShiftGain.xcodeproj</string> </array> <key>WindowString</key> - <string>434 99 645 775 0 0 1440 878 </string> + <string>493 108 835 770 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/contents.xcworkspacedata index a80c038..a80c038 100644..100755 --- a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate Binary files differindex 5c38f94..5c38f94 100644..100755 --- a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate +++ b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate Binary files differindex 314de0f..314de0f 100644..100755 --- a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate +++ b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/spiadmin.mode1v3 index c572326..c572326 100644..100755 --- a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/spiadmin.mode1v3 +++ b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/spiadmin.mode1v3 diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/spiadmin.pbxuser index df94780..df94780 100644..100755 --- a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/spiadmin.pbxuser +++ b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/spiadmin.pbxuser diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme index 8ee693f..8ee693f 100644..100755 --- a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme +++ b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist index 5bccbcb..5bccbcb 100644..100755 --- a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist index a7bdd62..a7bdd62 100644..100755 --- a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme index 0df2de4..0df2de4 100644..100755 --- a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme +++ b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme diff --git a/plugins/MacVST/Bite/Bite.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Bite/Bite.xcodeproj/christopherjohnson.pbxuser index 110bab7..70f9ad3 100755 --- a/plugins/MacVST/Bite/Bite.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Bite/Bite.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528459162; - PBXWorkspaceStateSaveDate = 528459162; + PBXPerProjectTemplateStateSaveDate = 569718265; + PBXWorkspaceStateSaveDate = 569718265; }; perUserProjectItems = { + 8B79344521F53610006E9731 /* PBXTextBookmark */ = 8B79344521F53610006E9731 /* PBXTextBookmark */; 8B9D778D1F7FA5B8007AB60F /* PBXTextBookmark */ = 8B9D778D1F7FA5B8007AB60F /* PBXTextBookmark */; - 8BCA84A31EC2586000521D27 /* PBXTextBookmark */ = 8BCA84A31EC2586000521D27 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -78,7 +78,7 @@ }; 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {747, 19877}}"; + sepNavIntBoundsRect = "{{0, 0}, {747, 19864}}"; sepNavSelRange = "{10616, 0}"; sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{15, 42}, {895, 831}}"; @@ -86,9 +86,9 @@ }; 24D8286F09A914000093AEF8 /* BiteProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 3783}}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 3458}}"; sepNavSelRange = "{4277, 0}"; - sepNavVisRange = "{0, 0}"; + sepNavVisRange = "{0, 1351}"; sepNavWindowFrame = "{{205, 46}, {895, 831}}"; }; }; @@ -106,7 +106,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B9D778D1F7FA5B8007AB60F /* PBXTextBookmark */ = { + 8B79344521F53610006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; name = "audioeffectx.cpp: 307"; @@ -116,7 +116,7 @@ vrLen = 0; vrLoc = 0; }; - 8BCA84A31EC2586000521D27 /* PBXTextBookmark */ = { + 8B9D778D1F7FA5B8007AB60F /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; name = "audioeffectx.cpp: 307"; diff --git a/plugins/MacVST/Bite/Bite.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Bite/Bite.xcodeproj/christopherjohnson.perspectivev3 index 991888c..58ed0f1 100755 --- a/plugins/MacVST/Bite/Bite.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Bite/Bite.xcodeproj/christopherjohnson.perspectivev3 @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D778D1F7FA5B8007AB60F</string> + <string>8B79344521F53610006E9731</string> <key>history</key> <array> - <string>8BCA84A31EC2586000521D27</string> + <string>8B9D778D1F7FA5B8007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D778E1F7FA5B8007AB60F</string> + <string>8B79344621F53610006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D778F1F7FA5B8007AB60F</string> + <string>8B79344721F53610006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D77901F7FA5B8007AB60F</string> + <string>8B79344821F53610006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528459192.24507099</real> + <real>569718288.19823003</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,7 +651,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D77911F7FA5B8007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/Bite/Bite.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Bite/source/Bite.cpp b/plugins/MacVST/Bite/source/Bite.cpp index b563f54..c9d0fcb 100755 --- a/plugins/MacVST/Bite/source/Bite.cpp +++ b/plugins/MacVST/Bite/source/Bite.cpp @@ -34,11 +34,8 @@ Bite::Bite(audioMasterCallback audioMaster) : sampleHR = 0.0; sampleIR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Bite/source/Bite.h b/plugins/MacVST/Bite/source/Bite.h index d6f9e44..288ac7f 100755 --- a/plugins/MacVST/Bite/source/Bite.h +++ b/plugins/MacVST/Bite/source/Bite.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double sampleAL; double sampleBL; diff --git a/plugins/MacVST/Bite/source/BiteProc.cpp b/plugins/MacVST/Bite/source/BiteProc.cpp index 690a998..64e0ac4 100755 --- a/plugins/MacVST/Bite/source/BiteProc.cpp +++ b/plugins/MacVST/Bite/source/BiteProc.cpp @@ -17,9 +17,6 @@ void Bite::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram double overallscale = 1.3; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double gain = ((A*2.0)-1.0)*overallscale; double outputgain = B; @@ -119,25 +116,14 @@ void Bite::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram inputSampleR *= outputgain; } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -159,9 +145,6 @@ void Bite::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa double overallscale = 1.3; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double gain = ((A*2.0)-1.0)*overallscale; double outputgain = B; @@ -261,25 +244,16 @@ void Bite::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa inputSampleR *= outputgain; } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/BussColors4/BussColors4.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/BussColors4/BussColors4.xcodeproj/christopherjohnson.pbxuser index 874e77e..56965b2 100755 --- a/plugins/MacVST/BussColors4/BussColors4.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/BussColors4/BussColors4.xcodeproj/christopherjohnson.pbxuser @@ -49,11 +49,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 553995952; - PBXWorkspaceStateSaveDate = 553995952; + PBXPerProjectTemplateStateSaveDate = 569718632; + PBXWorkspaceStateSaveDate = 569718632; }; perUserProjectItems = { - 8BBD1972210550260015A233 /* PBXTextBookmark */ = 8BBD1972210550260015A233 /* PBXTextBookmark */; + 8B7934BC21F53792006E9731 /* PBXTextBookmark */ = 8B7934BC21F53792006E9731 /* PBXTextBookmark */; 8BBD1973210550260015A233 /* PBXTextBookmark */ = 8BBD1973210550260015A233 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -62,9 +62,9 @@ }; 2407DEB6089929BA00EB68BF /* BussColors4.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {747, 2613}}"; + sepNavIntBoundsRect = "{{0, 0}, {747, 2392}}"; sepNavSelRange = "{6740, 15}"; - sepNavVisRange = "{44, 192}"; + sepNavVisRange = "{44, 191}"; sepNavWindowFrame = "{{545, 42}, {895, 831}}"; }; }; @@ -86,10 +86,10 @@ }; 24D8286F09A914000093AEF8 /* BussColors4Proc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 22958}}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 21840}}"; sepNavSelRange = "{2156, 16}"; - sepNavVisRange = "{2297, 2204}"; - sepNavWindowFrame = "{{529, 47}, {895, 831}}"; + sepNavVisRange = "{114530, 2497}"; + sepNavWindowFrame = "{{399, 47}, {895, 831}}"; }; }; 8B02375E1D42B1C400E1E8C8 /* Source Control */ = { @@ -106,14 +106,14 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8BBD1972210550260015A233 /* PBXTextBookmark */ = { + 8B7934BC21F53792006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 2407DEB6089929BA00EB68BF /* BussColors4.cpp */; name = "BussColors4.cpp: 167"; rLen = 15; rLoc = 6740; rType = 0; - vrLen = 328; + vrLen = 191; vrLoc = 44; }; 8BBD1973210550260015A233 /* PBXTextBookmark */ = { diff --git a/plugins/MacVST/BussColors4/BussColors4.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/BussColors4/BussColors4.xcodeproj/christopherjohnson.perspectivev3 index dff2c57..38ff207 100755 --- a/plugins/MacVST/BussColors4/BussColors4.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/BussColors4/BussColors4.xcodeproj/christopherjohnson.perspectivev3 @@ -323,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>567 362 810 487 0 0 1440 878 </string> + <string>567 361 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BBD1973210550260015A233</string> + <string>8B7934BC21F53792006E9731</string> <key>history</key> <array> - <string>8BBD1972210550260015A233</string> + <string>8BBD1973210550260015A233</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 132}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> - <string>567 362 810 487 0 0 1440 878 </string> + <string>567 361 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -393,9 +393,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {603, 297}}</string> <key>RubberWindowFrame</key> - <string>567 362 810 487 0 0 1440 878 </string> + <string>567 361 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBD1974210550260015A233</string> + <string>8B7934AA21F5376C006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBD1975210550260015A233</string> + <string>8B7934AB21F5376C006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BBD1976210550260015A233</string> + <string>8B7934AC21F5376C006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>553996326.29762602</real> + <real>569718674.56684196</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,11 +651,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BBD1977210550260015A233</string> + <string>8B7934BD21F53792006E9731</string> <string>/Users/christopherjohnson/Desktop/MacVST/BussColors4/BussColors4.xcodeproj</string> </array> <key>WindowString</key> - <string>567 362 810 487 0 0 1440 878 </string> + <string>567 361 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/BussColors4/source/BussColors4.cpp b/plugins/MacVST/BussColors4/source/BussColors4.cpp index 720dbf9..c7de380 100755 --- a/plugins/MacVST/BussColors4/source/BussColors4.cpp +++ b/plugins/MacVST/BussColors4/source/BussColors4.cpp @@ -44,11 +44,8 @@ BussColors4::BussColors4(audioMasterCallback audioMaster) : slowdynR = 0; gcount = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. @@ -114,21 +111,6 @@ void BussColors4::setParameter(VstInt32 index, float value) { case kParamD: D = value; break; //this is the popup, stored as a float default: throw; // unknown parameter, shouldn't happen! } - //we can also set other defaults here, and do calculations that only have to happen - //once when parameters actually change. Here is the 'popup' setting its (global) values. - //variables can also be set in the processreplacing loop, and there they'll be set every buffersize - //here they're set when a parameter's actually changed, which should be less frequent, but - //you must use global variables in the BussColors4.h file to do it. - switch((VstInt32)( D * 3.999 )) - { - case 0: fpFlip = true; break; //choice A - case 1: fpFlip = false; break; //choice B - case 2: break; //choice C - case 3: break; //choice D - default: break; //should not happen - } - //this relates to using D as a 'popup' and changing things based on that switch. - //we are using fpFlip just because it's already there globally, as an example. } float BussColors4::getParameter(VstInt32 index) { diff --git a/plugins/MacVST/BussColors4/source/BussColors4.h b/plugins/MacVST/BussColors4/source/BussColors4.h index d07460e..6452555 100755 --- a/plugins/MacVST/BussColors4/source/BussColors4.h +++ b/plugins/MacVST/BussColors4/source/BussColors4.h @@ -68,11 +68,8 @@ private: double slowdynR; int gcount; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/BussColors4/source/BussColors4Proc.cpp b/plugins/MacVST/BussColors4/source/BussColors4Proc.cpp index 2629ee8..b1b9451 100755 --- a/plugins/MacVST/BussColors4/source/BussColors4Proc.cpp +++ b/plugins/MacVST/BussColors4/source/BussColors4Proc.cpp @@ -31,9 +31,6 @@ void BussColors4::processReplacing(float **inputs, float **outputs, VstInt32 sam double gain = 0.436; double outgain = 1.0; double bridgerectifier; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -795,25 +792,14 @@ void BussColors4::processReplacing(float **inputs, float **outputs, VstInt32 sam inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -849,9 +835,6 @@ void BussColors4::processDoubleReplacing(double **inputs, double **outputs, VstI double gain = 0.436; double outgain = 1.0; double bridgerectifier; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -1613,25 +1596,16 @@ void BussColors4::processDoubleReplacing(double **inputs, double **outputs, VstI inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/ButterComp/ButterComp.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/ButterComp/ButterComp.xcodeproj/christopherjohnson.pbxuser index 00c7e3d..4e51591 100755 --- a/plugins/MacVST/ButterComp/ButterComp.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/ButterComp/ButterComp.xcodeproj/christopherjohnson.pbxuser @@ -49,14 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 559962503; - PBXWorkspaceStateSaveDate = 559962503; + PBXPerProjectTemplateStateSaveDate = 569718696; + PBXWorkspaceStateSaveDate = 569718696; }; perUserProjectItems = { 8B42FD78216053420092969A /* PBXTextBookmark */ = 8B42FD78216053420092969A /* PBXTextBookmark */; 8B42FDE121605A6A0092969A /* PBXTextBookmark */ = 8B42FDE121605A6A0092969A /* PBXTextBookmark */; - 8B42FDE221605A6A0092969A /* PBXBookmark */ = 8B42FDE221605A6A0092969A /* PBXBookmark */; 8B42FDE321605A6A0092969A /* PBXTextBookmark */ = 8B42FDE321605A6A0092969A /* PBXTextBookmark */; + 8B7934D121F537BA006E9731 /* PBXTextBookmark */ = 8B7934D121F537BA006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -72,9 +72,9 @@ }; 245463B80991757100464AD3 /* ButterComp.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 910}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 1079}}"; sepNavSelRange = "{2665, 0}"; - sepNavVisRange = "{2626, 65}"; + sepNavVisRange = "{2626, 64}"; sepNavWindowFrame = "{{545, 47}, {895, 831}}"; }; }; @@ -88,9 +88,9 @@ }; 24D8286F09A914000093AEF8 /* ButterCompProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 5499}}"; - sepNavSelRange = "{11857, 0}"; - sepNavVisRange = "{11491, 1545}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 5070}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{10841, 1686}"; sepNavWindowFrame = "{{545, 47}, {895, 831}}"; }; }; @@ -125,12 +125,8 @@ rLen = 0; rLoc = 12160; rType = 0; - vrLen = 83; - vrLoc = 13577; - }; - 8B42FDE221605A6A0092969A /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 245463B80991757100464AD3 /* ButterComp.h */; + vrLen = 0; + vrLoc = 12527; }; 8B42FDE321605A6A0092969A /* PBXTextBookmark */ = { isa = PBXTextBookmark; @@ -142,6 +138,16 @@ vrLen = 65; vrLoc = 2626; }; + 8B7934D121F537BA006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 245463B80991757100464AD3 /* ButterComp.h */; + name = "ButterComp.h: 67"; + rLen = 0; + rLoc = 2665; + rType = 0; + vrLen = 64; + vrLoc = 2626; + }; 8D01CCC60486CAD60068D4B7 /* ButterComp */ = { activeExec = 0; }; diff --git a/plugins/MacVST/ButterComp/ButterComp.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/ButterComp/ButterComp.xcodeproj/christopherjohnson.perspectivev3 index 240ab99..5148f75 100755 --- a/plugins/MacVST/ButterComp/ButterComp.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/ButterComp/ButterComp.xcodeproj/christopherjohnson.perspectivev3 @@ -323,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>630 353 810 487 0 0 1440 878 </string> + <string>544 355 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -351,12 +351,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B42FDE321605A6A0092969A</string> + <string>8B7934D121F537BA006E9731</string> <key>history</key> <array> <string>8B42FD78216053420092969A</string> <string>8B42FDE121605A6A0092969A</string> - <string>8B42FDE221605A6A0092969A</string> + <string>8B42FDE321605A6A0092969A</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 69}}</string> + <string>{{0, 0}, {603, 51}}</string> <key>RubberWindowFrame</key> - <string>630 353 810 487 0 0 1440 878 </string> + <string>544 355 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>69pt</string> + <string>51pt</string> </dict> <dict> <key>Proportion</key> - <string>372pt</string> + <string>390pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +395,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 345}}</string> + <string>{{10, 27}, {603, 363}}</string> <key>RubberWindowFrame</key> - <string>630 353 810 487 0 0 1440 878 </string> + <string>544 355 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -479,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B42FDE421605A6A0092969A</string> + <string>8B7934D221F537BA006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B42FDE521605A6A0092969A</string> + <string>8B7934D321F537BA006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B42FDE621605A6A0092969A</string> + <string>8B7934D421F537BA006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>559962730.75885105</real> + <real>569718714.80265605</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,11 +653,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B42FDE721605A6A0092969A</string> + <string>8B7934D521F537BA006E9731</string> <string>/Users/christopherjohnson/Desktop/MacVST/ButterComp/ButterComp.xcodeproj</string> </array> <key>WindowString</key> - <string>630 353 810 487 0 0 1440 878 </string> + <string>544 355 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/ButterComp/source/ButterComp.cpp b/plugins/MacVST/ButterComp/source/ButterComp.cpp index e6a33f7..b3123e2 100755 --- a/plugins/MacVST/ButterComp/source/ButterComp.cpp +++ b/plugins/MacVST/ButterComp/source/ButterComp.cpp @@ -26,11 +26,8 @@ ButterComp::ButterComp(audioMasterCallback audioMaster) : controlBnegR = 1.0; targetposR = 1.0; targetnegR = 1.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/ButterComp/source/ButterComp.h b/plugins/MacVST/ButterComp/source/ButterComp.h index af6df66..5c9862b 100755 --- a/plugins/MacVST/ButterComp/source/ButterComp.h +++ b/plugins/MacVST/ButterComp/source/ButterComp.h @@ -65,11 +65,8 @@ private: double controlBnegR; double targetposR; double targetnegR; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/ButterComp/source/ButterCompProc.cpp b/plugins/MacVST/ButterComp/source/ButterCompProc.cpp index ea52946..d87030c 100755 --- a/plugins/MacVST/ButterComp/source/ButterCompProc.cpp +++ b/plugins/MacVST/ButterComp/source/ButterCompProc.cpp @@ -17,9 +17,6 @@ void ButterComp::processReplacing(float **inputs, float **outputs, VstInt32 samp double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputposL; double inputnegL; @@ -181,25 +178,14 @@ void ButterComp::processReplacing(float **inputs, float **outputs, VstInt32 samp inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -221,9 +207,6 @@ void ButterComp::processDoubleReplacing(double **inputs, double **outputs, VstIn double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputposL; double inputnegL; @@ -385,25 +368,16 @@ void ButterComp::processDoubleReplacing(double **inputs, double **outputs, VstIn inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.pbxuser index e8a1ebf..26154bb 100755 --- a/plugins/MacVST/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.pbxuser @@ -49,14 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 559961907; - PBXWorkspaceStateSaveDate = 559961907; + PBXPerProjectTemplateStateSaveDate = 569718749; + PBXWorkspaceStateSaveDate = 569718749; }; perUserProjectItems = { - 8B42FDBF216057860092969A /* PBXTextBookmark */ = 8B42FDBF216057860092969A /* PBXTextBookmark */; 8B42FDC0216057860092969A /* PBXTextBookmark */ = 8B42FDC0216057860092969A /* PBXTextBookmark */; - 8B42FDC4216057860092969A /* PBXTextBookmark */ = 8B42FDC4216057860092969A /* PBXTextBookmark */; 8B42FDC5216057860092969A /* PBXTextBookmark */ = 8B42FDC5216057860092969A /* PBXTextBookmark */; + 8B7934F221F537F3006E9731 /* PBXTextBookmark */ = 8B7934F221F537F3006E9731 /* PBXTextBookmark */; + 8B7934F621F537F3006E9731 /* PBXTextBookmark */ = 8B7934F621F537F3006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -88,9 +88,9 @@ }; 24D8286F09A914000093AEF8 /* ButterComp2Proc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 6643}}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 6292}}"; sepNavSelRange = "{7880, 0}"; - sepNavVisRange = "{7074, 1753}"; + sepNavVisRange = "{7052, 1652}"; sepNavWindowFrame = "{{394, 47}, {895, 831}}"; }; }; @@ -108,7 +108,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B42FDBF216057860092969A /* PBXTextBookmark */ = { + 8B42FDC0216057860092969A /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* ButterComp2Proc.cpp */; name = "ButterComp2Proc.cpp: 382"; @@ -116,37 +116,37 @@ rLoc = 11279; rType = 0; vrLen = 322; - vrLoc = 11165; + vrLoc = 11177; }; - 8B42FDC0216057860092969A /* PBXTextBookmark */ = { + 8B42FDC5216057860092969A /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* ButterComp2Proc.cpp */; - name = "ButterComp2Proc.cpp: 382"; + name = "ButterComp2Proc.cpp: 268"; rLen = 0; - rLoc = 11279; + rLoc = 7880; rType = 0; - vrLen = 322; - vrLoc = 11177; + vrLen = 1753; + vrLoc = 7074; }; - 8B42FDC4216057860092969A /* PBXTextBookmark */ = { + 8B7934F221F537F3006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* ButterComp2Proc.cpp */; - name = "ButterComp2Proc.cpp: 382"; + name = "ButterComp2Proc.cpp: 387"; rLen = 0; rLoc = 11279; rType = 0; - vrLen = 1480; - vrLoc = 10666; + vrLen = 365; + vrLoc = 6402; }; - 8B42FDC5216057860092969A /* PBXTextBookmark */ = { + 8B7934F621F537F3006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* ButterComp2Proc.cpp */; - name = "ButterComp2Proc.cpp: 268"; + name = "ButterComp2Proc.cpp: 278"; rLen = 0; rLoc = 7880; rType = 0; - vrLen = 1753; - vrLoc = 7074; + vrLen = 1652; + vrLoc = 7052; }; 8D01CCC60486CAD60068D4B7 /* ButterComp2 */ = { activeExec = 0; diff --git a/plugins/MacVST/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.perspectivev3 index 67bfac5..4fb4fe4 100755 --- a/plugins/MacVST/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.perspectivev3 @@ -241,10 +241,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B42FDC5216057860092969A</string> + <string>8B7934F621F537F3006E9731</string> <key>history</key> <array> - <string>8B42FDC4216057860092969A</string> + <string>8B42FDC5216057860092969A</string> </array> </dict> <key>SplitCount</key> @@ -392,10 +392,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B42FDC0216057860092969A</string> + <string>8B7934F221F537F3006E9731</string> <key>history</key> <array> - <string>8B42FDBF216057860092969A</string> + <string>8B42FDC0216057860092969A</string> </array> </dict> <key>SplitCount</key> @@ -409,18 +409,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 132}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> <string>138 241 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -434,7 +434,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {603, 297}}</string> <key>RubberWindowFrame</key> <string>138 241 810 487 0 0 1440 878 </string> </dict> @@ -518,11 +518,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B42FDC1216057860092969A</string> + <string>8B7934F321F537F3006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B42FDC2216057860092969A</string> + <string>8B7934F421F537F3006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B42FDC3216057860092969A</string> + <string>8B7934F521F537F3006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -675,7 +675,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>559961990.80278695</real> + <real>569718771.40327895</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -693,7 +693,7 @@ <key>WindowOrderList</key> <array> <string>8B42FD99216056C30092969A</string> - <string>/Users/christopherjohnson/Desktop/ButterComp2/ButterComp2.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/ButterComp2/ButterComp2.xcodeproj</string> </array> <key>WindowString</key> <string>138 241 810 487 0 0 1440 878 </string> diff --git a/plugins/MacVST/ButterComp2/source/ButterComp2Proc.cpp b/plugins/MacVST/ButterComp2/source/ButterComp2Proc.cpp index 55ce488..67a6367 100755 --- a/plugins/MacVST/ButterComp2/source/ButterComp2Proc.cpp +++ b/plugins/MacVST/ButterComp2/source/ButterComp2Proc.cpp @@ -223,18 +223,14 @@ void ButterComp2::processReplacing(float **inputs, float **outputs, VstInt32 sam flip = !flip; - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -244,12 +240,6 @@ void ButterComp2::processReplacing(float **inputs, float **outputs, VstInt32 sam *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void ButterComp2::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -468,18 +458,16 @@ void ButterComp2::processDoubleReplacing(double **inputs, double **outputs, VstI flip = !flip; - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -489,10 +477,4 @@ void ButterComp2::processDoubleReplacing(double **inputs, double **outputs, VstI *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacVST/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.pbxuser index c0464d7..32a7430 100755 --- a/plugins/MacVST/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.pbxuser @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 538698967; - PBXWorkspaceStateSaveDate = 538698967; + PBXPerProjectTemplateStateSaveDate = 569733207; + PBXWorkspaceStateSaveDate = 569733207; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -82,9 +82,9 @@ }; 24D8286F09A914000093AEF8 /* C5RawBussProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 3744}}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 3250}}"; sepNavSelRange = "{9641, 0}"; - sepNavVisRange = "{4872, 1806}"; + sepNavVisRange = "{3352, 1921}"; sepNavWindowFrame = "{{9, 47}, {895, 831}}"; }; }; diff --git a/plugins/MacVST/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.perspectivev3 index 672431d..05bb702 100755 --- a/plugins/MacVST/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.perspectivev3 @@ -256,6 +256,8 @@ <key>Layout</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -321,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>21 469 688 404 0 0 1440 878 </string> + <string>488 410 688 404 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -360,7 +362,7 @@ <key>Frame</key> <string>{{0, 0}, {481, 0}}</string> <key>RubberWindowFrame</key> - <string>21 469 688 404 0 0 1440 878 </string> + <string>488 410 688 404 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -384,6 +386,8 @@ <dict> <key>Frame</key> <string>{{10, 27}, {481, 331}}</string> + <key>RubberWindowFrame</key> + <string>488 410 688 404 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -438,8 +442,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {481, 331}}</string> - <key>RubberWindowFrame</key> - <string>21 469 688 404 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -467,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B4E5763201BE4DB00B5DC2A</string> + <string>8B79351E21F57085006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B4E5764201BE4DB00B5DC2A</string> + <string>8B79351F21F57085006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B4E5765201BE4DB00B5DC2A</string> + <string>8B79352021F57085006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -624,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>538701942.76463199</real> + <real>569733253.24398398</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -641,11 +643,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B4E57C7201BF07600B5DC2A</string> - <string>/Users/christopherjohnson/Desktop/C5RawBuss/C5RawBuss.xcodeproj</string> + <string>8B79352121F57085006E9731</string> + <string>/Users/christopherjohnson/Desktop/MacVST/C5RawBuss/C5RawBuss.xcodeproj</string> </array> <key>WindowString</key> - <string>21 469 688 404 0 0 1440 878 </string> + <string>488 410 688 404 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/C5RawBuss/source/C5RawBuss.cpp b/plugins/MacVST/C5RawBuss/source/C5RawBuss.cpp index 14b4dc5..8fba0ef 100755 --- a/plugins/MacVST/C5RawBuss/source/C5RawBuss.cpp +++ b/plugins/MacVST/C5RawBuss/source/C5RawBuss.cpp @@ -17,11 +17,8 @@ C5RawBuss::C5RawBuss(audioMasterCallback audioMaster) : lastSampleBussL = 0.0; lastFXBussR = 0.0; lastSampleBussR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/C5RawBuss/source/C5RawBuss.h b/plugins/MacVST/C5RawBuss/source/C5RawBuss.h index 5a409bc..f4d01fe 100755 --- a/plugins/MacVST/C5RawBuss/source/C5RawBuss.h +++ b/plugins/MacVST/C5RawBuss/source/C5RawBuss.h @@ -52,11 +52,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double lastFXBussL; double lastSampleBussL; diff --git a/plugins/MacVST/C5RawBuss/source/C5RawBussProc.cpp b/plugins/MacVST/C5RawBuss/source/C5RawBussProc.cpp index 1bf5eec..fab4612 100755 --- a/plugins/MacVST/C5RawBuss/source/C5RawBussProc.cpp +++ b/plugins/MacVST/C5RawBuss/source/C5RawBussProc.cpp @@ -14,9 +14,6 @@ void C5RawBuss::processReplacing(float **inputs, float **outputs, VstInt32 sampl float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double centering = A * 0.5; centering = 1.0 - pow(centering,5); @@ -111,25 +108,14 @@ void C5RawBuss::processReplacing(float **inputs, float **outputs, VstInt32 sampl //build new signal off what was present in output last time //slew aspect - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -148,9 +134,6 @@ void C5RawBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double centering = A * 0.5; centering = 1.0 - pow(centering,5); @@ -245,25 +228,16 @@ void C5RawBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt //build new signal off what was present in output last time //slew aspect - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.pbxuser index 2c29100..6a38937 100755 --- a/plugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* C5RawChannel */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 538698973; - PBXWorkspaceStateSaveDate = 538698973; + PBXPerProjectTemplateStateSaveDate = 569733279; + PBXWorkspaceStateSaveDate = 569733279; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* C5RawChannel */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.perspectivev3 index b091f94..cd0fdba 100755 --- a/plugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.perspectivev3 @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B4E577C201BE4F400B5DC2A</string> + <string>8B79353421F570A9006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B4E577D201BE4F400B5DC2A</string> + <string>8B79353521F570A9006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B4E577E201BE4F400B5DC2A</string> + <string>8B79353621F570A9006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>538705094.40063703</real> + <real>569733289.17203903</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,7 +643,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>/Users/christopherjohnson/Desktop/C5RawChannel/C5RawChannel.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/C5RawChannel/C5RawChannel.xcodeproj</string> </array> <key>WindowString</key> <string>24 126 701 419 0 0 1440 878 </string> diff --git a/plugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/project.pbxproj b/plugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/project.pbxproj index e73c1b3..5287fa9 100755 --- a/plugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/project.pbxproj +++ b/plugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* C5RawChannel */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "C5RawChannel" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* C5RawChannel */, + 8D01CCC60486CAD60068D4B7 /* AudioUnit */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/C5RawChannel/source/C5RawChannel.cpp b/plugins/MacVST/C5RawChannel/source/C5RawChannel.cpp index b02a07d..ffc2ecf 100755 --- a/plugins/MacVST/C5RawChannel/source/C5RawChannel.cpp +++ b/plugins/MacVST/C5RawChannel/source/C5RawChannel.cpp @@ -17,11 +17,8 @@ C5RawChannel::C5RawChannel(audioMasterCallback audioMaster) : lastSampleChannelL = 0.0; lastFXChannelR = 0.0; lastSampleChannelR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/C5RawChannel/source/C5RawChannel.h b/plugins/MacVST/C5RawChannel/source/C5RawChannel.h index 2281961..3ce3e84 100755 --- a/plugins/MacVST/C5RawChannel/source/C5RawChannel.h +++ b/plugins/MacVST/C5RawChannel/source/C5RawChannel.h @@ -52,11 +52,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double lastFXChannelL; double lastSampleChannelL; diff --git a/plugins/MacVST/C5RawChannel/source/C5RawChannelProc.cpp b/plugins/MacVST/C5RawChannel/source/C5RawChannelProc.cpp index 41f949e..b2679ff 100755 --- a/plugins/MacVST/C5RawChannel/source/C5RawChannelProc.cpp +++ b/plugins/MacVST/C5RawChannel/source/C5RawChannelProc.cpp @@ -14,9 +14,6 @@ void C5RawChannel::processReplacing(float **inputs, float **outputs, VstInt32 sa float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double centering = A * 0.5; centering = 1.0 - pow(centering,5); @@ -110,25 +107,14 @@ void C5RawChannel::processReplacing(float **inputs, float **outputs, VstInt32 sa inputSampleR = sin(inputSampleR); //amplitude aspect - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -147,9 +133,6 @@ void C5RawChannel::processDoubleReplacing(double **inputs, double **outputs, Vst double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double centering = A * 0.5; centering = 1.0 - pow(centering,5); @@ -243,25 +226,16 @@ void C5RawChannel::processDoubleReplacing(double **inputs, double **outputs, Vst inputSampleR = sin(inputSampleR); //amplitude aspect - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/CStrip/CStrip.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/CStrip/CStrip.xcodeproj/christopherjohnson.pbxuser index 6f086f0..84d9838 100755 --- a/plugins/MacVST/CStrip/CStrip.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/CStrip/CStrip.xcodeproj/christopherjohnson.pbxuser @@ -49,13 +49,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 541888518; - PBXWorkspaceStateSaveDate = 541888518; + PBXPerProjectTemplateStateSaveDate = 569734170; + PBXWorkspaceStateSaveDate = 569734170; }; perUserProjectItems = { 8B181AD0204C900D00516BEE /* PBXTextBookmark */ = 8B181AD0204C900D00516BEE /* PBXTextBookmark */; 8B181AEB204C93FE00516BEE /* PBXTextBookmark */ = 8B181AEB204C93FE00516BEE /* PBXTextBookmark */; - 8B8E3C051FC2409000F10C24 /* PBXTextBookmark */ = 8B8E3C051FC2409000F10C24 /* PBXTextBookmark */; + 8B79373621F57427006E9731 /* PBXTextBookmark */ = 8B79373621F57427006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -87,9 +87,9 @@ }; 24D8286F09A914000093AEF8 /* CStripProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {761, 19695}}"; + sepNavIntBoundsRect = "{{0, 0}, {635, 19565}}"; sepNavSelRange = "{27530, 0}"; - sepNavVisRange = "{6438, 114}"; + sepNavVisRange = "{6540, 22}"; sepNavWindowFrame = "{{533, 46}, {895, 831}}"; }; }; @@ -127,15 +127,15 @@ vrLen = 114; vrLoc = 6438; }; - 8B8E3C051FC2409000F10C24 /* PBXTextBookmark */ = { + 8B79373621F57427006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* CStripProc.cpp */; - name = "CStripProc.cpp: 139"; + name = "CStripProc.cpp: 761"; rLen = 0; rLoc = 27530; rType = 0; - vrLen = 436; - vrLoc = 6443; + vrLen = 22; + vrLoc = 6540; }; 8D01CCC60486CAD60068D4B7 /* CStrip */ = { activeExec = 0; diff --git a/plugins/MacVST/CStrip/CStrip.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/CStrip/CStrip.xcodeproj/christopherjohnson.perspectivev3 index d37c29c..90086a5 100755 --- a/plugins/MacVST/CStrip/CStrip.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/CStrip/CStrip.xcodeproj/christopherjohnson.perspectivev3 @@ -323,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>628 335 810 487 0 0 1440 878 </string> + <string>568 285 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -351,11 +351,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B181AEB204C93FE00516BEE</string> + <string>8B79373621F57427006E9731</string> <key>history</key> <array> <string>8B181AD0204C900D00516BEE</string> - <string>8B8E3C051FC2409000F10C24</string> + <string>8B181AEB204C93FE00516BEE</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 69}}</string> + <string>{{0, 0}, {603, 51}}</string> <key>RubberWindowFrame</key> - <string>628 335 810 487 0 0 1440 878 </string> + <string>568 285 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>69pt</string> + <string>51pt</string> </dict> <dict> <key>Proportion</key> - <string>372pt</string> + <string>390pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +394,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 345}}</string> + <string>{{10, 27}, {603, 363}}</string> <key>RubberWindowFrame</key> - <string>628 335 810 487 0 0 1440 878 </string> + <string>568 285 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -478,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B181AD2204C900D00516BEE</string> + <string>8B79373721F57427006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B181AD3204C900D00516BEE</string> + <string>8B79373821F57427006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B181AD4204C900D00516BEE</string> + <string>8B79373921F57427006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>541889534.51824105</real> + <real>569734183.18676102</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -655,7 +655,7 @@ <string>/Users/christopherjohnson/Desktop/MacVST/CStrip/CStrip.xcodeproj</string> </array> <key>WindowString</key> - <string>628 335 810 487 0 0 1440 878 </string> + <string>568 285 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/CStrip/source/CStrip.cpp b/plugins/MacVST/CStrip/source/CStrip.cpp index 1c24d1b..2049ab8 100755 --- a/plugins/MacVST/CStrip/source/CStrip.cpp +++ b/plugins/MacVST/CStrip/source/CStrip.cpp @@ -153,11 +153,8 @@ CStrip::CStrip(audioMasterCallback audioMaster) : nvgRA = nvgRB = 0.0; //end ButterComp - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/CStrip/source/CStrip.h b/plugins/MacVST/CStrip/source/CStrip.h index 10f6729..cc9f722 100755 --- a/plugins/MacVST/CStrip/source/CStrip.h +++ b/plugins/MacVST/CStrip/source/CStrip.h @@ -63,11 +63,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double lastSampleL; diff --git a/plugins/MacVST/CStrip/source/CStripProc.cpp b/plugins/MacVST/CStrip/source/CStripProc.cpp index 272b9b6..60ce59c 100755 --- a/plugins/MacVST/CStrip/source/CStripProc.cpp +++ b/plugins/MacVST/CStrip/source/CStripProc.cpp @@ -20,10 +20,8 @@ void CStrip::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr overallscale = getSampleRate(); compscale = compscale * overallscale; //compscale is the one that's 1 or something like 2.2 for 96K rates - float fpTemp; long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -728,25 +726,14 @@ void CStrip::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr inputSampleR *= outputgain; } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -771,10 +758,8 @@ void CStrip::processDoubleReplacing(double **inputs, double **outputs, VstInt32 overallscale = getSampleRate(); compscale = compscale * overallscale; //compscale is the one that's 1 or something like 2.2 for 96K rates - double fpTemp; long double fpOld = 0.618033988749894848204586; //golden ratio! long double fpNew = 1.0 - fpOld; - long double inputSampleL; long double inputSampleR; @@ -1479,25 +1464,16 @@ void CStrip::processDoubleReplacing(double **inputs, double **outputs, VstInt32 inputSampleR *= outputgain; } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Capacitor/Capacitor.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Capacitor/Capacitor.xcodeproj/christopherjohnson.pbxuser index a60059d..cb9af70 100755 --- a/plugins/MacVST/Capacitor/Capacitor.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Capacitor/Capacitor.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528459434; - PBXWorkspaceStateSaveDate = 528459434; + PBXPerProjectTemplateStateSaveDate = 569733320; + PBXWorkspaceStateSaveDate = 569733320; }; perUserProjectItems = { 8B4847521F6D432A007BD0D0 /* PBXTextBookmark */ = 8B4847521F6D432A007BD0D0 /* PBXTextBookmark */; - 8B9D699F1F7EDD69007AB60F /* PBXTextBookmark */ = 8B9D699F1F7EDD69007AB60F /* PBXTextBookmark */; + 8B79355E21F570E8006E9731 /* PBXTextBookmark */ = 8B79355E21F570E8006E9731 /* PBXTextBookmark */; 8B9D781B1F7FA737007AB60F /* PBXTextBookmark */ = 8B9D781B1F7FA737007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -71,7 +71,7 @@ }; 245463B80991757100464AD3 /* Capacitor.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 1482}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 1417}}"; sepNavSelRange = "{2958, 0}"; sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{375, 39}, {895, 831}}"; @@ -87,9 +87,9 @@ }; 24D8286F09A914000093AEF8 /* CapacitorProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {979, 5811}}"; + sepNavIntBoundsRect = "{{0, 0}, {979, 5096}}"; sepNavSelRange = "{1264, 0}"; - sepNavVisRange = "{970, 2251}"; + sepNavVisRange = "{21333, 3687}"; sepNavWindowFrame = "{{368, 44}, {1026, 834}}"; }; }; @@ -117,15 +117,15 @@ vrLen = 166; vrLoc = 20835; }; - 8B9D699F1F7EDD69007AB60F /* PBXTextBookmark */ = { + 8B79355E21F570E8006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 245463B80991757100464AD3 /* Capacitor.h */; name = "Capacitor.h: 82"; rLen = 0; rLoc = 2958; rType = 0; - vrLen = 36; - vrLoc = 2376; + vrLen = 0; + vrLoc = 0; }; 8B9D781B1F7FA737007AB60F /* PBXTextBookmark */ = { isa = PBXTextBookmark; diff --git a/plugins/MacVST/Capacitor/Capacitor.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Capacitor/Capacitor.xcodeproj/christopherjohnson.perspectivev3 index 486401d..3eed19a 100755 --- a/plugins/MacVST/Capacitor/Capacitor.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Capacitor/Capacitor.xcodeproj/christopherjohnson.perspectivev3 @@ -323,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>476 267 810 487 0 0 1440 878 </string> + <string>443 261 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -351,11 +351,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D781B1F7FA737007AB60F</string> + <string>8B79355E21F570E8006E9731</string> <key>history</key> <array> <string>8B4847521F6D432A007BD0D0</string> - <string>8B9D699F1F7EDD69007AB60F</string> + <string>8B9D781B1F7FA737007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 20}}</string> + <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> - <string>476 267 810 487 0 0 1440 878 </string> + <string>443 261 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>20pt</string> + <string>0pt</string> </dict> <dict> <key>Proportion</key> - <string>421pt</string> + <string>441pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +394,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 394}}</string> + <string>{{10, 27}, {603, 414}}</string> <key>RubberWindowFrame</key> - <string>476 267 810 487 0 0 1440 878 </string> + <string>443 261 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -478,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D781C1F7FA737007AB60F</string> + <string>8B79355F21F570E8006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D781D1F7FA737007AB60F</string> + <string>8B79356021F570E8006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D781E1F7FA737007AB60F</string> + <string>8B79356121F570E8006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528459575.56228501</real> + <real>569733352.25392997</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,11 +652,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D781F1F7FA737007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/Capacitor/Capacitor.xcodeproj</string> </array> <key>WindowString</key> - <string>476 267 810 487 0 0 1440 878 </string> + <string>443 261 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/Capacitor/source/Capacitor.cpp b/plugins/MacVST/Capacitor/source/Capacitor.cpp index 2a62df6..0ade9c9 100755 --- a/plugins/MacVST/Capacitor/source/Capacitor.cpp +++ b/plugins/MacVST/Capacitor/source/Capacitor.cpp @@ -51,11 +51,8 @@ Capacitor::Capacitor(audioMasterCallback audioMaster) : lastHighpass = 1000.0; lastWet = 1000.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Capacitor/source/Capacitor.h b/plugins/MacVST/Capacitor/source/Capacitor.h index d80c676..0799d39 100755 --- a/plugins/MacVST/Capacitor/source/Capacitor.h +++ b/plugins/MacVST/Capacitor/source/Capacitor.h @@ -94,11 +94,8 @@ private: double lastHighpass; double lastWet; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/Capacitor/source/CapacitorProc.cpp b/plugins/MacVST/Capacitor/source/CapacitorProc.cpp index 6accb0d..6b3582b 100755 --- a/plugins/MacVST/Capacitor/source/CapacitorProc.cpp +++ b/plugins/MacVST/Capacitor/source/CapacitorProc.cpp @@ -30,9 +30,6 @@ void Capacitor::processReplacing(float **inputs, float **outputs, VstInt32 sampl double invHighpass; double dry; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -182,25 +179,14 @@ void Capacitor::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleL = (drySampleL * dry) + (inputSampleL * wet); inputSampleR = (drySampleR * dry) + (inputSampleR * wet); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -235,9 +221,6 @@ void Capacitor::processDoubleReplacing(double **inputs, double **outputs, VstInt double invHighpass; double dry; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -387,25 +370,16 @@ void Capacitor::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleL = (drySampleL * dry) + (inputSampleL * wet); inputSampleR = (drySampleR * dry) + (inputSampleR * wet); - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Channel6/Channel6.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Channel6/Channel6.xcodeproj/christopherjohnson.pbxuser index 4f94aef..ca06db1 100755 --- a/plugins/MacVST/Channel6/Channel6.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Channel6/Channel6.xcodeproj/christopherjohnson.pbxuser @@ -49,13 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 553996149; - PBXWorkspaceStateSaveDate = 553996149; + PBXPerProjectTemplateStateSaveDate = 569801998; + PBXWorkspaceStateSaveDate = 569801998; }; perUserProjectItems = { 8BBD195D21054F810015A233 /* PBXTextBookmark */ = 8BBD195D21054F810015A233 /* PBXTextBookmark */; - 8BBD195E21054F810015A233 /* PBXBookmark */ = 8BBD195E21054F810015A233 /* PBXBookmark */; - 8BBD195F21054F810015A233 /* PBXTextBookmark */ = 8BBD195F21054F810015A233 /* PBXTextBookmark */; + 8BEF857021F67D4F00FEF113 /* PBXTextBookmark */ = 8BEF857021F67D4F00FEF113 /* PBXTextBookmark */; + 8BEF857121F67D4F00FEF113 /* PBXBookmark */ = 8BEF857121F67D4F00FEF113 /* PBXBookmark */; + 8BEF857221F67D4F00FEF113 /* PBXTextBookmark */ = 8BEF857221F67D4F00FEF113 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -63,9 +64,9 @@ }; 2407DEB6089929BA00EB68BF /* Channel6.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 2197}}"; + sepNavIntBoundsRect = "{{0, 0}, {740, 2106}}"; sepNavSelRange = "{663, 0}"; - sepNavVisRange = "{0, 1975}"; + sepNavVisRange = "{5547, 903}"; sepNavWindowFrame = "{{12, 47}, {895, 831}}"; }; }; @@ -87,9 +88,9 @@ }; 24D8286F09A914000093AEF8 /* Channel6Proc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {712, 3939}}"; + sepNavIntBoundsRect = "{{0, 0}, {712, 3510}}"; sepNavSelRange = "{9237, 0}"; - sepNavVisRange = "{1490, 318}"; + sepNavVisRange = "{1588, 1022}"; sepNavWindowFrame = "{{4, 47}, {895, 831}}"; }; }; @@ -117,19 +118,29 @@ vrLen = 280; vrLoc = 10459; }; - 8BBD195E21054F810015A233 /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 24D8286F09A914000093AEF8 /* Channel6Proc.cpp */; - }; - 8BBD195F21054F810015A233 /* PBXTextBookmark */ = { + 8BEF857021F67D4F00FEF113 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* Channel6Proc.cpp */; - name = "Channel6Proc.cpp: 267"; + name = "Channel6Proc.cpp: 265"; rLen = 0; rLoc = 9237; rType = 0; - vrLen = 318; - vrLoc = 1490; + vrLen = 1022; + vrLoc = 1588; + }; + 8BEF857121F67D4F00FEF113 /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 2407DEB6089929BA00EB68BF /* Channel6.cpp */; + }; + 8BEF857221F67D4F00FEF113 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2407DEB6089929BA00EB68BF /* Channel6.cpp */; + name = "Channel6.cpp: 26"; + rLen = 0; + rLoc = 663; + rType = 0; + vrLen = 903; + vrLoc = 5547; }; 8D01CCC60486CAD60068D4B7 /* Channel6 */ = { activeExec = 0; diff --git a/plugins/MacVST/Channel6/Channel6.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Channel6/Channel6.xcodeproj/christopherjohnson.perspectivev3 index 9dbd71c..e269302 100755 --- a/plugins/MacVST/Channel6/Channel6.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Channel6/Channel6.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>6</integer> + <integer>5</integer> <integer>4</integer> <integer>0</integer> </array> @@ -323,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>18 291 810 487 0 0 1440 878 </string> + <string>475 316 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -339,7 +339,7 @@ <key>PBXProjectModuleGUID</key> <string>8B0237581D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>Channel6Proc.cpp</string> + <string>Channel6.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -347,15 +347,16 @@ <key>PBXProjectModuleGUID</key> <string>8B0237591D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>Channel6Proc.cpp</string> + <string>Channel6.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BBD195F21054F810015A233</string> + <string>8BEF857221F67D4F00FEF113</string> <key>history</key> <array> <string>8BBD195D21054F810015A233</string> - <string>8BBD195E21054F810015A233</string> + <string>8BEF857021F67D4F00FEF113</string> + <string>8BEF857121F67D4F00FEF113</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 117}}</string> + <string>{{0, 0}, {603, 353}}</string> <key>RubberWindowFrame</key> - <string>18 291 810 487 0 0 1440 878 </string> + <string>475 316 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>117pt</string> + <string>353pt</string> </dict> <dict> <key>Proportion</key> - <string>324pt</string> + <string>88pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +395,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 297}}</string> + <string>{{10, 27}, {603, 61}}</string> <key>RubberWindowFrame</key> - <string>18 291 810 487 0 0 1440 878 </string> + <string>475 316 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -478,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBD196021054F810015A233</string> + <string>8BEF857321F67D4F00FEF113</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBD196121054F810015A233</string> + <string>8BEF857421F67D4F00FEF113</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BBD196221054F810015A233</string> + <string>8BEF857521F67D4F00FEF113</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>553996161.14167202</real> + <real>569802063.73693204</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,11 +653,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BBD196321054F810015A233</string> <string>/Users/christopherjohnson/Desktop/MacVST/Channel6/Channel6.xcodeproj</string> </array> <key>WindowString</key> - <string>18 291 810 487 0 0 1440 878 </string> + <string>475 316 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/Channel6/source/Channel6Proc.cpp b/plugins/MacVST/Channel6/source/Channel6Proc.cpp index d206851..9f16b2a 100755 --- a/plugins/MacVST/Channel6/source/Channel6Proc.cpp +++ b/plugins/MacVST/Channel6/source/Channel6Proc.cpp @@ -121,18 +121,14 @@ void Channel6::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleR *= output; } - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -142,12 +138,6 @@ void Channel6::processReplacing(float **inputs, float **outputs, VstInt32 sample *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Channel6::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -264,18 +254,16 @@ void Channel6::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleR *= output; } - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -285,10 +273,4 @@ void Channel6::processDoubleReplacing(double **inputs, double **outputs, VstInt3 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacVST/Chorus/Chorus.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Chorus/Chorus.xcodeproj/christopherjohnson.pbxuser index d5706d0..21526ae 100755 --- a/plugins/MacVST/Chorus/Chorus.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Chorus/Chorus.xcodeproj/christopherjohnson.pbxuser @@ -51,13 +51,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528459635; - PBXWorkspaceStateSaveDate = 528459635; + PBXPerProjectTemplateStateSaveDate = 569733572; + PBXWorkspaceStateSaveDate = 569733572; }; perUserProjectItems = { - 8B4847DF1F6D5369007BD0D0 /* PBXTextBookmark */ = 8B4847DF1F6D5369007BD0D0 /* PBXTextBookmark */; - 8B9D69E11F7EDDC0007AB60F /* PBXTextBookmark */ = 8B9D69E11F7EDDC0007AB60F /* PBXTextBookmark */; - 8B9D785D1F7FA7A5007AB60F /* PBXTextBookmark */ = 8B9D785D1F7FA7A5007AB60F /* PBXTextBookmark */; + 8B7935DD21F571DE006E9731 /* PBXTextBookmark */ = 8B7935DD21F571DE006E9731 /* PBXTextBookmark */; + 8B7935EF21F5721C006E9731 /* PBXTextBookmark */ = 8B7935EF21F5721C006E9731 /* PBXTextBookmark */; + 8B7935F021F5721C006E9731 /* PBXTextBookmark */ = 8B7935F021F5721C006E9731 /* PBXTextBookmark */; + 8B7935F121F5721C006E9731 /* PBXTextBookmark */ = 8B7935F121F5721C006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -65,18 +66,18 @@ }; 2407DEB6089929BA00EB68BF /* Chorus.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 2002}}"; + sepNavIntBoundsRect = "{{0, 0}, {712, 2041}}"; sepNavSelRange = "{461, 273}"; - sepNavVisRange = "{0, 1929}"; + sepNavVisRange = "{613, 710}"; sepNavWindowFrame = "{{539, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* Chorus.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 1274}}"; - sepNavSelRange = "{2789, 0}"; - sepNavVisRange = "{2681, 110}"; - sepNavWindowFrame = "{{595, 47}, {895, 831}}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 1066}}"; + sepNavSelRange = "{2738, 0}"; + sepNavVisRange = "{489, 2303}"; + sepNavWindowFrame = "{{545, 47}, {895, 831}}"; }; }; 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = { @@ -89,9 +90,9 @@ }; 24D8286F09A914000093AEF8 /* ChorusProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 4264}}"; - sepNavSelRange = "{7772, 0}"; - sepNavVisRange = "{550, 2073}"; + sepNavIntBoundsRect = "{{0, 0}, {775, 4095}}"; + sepNavSelRange = "{1086, 0}"; + sepNavVisRange = "{5380, 625}"; sepNavWindowFrame = "{{545, 47}, {895, 831}}"; }; }; @@ -109,35 +110,45 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B4847DF1F6D5369007BD0D0 /* PBXTextBookmark */ = { + 8B7935DD21F571DE006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 245463B80991757100464AD3 /* Chorus.h */; + name = "Chorus.h: 81"; + rLen = 0; + rLoc = 2792; + rType = 0; + vrLen = 468; + vrLoc = 2259; + }; + 8B7935EF21F5721C006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* ChorusProc.cpp */; - name = "ChorusProc.cpp: 42"; + name = "ChorusProc.cpp: 43"; rLen = 0; rLoc = 1086; rType = 0; - vrLen = 272; - vrLoc = 44; + vrLen = 625; + vrLoc = 5380; }; - 8B9D69E11F7EDDC0007AB60F /* PBXTextBookmark */ = { + 8B7935F021F5721C006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 245463B80991757100464AD3 /* Chorus.h */; - name = "Chorus.h: 75"; - rLen = 0; - rLoc = 2789; + fRef = 2407DEB6089929BA00EB68BF /* Chorus.cpp */; + name = "Chorus.cpp: 19"; + rLen = 273; + rLoc = 461; rType = 0; - vrLen = 128; - vrLoc = 2663; + vrLen = 696; + vrLoc = 613; }; - 8B9D785D1F7FA7A5007AB60F /* PBXTextBookmark */ = { + 8B7935F121F5721C006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 245463B80991757100464AD3 /* Chorus.h */; - name = "Chorus.h: 75"; - rLen = 0; - rLoc = 2789; + fRef = 2407DEB6089929BA00EB68BF /* Chorus.cpp */; + name = "Chorus.cpp: 19"; + rLen = 273; + rLoc = 461; rType = 0; - vrLen = 110; - vrLoc = 2681; + vrLen = 710; + vrLoc = 613; }; 8D01CCC60486CAD60068D4B7 /* Chorus */ = { activeExec = 0; diff --git a/plugins/MacVST/Chorus/Chorus.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Chorus/Chorus.xcodeproj/christopherjohnson.perspectivev3 index b9cb14f..b93e4c2 100755 --- a/plugins/MacVST/Chorus/Chorus.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Chorus/Chorus.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>6</integer> + <integer>7</integer> <integer>4</integer> <integer>0</integer> </array> @@ -339,7 +339,7 @@ <key>PBXProjectModuleGUID</key> <string>8B0237581D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>Chorus.h</string> + <string>Chorus.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -347,15 +347,16 @@ <key>PBXProjectModuleGUID</key> <string>8B0237591D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>Chorus.h</string> + <string>Chorus.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D785D1F7FA7A5007AB60F</string> + <string>8B7935F121F5721C006E9731</string> <key>history</key> <array> - <string>8B4847DF1F6D5369007BD0D0</string> - <string>8B9D69E11F7EDDC0007AB60F</string> + <string>8B7935DD21F571DE006E9731</string> + <string>8B7935EF21F5721C006E9731</string> + <string>8B7935F021F5721C006E9731</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 102}}</string> + <string>{{0, 0}, {603, 300}}</string> <key>RubberWindowFrame</key> <string>628 274 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>102pt</string> + <string>300pt</string> </dict> <dict> <key>Proportion</key> - <string>339pt</string> + <string>141pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 312}}</string> - <key>RubberWindowFrame</key> - <string>628 274 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 114}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -450,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 363}}</string> + <string>{{10, 27}, {603, 114}}</string> + <key>RubberWindowFrame</key> + <string>628 274 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -478,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D785E1F7FA7A5007AB60F</string> + <string>8B7935F221F5721C006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D785F1F7FA7A5007AB60F</string> + <string>8B7935F321F5721C006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D78601F7FA7A5007AB60F</string> + <string>8B7935F421F5721C006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -655,7 +656,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528459685.88356102</real> + <real>569733660.57449198</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -672,7 +673,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D78611F7FA7A5007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/Chorus/Chorus.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Chorus/source/Chorus.cpp b/plugins/MacVST/Chorus/source/Chorus.cpp index a0699ec..1f3965a 100755 --- a/plugins/MacVST/Chorus/source/Chorus.cpp +++ b/plugins/MacVST/Chorus/source/Chorus.cpp @@ -27,12 +27,9 @@ Chorus::Chorus(audioMasterCallback audioMaster) : airEvenR = 0.0; airOddR = 0.0; airFactorR = 0.0; - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Chorus/source/Chorus.h b/plugins/MacVST/Chorus/source/Chorus.h index fb2fb44..5508ac3 100755 --- a/plugins/MacVST/Chorus/source/Chorus.h +++ b/plugins/MacVST/Chorus/source/Chorus.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff const static int totalsamples = 16386; float dL[totalsamples]; @@ -73,6 +70,7 @@ private: double airEvenR; double airOddR; double airFactorR; + bool fpFlip; float A; float B; diff --git a/plugins/MacVST/Chorus/source/ChorusProc.cpp b/plugins/MacVST/Chorus/source/ChorusProc.cpp index aed2bc0..368ade7 100755 --- a/plugins/MacVST/Chorus/source/ChorusProc.cpp +++ b/plugins/MacVST/Chorus/source/ChorusProc.cpp @@ -30,9 +30,6 @@ void Chorus::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr double offset; //this is a double buffer so we will be splitting it in two - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -134,26 +131,16 @@ void Chorus::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr inputSampleL = (inputSampleL * wet) + (drySampleL * dry); inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -188,9 +175,6 @@ void Chorus::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double offset; //this is a double buffer so we will be splitting it in two - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -293,25 +277,17 @@ void Chorus::processDoubleReplacing(double **inputs, double **outputs, VstInt32 inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither fpFlip = !fpFlip; - //end noise shaping on 64 bit output *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.pbxuser index bd6d0eb..bad7b6e 100755 --- a/plugins/MacVST/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.pbxuser @@ -51,8 +51,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528459695; - PBXWorkspaceStateSaveDate = 528459695; + PBXPerProjectTemplateStateSaveDate = 569733687; + PBXWorkspaceStateSaveDate = 569733687; + }; + perUserProjectItems = { + 8B79361421F57279006E9731 /* PBXTextBookmark */ = 8B79361421F57279006E9731 /* PBXTextBookmark */; + 8B79361521F57279006E9731 /* PBXTextBookmark */ = 8B79361521F57279006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -60,17 +64,17 @@ }; 2407DEB6089929BA00EB68BF /* ChorusEnsemble.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 1976}}"; + sepNavIntBoundsRect = "{{0, 0}, {656, 2028}}"; sepNavSelRange = "{791, 0}"; - sepNavVisRange = "{0, 2026}"; + sepNavVisRange = "{687, 156}"; sepNavWindowFrame = "{{12, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* ChorusEnsemble.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 1092}}"; - sepNavSelRange = "{2712, 0}"; - sepNavVisRange = "{495, 2391}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 1053}}"; + sepNavSelRange = "{2726, 0}"; + sepNavVisRange = "{521, 2322}"; sepNavWindowFrame = "{{298, 47}, {895, 831}}"; }; }; @@ -84,9 +88,9 @@ }; 24D8286F09A914000093AEF8 /* ChorusEnsembleProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 5239}}"; - sepNavSelRange = "{11270, 0}"; - sepNavVisRange = "{0, 0}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 5018}}"; + sepNavSelRange = "{3664, 0}"; + sepNavVisRange = "{212, 1846}"; sepNavWindowFrame = "{{394, 47}, {895, 831}}"; }; }; @@ -104,6 +108,26 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; + 8B79361421F57279006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2407DEB6089929BA00EB68BF /* ChorusEnsemble.cpp */; + name = "ChorusEnsemble.cpp: 30"; + rLen = 0; + rLoc = 791; + rType = 0; + vrLen = 142; + vrLoc = 687; + }; + 8B79361521F57279006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2407DEB6089929BA00EB68BF /* ChorusEnsemble.cpp */; + name = "ChorusEnsemble.cpp: 30"; + rLen = 0; + rLoc = 791; + rType = 0; + vrLen = 156; + vrLoc = 687; + }; 8D01CCC60486CAD60068D4B7 /* ChorusEnsemble */ = { activeExec = 0; }; diff --git a/plugins/MacVST/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.perspectivev3 index e4970a3..0d9a5fb 100755 --- a/plugins/MacVST/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>6</integer> + <integer>7</integer> <integer>4</integer> <integer>0</integer> </array> @@ -339,13 +339,23 @@ <key>PBXProjectModuleGUID</key> <string>8B0237581D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string><No Editor></string> + <string>ChorusEnsemble.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> <dict> <key>PBXProjectModuleGUID</key> <string>8B0237591D42B1C400E1E8C8</string> + <key>PBXProjectModuleLabel</key> + <string>ChorusEnsemble.cpp</string> + <key>_historyCapacity</key> + <integer>0</integer> + <key>bookmark</key> + <string>8B79361521F57279006E9731</string> + <key>history</key> + <array> + <string>8B79361421F57279006E9731</string> + </array> </dict> <key>SplitCount</key> <string>1</string> @@ -358,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 0}}</string> + <string>{{0, 0}, {603, 132}}</string> <key>RubberWindowFrame</key> <string>401 330 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>0pt</string> + <string>132pt</string> </dict> <dict> <key>Proportion</key> - <string>441pt</string> + <string>309pt</string> <key>Tabs</key> <array> <dict> @@ -384,8 +394,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> - <key>RubberWindowFrame</key> - <string>401 330 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -439,7 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 345}}</string> + <string>{{10, 27}, {603, 282}}</string> + <key>RubberWindowFrame</key> + <string>401 330 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -467,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D787D1F7FA7CE007AB60F</string> + <string>8B79361621F57279006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D787E1F7FA7CE007AB60F</string> + <string>8B79361721F57279006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D787F1F7FA7CE007AB60F</string> + <string>8B79361821F57279006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -644,7 +654,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528459726.78873903</real> + <real>569733753.83205295</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -661,7 +671,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D78801F7FA7CE007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/ChorusEnsemble/ChorusEnsemble.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/ChorusEnsemble/source/ChorusEnsemble.cpp b/plugins/MacVST/ChorusEnsemble/source/ChorusEnsemble.cpp index b1012f9..318b678 100755 --- a/plugins/MacVST/ChorusEnsemble/source/ChorusEnsemble.cpp +++ b/plugins/MacVST/ChorusEnsemble/source/ChorusEnsemble.cpp @@ -27,12 +27,9 @@ ChorusEnsemble::ChorusEnsemble(audioMasterCallback audioMaster) : airEvenR = 0.0; airOddR = 0.0; airFactorR = 0.0; - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/ChorusEnsemble/source/ChorusEnsemble.h b/plugins/MacVST/ChorusEnsemble/source/ChorusEnsemble.h index bd442ab..e7df332 100755 --- a/plugins/MacVST/ChorusEnsemble/source/ChorusEnsemble.h +++ b/plugins/MacVST/ChorusEnsemble/source/ChorusEnsemble.h @@ -67,12 +67,9 @@ private: double airEvenR; double airOddR; double airFactorR; - - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/ChorusEnsemble/source/ChorusEnsembleProc.cpp b/plugins/MacVST/ChorusEnsemble/source/ChorusEnsembleProc.cpp index 2a783dd..1663244 100755 --- a/plugins/MacVST/ChorusEnsemble/source/ChorusEnsembleProc.cpp +++ b/plugins/MacVST/ChorusEnsemble/source/ChorusEnsembleProc.cpp @@ -17,9 +17,6 @@ void ChorusEnsemble::processReplacing(float **inputs, float **outputs, VstInt32 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double speed = pow(A,3) * 0.001; speed *= overallscale; @@ -174,27 +171,17 @@ void ChorusEnsemble::processReplacing(float **inputs, float **outputs, VstInt32 inputSampleL = (inputSampleL * wet) + (drySampleL * dry); inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } + fpFlip = !fpFlip; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -216,9 +203,6 @@ void ChorusEnsemble::processDoubleReplacing(double **inputs, double **outputs, V double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double speed = pow(A,3) * 0.001; speed *= overallscale; @@ -373,27 +357,19 @@ void ChorusEnsemble::processDoubleReplacing(double **inputs, double **outputs, V inputSampleL = (inputSampleL * wet) + (drySampleL * dry); inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } + fpFlip = !fpFlip; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.pbxuser index 9aaee37..ecb292e 100755 --- a/plugins/MacVST/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.pbxuser @@ -49,11 +49,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528459736; - PBXWorkspaceStateSaveDate = 528459736; + PBXPerProjectTemplateStateSaveDate = 569733783; + PBXWorkspaceStateSaveDate = 569733783; }; perUserProjectItems = { - 8B9D6A261F7EDE28007AB60F /* PBXTextBookmark */ = 8B9D6A261F7EDE28007AB60F /* PBXTextBookmark */; + 8B79362B21F572A0006E9731 /* PBXTextBookmark */ = 8B79362B21F572A0006E9731 /* PBXTextBookmark */; 8B9D78921F7FA7F4007AB60F /* PBXTextBookmark */ = 8B9D78921F7FA7F4007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -62,7 +62,7 @@ }; 2407DEB6089929BA00EB68BF /* ClipOnly.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {733, 793}}"; + sepNavIntBoundsRect = "{{0, 0}, {733, 780}}"; sepNavSelRange = "{1684, 0}"; sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{359, 47}, {895, 831}}"; @@ -106,15 +106,15 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B9D6A261F7EDE28007AB60F /* PBXTextBookmark */ = { + 8B79362B21F572A0006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 2407DEB6089929BA00EB68BF /* ClipOnly.cpp */; name = "ClipOnly.cpp: 42"; rLen = 0; rLoc = 1684; rType = 0; - vrLen = 93; - vrLoc = 1724; + vrLen = 0; + vrLoc = 0; }; 8B9D78921F7FA7F4007AB60F /* PBXTextBookmark */ = { isa = PBXTextBookmark; diff --git a/plugins/MacVST/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.perspectivev3 index 5203c89..6cad4dd 100755 --- a/plugins/MacVST/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.perspectivev3 @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D78921F7FA7F4007AB60F</string> + <string>8B79362B21F572A0006E9731</string> <key>history</key> <array> - <string>8B9D6A261F7EDE28007AB60F</string> + <string>8B9D78921F7FA7F4007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 32}}</string> + <string>{{0, 0}, {603, 13}}</string> <key>RubberWindowFrame</key> <string>196 332 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>32pt</string> + <string>13pt</string> </dict> <dict> <key>Proportion</key> - <string>409pt</string> + <string>428pt</string> <key>Tabs</key> <array> <dict> @@ -393,7 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 382}}</string> + <string>{{10, 27}, {603, 401}}</string> <key>RubberWindowFrame</key> <string>196 332 810 487 0 0 1440 878 </string> </dict> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D78931F7FA7F4007AB60F</string> + <string>8B79362C21F572A0006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D78941F7FA7F4007AB60F</string> + <string>8B79362D21F572A0006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D78951F7FA7F4007AB60F</string> + <string>8B79362E21F572A0006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528459764.02394903</real> + <real>569733792.81656504</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,7 +651,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D78961F7FA7F4007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/ClipOnly/ClipOnly.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.pbxuser index 6a04444..131d5b2 100755 --- a/plugins/MacVST/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.pbxuser @@ -49,11 +49,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528459773; - PBXWorkspaceStateSaveDate = 528459773; + PBXPerProjectTemplateStateSaveDate = 569733814; + PBXWorkspaceStateSaveDate = 569733814; }; perUserProjectItems = { - 8B9D6A9F1F7EDF5C007AB60F /* PBXTextBookmark */ = 8B9D6A9F1F7EDF5C007AB60F /* PBXTextBookmark */; + 8B79364B21F572C9006E9731 /* PBXTextBookmark */ = 8B79364B21F572C9006E9731 /* PBXTextBookmark */; 8B9D78B21F7FA812007AB60F /* PBXTextBookmark */ = 8B9D78B21F7FA812007AB60F /* PBXTextBookmark */; 8BB1EB551F76F0C500413848 /* PBXTextBookmark */ = 8BB1EB551F76F0C500413848 /* PBXTextBookmark */; }; @@ -87,9 +87,9 @@ }; 24D8286F09A914000093AEF8 /* Console4BussProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {712, 4043}}"; + sepNavIntBoundsRect = "{{0, 0}, {712, 3562}}"; sepNavSelRange = "{5847, 0}"; - sepNavVisRange = "{5332, 516}"; + sepNavVisRange = "{5384, 639}"; sepNavWindowFrame = "{{531, 47}, {895, 831}}"; }; }; @@ -107,15 +107,15 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B9D6A9F1F7EDF5C007AB60F /* PBXTextBookmark */ = { + 8B79364B21F572C9006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* Console4BussProc.cpp */; - name = "Console4BussProc.cpp: 169"; + name = "Console4BussProc.cpp: 171"; rLen = 0; rLoc = 5847; rType = 0; - vrLen = 526; - vrLoc = 5322; + vrLen = 639; + vrLoc = 5384; }; 8B9D78B21F7FA812007AB60F /* PBXTextBookmark */ = { isa = PBXTextBookmark; diff --git a/plugins/MacVST/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.perspectivev3 index 50d91cf..ab709b7 100755 --- a/plugins/MacVST/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.perspectivev3 @@ -351,11 +351,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D78B21F7FA812007AB60F</string> + <string>8B79364B21F572C9006E9731</string> <key>history</key> <array> <string>8BB1EB551F76F0C500413848</string> - <string>8B9D6A9F1F7EDF5C007AB60F</string> + <string>8B9D78B21F7FA812007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 292}}</string> + <string>{{0, 0}, {603, 285}}</string> <key>RubberWindowFrame</key> <string>585 260 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>292pt</string> + <string>285pt</string> </dict> <dict> <key>Proportion</key> - <string>149pt</string> + <string>156pt</string> <key>Tabs</key> <array> <dict> @@ -394,7 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 122}}</string> + <string>{{10, 27}, {603, 129}}</string> <key>RubberWindowFrame</key> <string>585 260 810 487 0 0 1440 878 </string> </dict> @@ -478,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D78B31F7FA812007AB60F</string> + <string>8B79364C21F572C9006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D78B41F7FA812007AB60F</string> + <string>8B79364D21F572C9006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D78B51F7FA812007AB60F</string> + <string>8B79364E21F572C9006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528459794.51351899</real> + <real>569733833.14621103</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,7 +652,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D78B61F7FA812007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/Console4Buss/Console4Buss.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Console4Buss/source/Console4Buss.cpp b/plugins/MacVST/Console4Buss/source/Console4Buss.cpp index 79c7f6f..0c8e00c 100755 --- a/plugins/MacVST/Console4Buss/source/Console4Buss.cpp +++ b/plugins/MacVST/Console4Buss/source/Console4Buss.cpp @@ -22,11 +22,8 @@ Console4Buss::Console4Buss(audioMasterCallback audioMaster) : gainchase = -90.0; settingchase = -90.0; chasespeed = 350.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; // TODO: uncomment canDo entries according to your plugin's capabilities // _canDo.insert("sendVstEvents"); // plug-in will send Vst events to Host. diff --git a/plugins/MacVST/Console4Buss/source/Console4Buss.h b/plugins/MacVST/Console4Buss/source/Console4Buss.h index b19e6f2..9a9cbfb 100755 --- a/plugins/MacVST/Console4Buss/source/Console4Buss.h +++ b/plugins/MacVST/Console4Buss/source/Console4Buss.h @@ -71,11 +71,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - double fpNShapeLA; - double fpNShapeLB; - double fpNShapeRA; - double fpNShapeRB; - bool fpFlip; + double fpNShapeL; + double fpNShapeR; //default stuff double lastSampleL; double lastSampleR; diff --git a/plugins/MacVST/Console4Buss/source/Console4BussProc.cpp b/plugins/MacVST/Console4Buss/source/Console4BussProc.cpp index 712e496..dde872a 100755 --- a/plugins/MacVST/Console4Buss/source/Console4BussProc.cpp +++ b/plugins/MacVST/Console4Buss/source/Console4BussProc.cpp @@ -18,10 +18,6 @@ void Console4Buss::processReplacing(float **inputs, float **outputs, VstInt32 sa double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - double fpOld = 0.618033988749894848204586; //golden ratio! - double fpNew = 1.0 - fpOld; - long double inputSampleL; long double inputSampleR; long double half; @@ -123,25 +119,14 @@ void Console4Buss::processReplacing(float **inputs, float **outputs, VstInt32 sa //this is the inverse processing for Console: boosts but not so much if there's slew. //is this too subtle an effect? - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -163,9 +148,6 @@ void Console4Buss::processDoubleReplacing(double **inputs, double **outputs, Vst double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -267,25 +249,16 @@ void Console4Buss::processDoubleReplacing(double **inputs, double **outputs, Vst //this is the inverse processing for Console: boosts but not so much if there's slew. //is this too subtle an effect? - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; diff --git a/plugins/MacVST/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.pbxuser index ae8e6d9..b06954f 100755 --- a/plugins/MacVST/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.pbxuser @@ -49,13 +49,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528459803; - PBXWorkspaceStateSaveDate = 528459803; + PBXPerProjectTemplateStateSaveDate = 569733860; + PBXWorkspaceStateSaveDate = 569733860; }; perUserProjectItems = { 8B6F9BAB1D4A8F7100B449D5 /* PBXTextBookmark */ = 8B6F9BAB1D4A8F7100B449D5 /* PBXTextBookmark */; 8B6F9BAC1D4A8F7100B449D5 /* PBXTextBookmark */ = 8B6F9BAC1D4A8F7100B449D5 /* PBXTextBookmark */; - 8B9D6AB31F7EDF7E007AB60F /* PBXTextBookmark */ = 8B9D6AB31F7EDF7E007AB60F /* PBXTextBookmark */; + 8B79366D21F57303006E9731 /* PBXTextBookmark */ = 8B79366D21F57303006E9731 /* PBXTextBookmark */; 8B9D78D21F7FA82E007AB60F /* PBXTextBookmark */ = 8B9D78D21F7FA82E007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -88,9 +88,9 @@ }; 24D8286F09A914000093AEF8 /* Console4ChannelProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {677, 3445}}"; + sepNavIntBoundsRect = "{{0, 0}, {733, 3146}}"; sepNavSelRange = "{3799, 0}"; - sepNavVisRange = "{179, 112}"; + sepNavVisRange = "{3549, 652}"; sepNavWindowFrame = "{{545, 47}, {895, 831}}"; }; }; @@ -128,15 +128,15 @@ vrLen = 150; vrLoc = 2674; }; - 8B9D6AB31F7EDF7E007AB60F /* PBXTextBookmark */ = { + 8B79366D21F57303006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* Console4ChannelProc.cpp */; - name = "Console4ChannelProc.cpp: 107"; + name = "Console4ChannelProc.cpp: 106"; rLen = 0; rLoc = 3799; rType = 0; - vrLen = 174; - vrLoc = 117; + vrLen = 652; + vrLoc = 3549; }; 8B9D78D21F7FA82E007AB60F /* PBXTextBookmark */ = { isa = PBXTextBookmark; diff --git a/plugins/MacVST/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.perspectivev3 index 351193c..8c6b190 100755 --- a/plugins/MacVST/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.perspectivev3 @@ -351,12 +351,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D78D21F7FA82E007AB60F</string> + <string>8B79366D21F57303006E9731</string> <key>history</key> <array> <string>8B6F9BAB1D4A8F7100B449D5</string> <string>8B6F9BAC1D4A8F7100B449D5</string> - <string>8B9D6AB31F7EDF7E007AB60F</string> + <string>8B9D78D21F7FA82E007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 86}}</string> + <string>{{0, 0}, {603, 268}}</string> <key>RubberWindowFrame</key> <string>592 288 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>86pt</string> + <string>268pt</string> </dict> <dict> <key>Proportion</key> - <string>355pt</string> + <string>173pt</string> <key>Tabs</key> <array> <dict> @@ -395,7 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 328}}</string> + <string>{{10, 27}, {603, 146}}</string> <key>RubberWindowFrame</key> <string>592 288 810 487 0 0 1440 878 </string> </dict> @@ -479,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D78D31F7FA82E007AB60F</string> + <string>8B79366E21F57303006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D78D41F7FA82E007AB60F</string> + <string>8B79366F21F57303006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D78D51F7FA82E007AB60F</string> + <string>8B79367021F57303006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528459822.224684</real> + <real>569733891.37075198</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,7 +653,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D78D61F7FA82E007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/Console4Channel/Console4Channel.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Console4Channel/source/Console4Channel.cpp b/plugins/MacVST/Console4Channel/source/Console4Channel.cpp index 52f6190..2e524a1 100755 --- a/plugins/MacVST/Console4Channel/source/Console4Channel.cpp +++ b/plugins/MacVST/Console4Channel/source/Console4Channel.cpp @@ -20,11 +20,8 @@ Console4Channel::Console4Channel(audioMasterCallback audioMaster) : gainchase = -90.0; settingchase = -90.0; chasespeed = 350.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; // TODO: uncomment canDo entries according to your plugin's capabilities // _canDo.insert("sendVstEvents"); // plug-in will send Vst events to Host. diff --git a/plugins/MacVST/Console4Channel/source/Console4Channel.h b/plugins/MacVST/Console4Channel/source/Console4Channel.h index 861ebe3..564853a 100755 --- a/plugins/MacVST/Console4Channel/source/Console4Channel.h +++ b/plugins/MacVST/Console4Channel/source/Console4Channel.h @@ -76,11 +76,8 @@ private: double settingchase; double chasespeed; - double fpNShapeLA; - double fpNShapeLB; - double fpNShapeRA; - double fpNShapeRB; - bool fpFlip; + double fpNShapeL; + double fpNShapeR; //default stuff float gain; }; diff --git a/plugins/MacVST/Console4Channel/source/Console4ChannelProc.cpp b/plugins/MacVST/Console4Channel/source/Console4ChannelProc.cpp index 9bf7244..3538710 100755 --- a/plugins/MacVST/Console4Channel/source/Console4ChannelProc.cpp +++ b/plugins/MacVST/Console4Channel/source/Console4ChannelProc.cpp @@ -18,10 +18,6 @@ void Console4Channel::processReplacing(float **inputs, float **outputs, VstInt32 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - double fpOld = 0.618033988749894848204586; //golden ratio! - double fpNew = 1.0 - fpOld; - long double inputSampleL; long double inputSampleR; long double half; @@ -105,25 +101,14 @@ void Console4Channel::processReplacing(float **inputs, float **outputs, VstInt32 //this is part of the Purest line: stuff that is on every track //needs to be DAMN LOW ON MATH srsly guys - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -145,9 +130,6 @@ void Console4Channel::processDoubleReplacing(double **inputs, double **outputs, double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -232,25 +214,16 @@ void Console4Channel::processDoubleReplacing(double **inputs, double **outputs, //this is part of the Purest line: stuff that is on every track //needs to be DAMN LOW ON MATH srsly guys - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.pbxuser index e36a6fc..2cc7c8e 100755 --- a/plugins/MacVST/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.pbxuser @@ -49,8 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 537052529; - PBXWorkspaceStateSaveDate = 537052529; + PBXPerProjectTemplateStateSaveDate = 569733916; + PBXWorkspaceStateSaveDate = 569733916; + }; + perUserProjectItems = { + 8B79369921F5736A006E9731 /* PBXBookmark */ = 8B79369921F5736A006E9731 /* PBXBookmark */; + 8B79369A21F5736A006E9731 /* PBXTextBookmark */ = 8B79369A21F5736A006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -82,9 +86,9 @@ }; 24D8286F09A914000093AEF8 /* Console5BussProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 4615}}"; + sepNavIntBoundsRect = "{{0, 0}, {712, 4407}}"; sepNavSelRange = "{4031, 0}"; - sepNavVisRange = "{2914, 2017}"; + sepNavVisRange = "{5584, 820}"; sepNavWindowFrame = "{{540, 47}, {895, 831}}"; }; }; @@ -102,6 +106,20 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; + 8B79369921F5736A006E9731 /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 24D8286F09A914000093AEF8 /* Console5BussProc.cpp */; + }; + 8B79369A21F5736A006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 24D8286F09A914000093AEF8 /* Console5BussProc.cpp */; + name = "Console5BussProc.cpp: 112"; + rLen = 0; + rLoc = 4031; + rType = 0; + vrLen = 820; + vrLoc = 5584; + }; 8D01CCC60486CAD60068D4B7 /* Console5Buss */ = { activeExec = 0; }; diff --git a/plugins/MacVST/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.perspectivev3 index 2fbab9b..6f86a43 100755 --- a/plugins/MacVST/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.perspectivev3 @@ -339,7 +339,7 @@ <key>PBXProjectModuleGUID</key> <string>8B0237581D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>Gain.h</string> + <string>Console5BussProc.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -347,7 +347,15 @@ <key>PBXProjectModuleGUID</key> <string>8B0237591D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>Gain.h</string> + <string>Console5BussProc.cpp</string> + <key>_historyCapacity</key> + <integer>0</integer> + <key>bookmark</key> + <string>8B79369A21F5736A006E9731</string> + <key>history</key> + <array> + <string>8B79369921F5736A006E9731</string> + </array> </dict> <key>SplitCount</key> <string>1</string> @@ -360,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 0}}</string> + <string>{{0, 0}, {603, 358}}</string> <key>RubberWindowFrame</key> <string>570 328 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>0pt</string> + <string>358pt</string> </dict> <dict> <key>Proportion</key> - <string>441pt</string> + <string>83pt</string> <key>Tabs</key> <array> <dict> @@ -385,7 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 56}}</string> <key>RubberWindowFrame</key> <string>570 328 810 487 0 0 1440 878 </string> </dict> @@ -469,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B4D27CB2002C6770051360A</string> + <string>8B79369B21F5736A006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B4D27CC2002C6770051360A</string> + <string>8B79369C21F5736A006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B4D27CD2002C6770051360A</string> + <string>8B79369D21F5736A006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>537052791.12328696</real> + <real>569733994.75000596</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,7 +651,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B4D27CE2002C6770051360A</string> <string>/Users/christopherjohnson/Desktop/MacVST/Console5Buss/Console5Buss.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Console5Buss/source/Console5Buss.cpp b/plugins/MacVST/Console5Buss/source/Console5Buss.cpp index 7f1c915..7e937a8 100755 --- a/plugins/MacVST/Console5Buss/source/Console5Buss.cpp +++ b/plugins/MacVST/Console5Buss/source/Console5Buss.cpp @@ -22,11 +22,8 @@ Console5Buss::Console5Buss(audioMasterCallback audioMaster) : gainchase = -90.0; settingchase = -90.0; chasespeed = 350.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Console5Buss/source/Console5Buss.h b/plugins/MacVST/Console5Buss/source/Console5Buss.h index 6ece284..0166f33 100755 --- a/plugins/MacVST/Console5Buss/source/Console5Buss.h +++ b/plugins/MacVST/Console5Buss/source/Console5Buss.h @@ -61,11 +61,8 @@ private: double gainchase; double settingchase; double chasespeed; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/Console5Buss/source/Console5BussProc.cpp b/plugins/MacVST/Console5Buss/source/Console5BussProc.cpp index 28b4980..21069e8 100755 --- a/plugins/MacVST/Console5Buss/source/Console5BussProc.cpp +++ b/plugins/MacVST/Console5Buss/source/Console5BussProc.cpp @@ -17,9 +17,6 @@ void Console5Buss::processReplacing(float **inputs, float **outputs, VstInt32 sa double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double differenceL; @@ -151,25 +148,14 @@ void Console5Buss::processReplacing(float **inputs, float **outputs, VstInt32 sa lastFXBussR *= (1.0 - (nearZeroR * bassTrim)); //this cuts back the DC offset directly, relative to how near zero we are - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -191,9 +177,6 @@ void Console5Buss::processDoubleReplacing(double **inputs, double **outputs, Vst double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double differenceL; @@ -325,25 +308,16 @@ void Console5Buss::processDoubleReplacing(double **inputs, double **outputs, Vst lastFXBussR *= (1.0 - (nearZeroR * bassTrim)); //this cuts back the DC offset directly, relative to how near zero we are - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.pbxuser index e08fe8a..de35f26 100755 --- a/plugins/MacVST/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 537049611; - PBXWorkspaceStateSaveDate = 537049611; + PBXPerProjectTemplateStateSaveDate = 569734018; + PBXWorkspaceStateSaveDate = 569734018; }; perUserProjectItems = { - 8B4D27482002BEEF0051360A /* XCBuildMessageTextBookmark */ = 8B4D27482002BEEF0051360A /* XCBuildMessageTextBookmark */; 8B4D27492002BEEF0051360A /* PBXTextBookmark */ = 8B4D27492002BEEF0051360A /* PBXTextBookmark */; + 8B7936B021F5738D006E9731 /* PBXTextBookmark */ = 8B7936B021F5738D006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -78,9 +78,9 @@ }; 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {838, 19747}}"; + sepNavIntBoundsRect = "{{0, 0}, {838, 19877}}"; sepNavSelRange = "{10616, 0}"; - sepNavVisRange = "{10459, 399}"; + sepNavVisRange = "{10459, 280}"; sepNavWindowFrame = "{{15, 42}, {895, 831}}"; }; }; @@ -106,23 +106,24 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B4D27482002BEEF0051360A /* XCBuildMessageTextBookmark */ = { + 8B4D27492002BEEF0051360A /* PBXTextBookmark */ = { isa = PBXTextBookmark; - comments = "Deprecated conversion from string constant to 'char*'"; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; - fallbackIsa = XCBuildMessageTextBookmark; - rLen = 1; - rLoc = 306; - rType = 1; + name = "audioeffectx.cpp: 307"; + rLen = 0; + rLoc = 10616; + rType = 0; + vrLen = 399; + vrLoc = 10459; }; - 8B4D27492002BEEF0051360A /* PBXTextBookmark */ = { + 8B7936B021F5738D006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; name = "audioeffectx.cpp: 307"; rLen = 0; rLoc = 10616; rType = 0; - vrLen = 399; + vrLen = 280; vrLoc = 10459; }; 8D01CCC60486CAD60068D4B7 /* Console5Channel */ = { diff --git a/plugins/MacVST/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.perspectivev3 index 14c4536..cd63b6d 100755 --- a/plugins/MacVST/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.perspectivev3 @@ -323,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>20 312 810 487 0 0 1440 878 </string> + <string>373 235 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B4D27492002BEEF0051360A</string> + <string>8B7936B021F5738D006E9731</string> <key>history</key> <array> - <string>8B4D27482002BEEF0051360A</string> + <string>8B4D27492002BEEF0051360A</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 132}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> - <string>20 312 810 487 0 0 1440 878 </string> + <string>373 235 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -393,7 +393,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 297}}</string> + <key>RubberWindowFrame</key> + <string>373 235 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -448,8 +450,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 282}}</string> - <key>RubberWindowFrame</key> - <string>20 312 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B4D274A2002BEEF0051360A</string> + <string>8B7936B121F5738D006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B4D274B2002BEEF0051360A</string> + <string>8B7936B221F5738D006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B4D274C2002BEEF0051360A</string> + <string>8B7936B321F5738D006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>537050863.33069801</real> + <real>569734029.92668998</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,10 +651,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>/Users/christopherjohnson/Desktop/Console5Channel/Console5Channel.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/Console5Channel/Console5Channel.xcodeproj</string> </array> <key>WindowString</key> - <string>20 312 810 487 0 0 1440 878 </string> + <string>373 235 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/Console5Channel/source/Console5Channel.cpp b/plugins/MacVST/Console5Channel/source/Console5Channel.cpp index 9305bf4..1a8f6fb 100755 --- a/plugins/MacVST/Console5Channel/source/Console5Channel.cpp +++ b/plugins/MacVST/Console5Channel/source/Console5Channel.cpp @@ -22,11 +22,8 @@ Console5Channel::Console5Channel(audioMasterCallback audioMaster) : gainchase = -90.0; settingchase = -90.0; chasespeed = 350.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Console5Channel/source/Console5Channel.h b/plugins/MacVST/Console5Channel/source/Console5Channel.h index 59e7950..bbc58b3 100755 --- a/plugins/MacVST/Console5Channel/source/Console5Channel.h +++ b/plugins/MacVST/Console5Channel/source/Console5Channel.h @@ -61,11 +61,8 @@ private: double gainchase; double settingchase; double chasespeed; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/Console5Channel/source/Console5ChannelProc.cpp b/plugins/MacVST/Console5Channel/source/Console5ChannelProc.cpp index 428e5e4..a010170 100755 --- a/plugins/MacVST/Console5Channel/source/Console5ChannelProc.cpp +++ b/plugins/MacVST/Console5Channel/source/Console5ChannelProc.cpp @@ -17,9 +17,6 @@ void Console5Channel::processReplacing(float **inputs, float **outputs, VstInt32 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double differenceL; @@ -152,25 +149,14 @@ void Console5Channel::processReplacing(float **inputs, float **outputs, VstInt32 inputSampleR = sin(inputSampleR); //amplitude aspect - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -192,9 +178,6 @@ void Console5Channel::processDoubleReplacing(double **inputs, double **outputs, double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double differenceL; @@ -327,25 +310,16 @@ void Console5Channel::processDoubleReplacing(double **inputs, double **outputs, inputSampleR = sin(inputSampleR); //amplitude aspect - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.pbxuser index 22f68fb..a2f82e3 100755 --- a/plugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* Console5DarkCh */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 537050480; - PBXWorkspaceStateSaveDate = 537050480; + PBXPerProjectTemplateStateSaveDate = 569734052; + PBXWorkspaceStateSaveDate = 569734052; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* Console5DarkCh */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.perspectivev3 index 023b57c..ccf0ad5 100755 --- a/plugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.perspectivev3 @@ -323,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>634 254 810 487 0 0 1440 878 </string> + <string>630 254 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -362,7 +362,7 @@ <key>Frame</key> <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> - <string>634 254 810 487 0 0 1440 878 </string> + <string>630 254 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -387,7 +387,7 @@ <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> <key>RubberWindowFrame</key> - <string>634 254 810 487 0 0 1440 878 </string> + <string>630 254 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B4D275E2002BF6F0051360A</string> + <string>8B7936D021F573AD006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B4D275F2002BF6F0051360A</string> + <string>8B7936D121F573AD006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B4D27602002BF6F0051360A</string> + <string>8B7936D221F573AD006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>537050991.40073204</real> + <real>569734061.13556397</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,10 +643,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>/Users/christopherjohnson/Desktop/Console5DarkCh/Console5DarkCh.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj</string> </array> <key>WindowString</key> - <string>634 254 810 487 0 0 1440 878 </string> + <string>630 254 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/project.pbxproj b/plugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/project.pbxproj index 5cebff5..3fc2cb2 100755 --- a/plugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/project.pbxproj +++ b/plugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* Console5DarkCh */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "Console5DarkCh" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* Console5DarkCh */, + 8D01CCC60486CAD60068D4B7 /* AudioUnit */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/Console5DarkCh/source/Console5DarkCh.cpp b/plugins/MacVST/Console5DarkCh/source/Console5DarkCh.cpp index 0d613a9..350a6b3 100755 --- a/plugins/MacVST/Console5DarkCh/source/Console5DarkCh.cpp +++ b/plugins/MacVST/Console5DarkCh/source/Console5DarkCh.cpp @@ -22,11 +22,8 @@ Console5DarkCh::Console5DarkCh(audioMasterCallback audioMaster) : gainchase = -90.0; settingchase = -90.0; chasespeed = 350.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Console5DarkCh/source/Console5DarkCh.h b/plugins/MacVST/Console5DarkCh/source/Console5DarkCh.h index 558e4f7..3265f5c 100755 --- a/plugins/MacVST/Console5DarkCh/source/Console5DarkCh.h +++ b/plugins/MacVST/Console5DarkCh/source/Console5DarkCh.h @@ -61,11 +61,8 @@ private: double gainchase; double settingchase; double chasespeed; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/Console5DarkCh/source/Console5DarkChProc.cpp b/plugins/MacVST/Console5DarkCh/source/Console5DarkChProc.cpp index e17ff88c..ba3a842 100755 --- a/plugins/MacVST/Console5DarkCh/source/Console5DarkChProc.cpp +++ b/plugins/MacVST/Console5DarkCh/source/Console5DarkChProc.cpp @@ -17,9 +17,6 @@ void Console5DarkCh::processReplacing(float **inputs, float **outputs, VstInt32 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double differenceL; @@ -152,25 +149,14 @@ void Console5DarkCh::processReplacing(float **inputs, float **outputs, VstInt32 inputSampleR = sin(inputSampleR); //amplitude aspect - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -192,9 +178,6 @@ void Console5DarkCh::processDoubleReplacing(double **inputs, double **outputs, V double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double differenceL; @@ -327,25 +310,16 @@ void Console5DarkCh::processDoubleReplacing(double **inputs, double **outputs, V inputSampleR = sin(inputSampleR); //amplitude aspect - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.pbxuser index a62c485..9a892c1 100755 --- a/plugins/MacVST/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.pbxuser @@ -49,8 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 541893950; - PBXWorkspaceStateSaveDate = 541893950; + PBXPerProjectTemplateStateSaveDate = 569734086; + PBXWorkspaceStateSaveDate = 569734086; + }; + perUserProjectItems = { + 8B79370021F573DE006E9731 /* PBXTextBookmark */ = 8B79370021F573DE006E9731 /* PBXTextBookmark */; + 8B79370121F573DE006E9731 /* PBXTextBookmark */ = 8B79370121F573DE006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -82,9 +86,9 @@ }; 24D8286F09A914000093AEF8 /* CrunchyGrooveWearProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 15678}}"; - sepNavSelRange = "{25948, 0}"; - sepNavVisRange = "{40338, 2491}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 11635}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 259}"; sepNavWindowFrame = "{{262, 47}, {895, 831}}"; }; }; @@ -102,6 +106,26 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; + 8B79370021F573DE006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 24D8286F09A914000093AEF8 /* CrunchyGrooveWearProc.cpp */; + name = "CrunchyGrooveWearProc.cpp: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 259; + vrLoc = 0; + }; + 8B79370121F573DE006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 24D8286F09A914000093AEF8 /* CrunchyGrooveWearProc.cpp */; + name = "CrunchyGrooveWearProc.cpp: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 259; + vrLoc = 0; + }; 8D01CCC60486CAD60068D4B7 /* CrunchyGrooveWear */ = { activeExec = 0; }; diff --git a/plugins/MacVST/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.perspectivev3 index c005614..62a585f 100755 --- a/plugins/MacVST/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.perspectivev3 @@ -300,6 +300,8 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> + <integer>6</integer> + <integer>4</integer> <integer>0</integer> </array> </array> @@ -321,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>6 301 810 487 0 0 1440 878 </string> + <string>328 253 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -337,7 +339,7 @@ <key>PBXProjectModuleGUID</key> <string>8B0237581D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>Gain.h</string> + <string>CrunchyGrooveWearProc.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -345,7 +347,15 @@ <key>PBXProjectModuleGUID</key> <string>8B0237591D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>Gain.h</string> + <string>CrunchyGrooveWearProc.cpp</string> + <key>_historyCapacity</key> + <integer>0</integer> + <key>bookmark</key> + <string>8B79370121F573DE006E9731</string> + <key>history</key> + <array> + <string>8B79370021F573DE006E9731</string> + </array> </dict> <key>SplitCount</key> <string>1</string> @@ -358,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 0}}</string> + <string>{{0, 0}, {603, 132}}</string> <key>RubberWindowFrame</key> - <string>6 301 810 487 0 0 1440 878 </string> + <string>328 253 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>0pt</string> + <string>132pt</string> </dict> <dict> <key>Proportion</key> - <string>441pt</string> + <string>309pt</string> <key>Tabs</key> <array> <dict> @@ -383,9 +393,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 282}}</string> <key>RubberWindowFrame</key> - <string>6 301 810 487 0 0 1440 878 </string> + <string>328 253 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -467,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B181BE8204CA7DE00516BEE</string> + <string>8B79370221F573DE006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B181BE9204CA7DE00516BEE</string> + <string>8B79370321F573DE006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B181BEA204CA7DE00516BEE</string> + <string>8B79370421F573DE006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -624,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>541894622.72385299</real> + <real>569734110.80127895</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -641,10 +651,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>/Users/christopherjohnson/Desktop/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj</string> </array> <key>WindowString</key> - <string>6 301 810 487 0 0 1440 878 </string> + <string>328 253 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWear.cpp b/plugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWear.cpp index 68a7fd9..6653b91 100755 --- a/plugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWear.cpp +++ b/plugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWear.cpp @@ -36,11 +36,8 @@ CrunchyGrooveWear::CrunchyGrooveWear(audioMasterCallback audioMaster) : cMidPrevR = 0.0; dMidPrevR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWear.h b/plugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWear.h index ed304c5..3489e5b 100755 --- a/plugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWear.h +++ b/plugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWear.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double aMidL[21]; diff --git a/plugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWearProc.cpp b/plugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWearProc.cpp index 4eec93e..3c9762e 100755 --- a/plugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWearProc.cpp +++ b/plugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWearProc.cpp @@ -14,9 +14,6 @@ void CrunchyGrooveWear::processReplacing(float **inputs, float **outputs, VstInt float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double overallscale = (pow(A,2)*19.0)+1.0; double gain = overallscale; @@ -434,25 +431,14 @@ void CrunchyGrooveWear::processReplacing(float **inputs, float **outputs, VstInt drySampleR = inputSampleR; } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -471,9 +457,6 @@ void CrunchyGrooveWear::processDoubleReplacing(double **inputs, double **outputs double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double overallscale = (pow(A,2)*19.0)+1.0; double gain = overallscale; @@ -891,25 +874,16 @@ void CrunchyGrooveWear::processDoubleReplacing(double **inputs, double **outputs drySampleR = inputSampleR; } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Crystal/Crystal.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Crystal/Crystal.xcodeproj/christopherjohnson.pbxuser index bf745a3..d708fdd 100755 --- a/plugins/MacVST/Crystal/Crystal.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Crystal/Crystal.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* Crystal */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 566521896; - PBXWorkspaceStateSaveDate = 566521896; + PBXPerProjectTemplateStateSaveDate = 569734133; + PBXWorkspaceStateSaveDate = 569734133; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* Crystal */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/Crystal/Crystal.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Crystal/Crystal.xcodeproj/christopherjohnson.perspectivev3 index a08084d..741397c 100755 --- a/plugins/MacVST/Crystal/Crystal.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Crystal/Crystal.xcodeproj/christopherjohnson.perspectivev3 @@ -256,6 +256,8 @@ <key>Layout</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -321,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>17 376 810 487 0 0 1440 878 </string> + <string>354 282 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -358,18 +360,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 102}}</string> + <string>{{0, 0}, {603, 86}}</string> <key>RubberWindowFrame</key> - <string>17 376 810 487 0 0 1440 878 </string> + <string>354 282 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>102pt</string> + <string>86pt</string> </dict> <dict> <key>Proportion</key> - <string>339pt</string> + <string>355pt</string> <key>Tabs</key> <array> <dict> @@ -383,7 +385,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 312}}</string> + <string>{{10, 27}, {603, 328}}</string> + <key>RubberWindowFrame</key> + <string>354 282 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -438,8 +442,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 312}}</string> - <key>RubberWindowFrame</key> - <string>17 376 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -467,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBB351421C4819F00825986</string> + <string>8B79371721F57400006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBB351521C4819F00825986</string> + <string>8B79371821F57400006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BBB351621C4819F00825986</string> + <string>8B79371921F57400006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -624,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>566526367.832932</real> + <real>569734144.20878696</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -641,11 +643,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BBB351721C4819F00825986</string> - <string>/Users/christopherjohnson/Desktop/Crystal/Crystal.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/Crystal/Crystal.xcodeproj</string> </array> <key>WindowString</key> - <string>17 376 810 487 0 0 1440 878 </string> + <string>354 282 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/Crystal/Crystal.xcodeproj/project.pbxproj b/plugins/MacVST/Crystal/Crystal.xcodeproj/project.pbxproj index 871c751..79cf9d3 100755 --- a/plugins/MacVST/Crystal/Crystal.xcodeproj/project.pbxproj +++ b/plugins/MacVST/Crystal/Crystal.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* Crystal */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "Crystal" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* Crystal */, + 8D01CCC60486CAD60068D4B7 /* AudioUnit */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/Crystal/source/CrystalProc.cpp b/plugins/MacVST/Crystal/source/CrystalProc.cpp index 9c62355..7e696a7 100755 --- a/plugins/MacVST/Crystal/source/CrystalProc.cpp +++ b/plugins/MacVST/Crystal/source/CrystalProc.cpp @@ -191,18 +191,14 @@ void Crystal::processReplacing(float **inputs, float **outputs, VstInt32 sampleF //when current and old samples are different from each other, otherwise you can't tell it's there. //This is not only during silence but the tops of low frequency waves: it scales down to affect lows more gently. - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -212,12 +208,6 @@ void Crystal::processReplacing(float **inputs, float **outputs, VstInt32 sampleF *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Crystal::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -404,18 +394,16 @@ void Crystal::processDoubleReplacing(double **inputs, double **outputs, VstInt32 //when current and old samples are different from each other, otherwise you can't tell it's there. //This is not only during silence but the tops of low frequency waves: it scales down to affect lows more gently. - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -425,10 +413,4 @@ void Crystal::processDoubleReplacing(double **inputs, double **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacVST/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.pbxuser index 8adad26..d95b26c 100755 --- a/plugins/MacVST/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* DCVoltage */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528459831; - PBXWorkspaceStateSaveDate = 528459831; + PBXPerProjectTemplateStateSaveDate = 569734209; + PBXWorkspaceStateSaveDate = 569734209; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* DCVoltage */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.perspectivev3 index 2043a0b..a9ec7eb 100755 --- a/plugins/MacVST/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.perspectivev3 @@ -360,18 +360,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 13}}</string> + <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> <string>116 319 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>13pt</string> + <string>0pt</string> </dict> <dict> <key>Proportion</key> - <string>428pt</string> + <string>441pt</string> <key>Tabs</key> <array> <dict> @@ -385,7 +385,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 401}}</string> + <string>{{10, 27}, {603, 414}}</string> <key>RubberWindowFrame</key> <string>116 319 810 487 0 0 1440 878 </string> </dict> @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D78FC1F7FA875007AB60F</string> + <string>8B79375621F5744A006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D78FD1F7FA875007AB60F</string> + <string>8B79375721F5744A006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D78FE1F7FA875007AB60F</string> + <string>8B79375821F5744A006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528459893.06026101</real> + <real>569734218.48310196</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,7 +643,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D78FF1F7FA875007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/DCVoltage/DCVoltage.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/DCVoltage/DCVoltage.xcodeproj/project.pbxproj b/plugins/MacVST/DCVoltage/DCVoltage.xcodeproj/project.pbxproj index b878c4e..ab1df43 100755 --- a/plugins/MacVST/DCVoltage/DCVoltage.xcodeproj/project.pbxproj +++ b/plugins/MacVST/DCVoltage/DCVoltage.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* DCVoltage */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "DCVoltage" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* DCVoltage */, + 8D01CCC60486CAD60068D4B7 /* AudioUnit */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/DeEss/DeEss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/DeEss/DeEss.xcodeproj/christopherjohnson.pbxuser index 71fc919..fd07bbd 100755 --- a/plugins/MacVST/DeEss/DeEss.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/DeEss/DeEss.xcodeproj/christopherjohnson.pbxuser @@ -49,8 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 561683712; - PBXWorkspaceStateSaveDate = 561683712; + PBXPerProjectTemplateStateSaveDate = 569734238; + PBXWorkspaceStateSaveDate = 569734238; + }; + perUserProjectItems = { + 8B79377321F5746E006E9731 /* PBXTextBookmark */ = 8B79377321F5746E006E9731 /* PBXTextBookmark */; + 8B79377421F5746E006E9731 /* PBXTextBookmark */ = 8B79377421F5746E006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -82,9 +86,9 @@ }; 24D8286F09A914000093AEF8 /* DeEssProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 4589}}"; - sepNavSelRange = "{10846, 0}"; - sepNavVisRange = "{9960, 1917}"; + sepNavIntBoundsRect = "{{0, 0}, {796, 4355}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{4813, 714}"; sepNavWindowFrame = "{{47, 47}, {895, 831}}"; }; }; @@ -102,6 +106,26 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; + 8B79377321F5746E006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 24D8286F09A914000093AEF8 /* DeEssProc.cpp */; + name = "DeEssProc.cpp: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 211; + vrLoc = 0; + }; + 8B79377421F5746E006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 24D8286F09A914000093AEF8 /* DeEssProc.cpp */; + name = "DeEssProc.cpp: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 714; + vrLoc = 4813; + }; 8D01CCC60486CAD60068D4B7 /* DeEss */ = { activeExec = 0; }; diff --git a/plugins/MacVST/DeEss/DeEss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/DeEss/DeEss.xcodeproj/christopherjohnson.perspectivev3 index 51981f2..b85a83a 100755 --- a/plugins/MacVST/DeEss/DeEss.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/DeEss/DeEss.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>5</integer> + <integer>6</integer> <integer>4</integer> <integer>0</integer> </array> @@ -323,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>12 385 810 487 0 0 1440 878 </string> + <string>304 315 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -339,7 +339,7 @@ <key>PBXProjectModuleGUID</key> <string>8B0237581D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>Gain.h</string> + <string>DeEssProc.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -347,7 +347,15 @@ <key>PBXProjectModuleGUID</key> <string>8B0237591D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>Gain.h</string> + <string>DeEssProc.cpp</string> + <key>_historyCapacity</key> + <integer>0</integer> + <key>bookmark</key> + <string>8B79377421F5746E006E9731</string> + <key>history</key> + <array> + <string>8B79377321F5746E006E9731</string> + </array> </dict> <key>SplitCount</key> <string>1</string> @@ -360,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 0}}</string> + <string>{{0, 0}, {603, 319}}</string> <key>RubberWindowFrame</key> - <string>12 385 810 487 0 0 1440 878 </string> + <string>304 315 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>0pt</string> + <string>319pt</string> </dict> <dict> <key>Proportion</key> - <string>441pt</string> + <string>122pt</string> <key>Tabs</key> <array> <dict> @@ -385,9 +393,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 95}}</string> <key>RubberWindowFrame</key> - <string>12 385 810 487 0 0 1440 878 </string> + <string>304 315 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -469,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B15DCFB217AA408007AD769</string> + <string>8B79377521F5746E006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B15DCFC217AA408007AD769</string> + <string>8B79377621F5746E006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B15DCFD217AA408007AD769</string> + <string>8B79377721F5746E006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>561685512.74774003</real> + <real>569734254.77218902</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,12 +651,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B15DCFE217AA408007AD769</string> - <string>8B15DCFF217AA408007AD769</string> - <string>/Users/christopherjohnson/Desktop/DeEss/DeEss.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/DeEss/DeEss.xcodeproj</string> </array> <key>WindowString</key> - <string>12 385 810 487 0 0 1440 878 </string> + <string>304 315 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/DeEss/source/DeEssProc.cpp b/plugins/MacVST/DeEss/source/DeEssProc.cpp index 9a8e14b..9b030a4 100755 --- a/plugins/MacVST/DeEss/source/DeEssProc.cpp +++ b/plugins/MacVST/DeEss/source/DeEssProc.cpp @@ -148,18 +148,14 @@ void DeEss::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra flip = !flip; - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -169,12 +165,6 @@ void DeEss::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void DeEss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -318,18 +308,16 @@ void DeEss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s flip = !flip; - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -339,10 +327,4 @@ void DeEss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacVST/DeRez/DeRez.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/DeRez/DeRez.xcodeproj/christopherjohnson.pbxuser index 70ab1db..570f388 100755 --- a/plugins/MacVST/DeRez/DeRez.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/DeRez/DeRez.xcodeproj/christopherjohnson.pbxuser @@ -49,13 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 553892432; - PBXWorkspaceStateSaveDate = 553892432; + PBXPerProjectTemplateStateSaveDate = 569734376; + PBXWorkspaceStateSaveDate = 569734376; }; perUserProjectItems = { + 8B7932CA21F4FB37006E9731 /* PBXTextBookmark */ = 8B7932CA21F4FB37006E9731 /* PBXTextBookmark */; + 8B7932CC21F4FB37006E9731 /* PBXTextBookmark */ = 8B7932CC21F4FB37006E9731 /* PBXTextBookmark */; + 8B7937B821F574F6006E9731 /* PBXTextBookmark */ = 8B7937B821F574F6006E9731 /* PBXTextBookmark */; 8BB8B70521039BF400751000 /* PBXTextBookmark */ = 8BB8B70521039BF400751000 /* PBXTextBookmark */; - 8BB8B70721039BF400751000 /* PBXTextBookmark */ = 8BB8B70721039BF400751000 /* PBXTextBookmark */; - 8BB8B7932103BA6200751000 /* PBXTextBookmark */ = 8BB8B7932103BA6200751000 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -63,25 +64,25 @@ }; 2407DEB6089929BA00EB68BF /* DeRez.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 1820}}"; - sepNavSelRange = "{3400, 0}"; - sepNavVisRange = "{2754, 2017}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 1833}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 119}"; sepNavWindowFrame = "{{48, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* DeRez.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 988}}"; - sepNavSelRange = "{2648, 0}"; - sepNavVisRange = "{410, 2279}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 949}}"; + sepNavSelRange = "{2439, 0}"; + sepNavVisRange = "{361, 2262}"; sepNavWindowFrame = "{{20, 47}, {895, 831}}"; }; }; 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {838, 19864}}"; + sepNavIntBoundsRect = "{{0, 0}, {838, 19851}}"; sepNavSelRange = "{10616, 0}"; - sepNavVisRange = "{10459, 280}"; + sepNavVisRange = "{10579, 157}"; sepNavWindowFrame = "{{15, 42}, {895, 831}}"; }; }; @@ -107,35 +108,45 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8BB8B70521039BF400751000 /* PBXTextBookmark */ = { + 8B7932CA21F4FB37006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 24D8286F09A914000093AEF8 /* DeRezProc.cpp */; - name = "DeRezProc.cpp: 71"; + fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; + name = "audioeffectx.cpp: 307"; rLen = 0; - rLoc = 2818; + rLoc = 10616; rType = 0; - vrLen = 286; - vrLoc = 2669; + vrLen = 157; + vrLoc = 10579; }; - 8BB8B70721039BF400751000 /* PBXTextBookmark */ = { + 8B7932CC21F4FB37006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; - name = "audioeffectx.cpp: 307"; + fRef = 2407DEB6089929BA00EB68BF /* DeRez.cpp */; + name = "DeRez.cpp: 1"; rLen = 0; - rLoc = 10616; + rLoc = 0; rType = 0; - vrLen = 280; - vrLoc = 10459; + vrLen = 167; + vrLoc = 0; }; - 8BB8B7932103BA6200751000 /* PBXTextBookmark */ = { + 8B7937B821F574F6006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; - name = "audioeffectx.cpp: 307"; + fRef = 2407DEB6089929BA00EB68BF /* DeRez.cpp */; + name = "DeRez.cpp: 1"; rLen = 0; - rLoc = 10616; + rLoc = 0; + rType = 0; + vrLen = 119; + vrLoc = 0; + }; + 8BB8B70521039BF400751000 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 24D8286F09A914000093AEF8 /* DeRezProc.cpp */; + name = "DeRezProc.cpp: 71"; + rLen = 0; + rLoc = 2818; rType = 0; - vrLen = 280; - vrLoc = 10459; + vrLen = 286; + vrLoc = 2669; }; 8D01CCC60486CAD60068D4B7 /* DeRez */ = { activeExec = 0; diff --git a/plugins/MacVST/DeRez/DeRez.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/DeRez/DeRez.xcodeproj/christopherjohnson.perspectivev3 index 9e76dbc..50aea9f 100755 --- a/plugins/MacVST/DeRez/DeRez.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/DeRez/DeRez.xcodeproj/christopherjohnson.perspectivev3 @@ -323,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>10 338 810 487 0 0 1440 878 </string> + <string>396 274 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -339,7 +339,7 @@ <key>PBXProjectModuleGUID</key> <string>8B0237581D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>audioeffectx.cpp</string> + <string>DeRez.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -347,15 +347,16 @@ <key>PBXProjectModuleGUID</key> <string>8B0237591D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>audioeffectx.cpp</string> + <string>DeRez.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BB8B7932103BA6200751000</string> + <string>8B7937B821F574F6006E9731</string> <key>history</key> <array> <string>8BB8B70521039BF400751000</string> - <string>8BB8B70721039BF400751000</string> + <string>8B7932CA21F4FB37006E9731</string> + <string>8B7932CC21F4FB37006E9731</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 102}}</string> + <string>{{0, 0}, {603, 69}}</string> <key>RubberWindowFrame</key> - <string>10 338 810 487 0 0 1440 878 </string> + <string>396 274 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>102pt</string> + <string>69pt</string> </dict> <dict> <key>Proportion</key> - <string>339pt</string> + <string>372pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +395,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 312}}</string> + <string>{{10, 27}, {603, 345}}</string> <key>RubberWindowFrame</key> - <string>10 338 810 487 0 0 1440 878 </string> + <string>396 274 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -478,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BB8B7942103BA6200751000</string> + <string>8B7937B921F574F6006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BB8B7952103BA6200751000</string> + <string>8B7937BA21F574F6006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BB8B7962103BA6200751000</string> + <string>8B7937BB21F574F6006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>553892450.74727702</real> + <real>569734390.87989402</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,11 +653,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BB8B7972103BA6200751000</string> <string>/Users/christopherjohnson/Desktop/MacVST/DeRez/DeRez.xcodeproj</string> </array> <key>WindowString</key> - <string>10 338 810 487 0 0 1440 878 </string> + <string>396 274 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/DeRez/source/DeRez.cpp b/plugins/MacVST/DeRez/source/DeRez.cpp index 404127a..cb9b514 100755 --- a/plugins/MacVST/DeRez/source/DeRez.cpp +++ b/plugins/MacVST/DeRez/source/DeRez.cpp @@ -23,11 +23,8 @@ DeRez::DeRez(audioMasterCallback audioMaster) : incrementA = 0.0; incrementB = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/DeRez/source/DeRez.h b/plugins/MacVST/DeRez/source/DeRez.h index 89338e8..8ebdcd9 100755 --- a/plugins/MacVST/DeRez/source/DeRez.h +++ b/plugins/MacVST/DeRez/source/DeRez.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double lastSampleL; diff --git a/plugins/MacVST/DeRez/source/DeRezProc.cpp b/plugins/MacVST/DeRez/source/DeRezProc.cpp index 247a364..cbe42d5 100755 --- a/plugins/MacVST/DeRez/source/DeRezProc.cpp +++ b/plugins/MacVST/DeRez/source/DeRezProc.cpp @@ -17,8 +17,6 @@ void DeRez::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double targetA = pow(A,3)+0.0005; if (targetA > 1.0) targetA = 1.0; @@ -132,26 +130,14 @@ void DeRez::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra lastSampleL = drySampleL; lastSampleR = drySampleR; - //noise shaping to 32-bit floating point - float fpTemp; - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -173,8 +159,6 @@ void DeRez::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double targetA = pow(A,3)+0.0005; if (targetA > 1.0) targetA = 1.0; @@ -288,26 +272,16 @@ void DeRez::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s lastSampleL = drySampleL; lastSampleR = drySampleR; - //noise shaping to 64-bit floating point - double fpTemp; - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Density/Density.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Density/Density.xcodeproj/christopherjohnson.pbxuser index 514aca1..86b1d22 100755 --- a/plugins/MacVST/Density/Density.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Density/Density.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* Density */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528459901; - PBXWorkspaceStateSaveDate = 528459901; + PBXPerProjectTemplateStateSaveDate = 569734277; + PBXWorkspaceStateSaveDate = 569734277; + }; + perUserProjectItems = { + 8B79379F21F574D1006E9731 /* PBXTextBookmark */ = 8B79379F21F574D1006E9731 /* PBXTextBookmark */; + 8B7937A021F574D1006E9731 /* PBXTextBookmark */ = 8B7937A021F574D1006E9731 /* PBXTextBookmark */; + 8B7937A121F574D1006E9731 /* PBXTextBookmark */ = 8B7937A121F574D1006E9731 /* PBXTextBookmark */; + 8B7937A221F574D1006E9731 /* PBXTextBookmark */ = 8B7937A221F574D1006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -58,17 +64,17 @@ }; 2407DEB6089929BA00EB68BF /* Density.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 2054}}"; - sepNavSelRange = "{505, 0}"; - sepNavVisRange = "{0, 1934}"; + sepNavIntBoundsRect = "{{0, 0}, {719, 1989}}"; + sepNavSelRange = "{631, 0}"; + sepNavVisRange = "{322, 786}"; sepNavWindowFrame = "{{545, 36}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* Density.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 1001}}"; - sepNavSelRange = "{2548, 85}"; - sepNavVisRange = "{425, 2333}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 962}}"; + sepNavSelRange = "{2579, 0}"; + sepNavVisRange = "{2169, 536}"; sepNavWindowFrame = "{{593, 47}, {895, 831}}"; }; }; @@ -82,9 +88,9 @@ }; 24D8286F09A914000093AEF8 /* DensityProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 4602}}"; - sepNavSelRange = "{7190, 0}"; - sepNavVisRange = "{7245, 2459}"; + sepNavIntBoundsRect = "{{0, 0}, {684, 4225}}"; + sepNavSelRange = "{8807, 0}"; + sepNavVisRange = "{8744, 275}"; sepNavWindowFrame = "{{545, 39}, {895, 831}}"; }; }; @@ -102,7 +108,47 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { + 8B79379F21F574D1006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 24D8286F09A914000093AEF8 /* DensityProc.cpp */; + name = "DensityProc.cpp: 240"; + rLen = 0; + rLoc = 8807; + rType = 0; + vrLen = 275; + vrLoc = 8744; + }; + 8B7937A021F574D1006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2407DEB6089929BA00EB68BF /* Density.cpp */; + name = "Density.cpp: 23"; + rLen = 0; + rLoc = 631; + rType = 0; + vrLen = 786; + vrLoc = 322; + }; + 8B7937A121F574D1006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 245463B80991757100464AD3 /* Density.h */; + name = "Density.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 446; + vrLoc = 0; + }; + 8B7937A221F574D1006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 245463B80991757100464AD3 /* Density.h */; + name = "Density.h: 65"; + rLen = 0; + rLoc = 2579; + rType = 0; + vrLen = 536; + vrLoc = 2169; + }; + 8D01CCC60486CAD60068D4B7 /* Density */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/Density/Density.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Density/Density.xcodeproj/christopherjohnson.perspectivev3 index 3decba3..26b67da 100755 --- a/plugins/MacVST/Density/Density.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Density/Density.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -300,7 +298,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>6</integer> + <integer>7</integer> <integer>4</integer> <integer>0</integer> </array> @@ -323,7 +321,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>612 109 810 487 0 0 1440 878 </string> + <string>374 322 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -334,12 +332,14 @@ <key>Dock</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXProjectModuleGUID</key> <string>8B0237581D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string></string> + <string>Density.h</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -347,7 +347,17 @@ <key>PBXProjectModuleGUID</key> <string>8B0237591D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string></string> + <string>Density.h</string> + <key>_historyCapacity</key> + <integer>0</integer> + <key>bookmark</key> + <string>8B7937A221F574D1006E9731</string> + <key>history</key> + <array> + <string>8B79379F21F574D1006E9731</string> + <string>8B7937A021F574D1006E9731</string> + <string>8B7937A121F574D1006E9731</string> + </array> </dict> <key>SplitCount</key> <string>1</string> @@ -360,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 0}}</string> + <string>{{0, 0}, {603, 331}}</string> <key>RubberWindowFrame</key> - <string>612 109 810 487 0 0 1440 878 </string> + <string>374 322 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>0pt</string> + <string>331pt</string> </dict> <dict> <key>Proportion</key> - <string>441pt</string> + <string>110pt</string> <key>Tabs</key> <array> <dict> @@ -386,8 +396,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> - <key>RubberWindowFrame</key> - <string>612 109 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -441,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 363}}</string> + <string>{{10, 27}, {603, 83}}</string> + <key>RubberWindowFrame</key> + <string>374 322 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -469,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D79111F7FA891007AB60F</string> + <string>8B7937A321F574D1006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D79121F7FA891007AB60F</string> + <string>8B7937A421F574D1006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D79131F7FA891007AB60F</string> + <string>8B7937A521F574D1006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528459921.00240701</real> + <real>569734353.80657697</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,11 +653,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D79141F7FA891007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/Density/Density.xcodeproj</string> </array> <key>WindowString</key> - <string>612 109 810 487 0 0 1440 878 </string> + <string>374 322 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/Density/Density.xcodeproj/project.pbxproj b/plugins/MacVST/Density/Density.xcodeproj/project.pbxproj index 649faa8..929f8f7 100755 --- a/plugins/MacVST/Density/Density.xcodeproj/project.pbxproj +++ b/plugins/MacVST/Density/Density.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { + 8D01CCC60486CAD60068D4B7 /* Density */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "Density" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* AudioUnit */, + 8D01CCC60486CAD60068D4B7 /* Density */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/Density/source/Density.cpp b/plugins/MacVST/Density/source/Density.cpp index 1ecafde..bac4fb2 100755 --- a/plugins/MacVST/Density/source/Density.cpp +++ b/plugins/MacVST/Density/source/Density.cpp @@ -20,12 +20,9 @@ Density::Density(audioMasterCallback audioMaster) : iirSampleBL = 0.0; iirSampleAR = 0.0; iirSampleBR = 0.0; - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Density/source/Density.h b/plugins/MacVST/Density/source/Density.h index 377d25d..b634c44 100755 --- a/plugins/MacVST/Density/source/Density.h +++ b/plugins/MacVST/Density/source/Density.h @@ -55,17 +55,14 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double iirSampleAL; double iirSampleBL; double iirSampleAR; double iirSampleBR; - + bool fpFlip; float A; float B; float C; diff --git a/plugins/MacVST/Density/source/DensityProc.cpp b/plugins/MacVST/Density/source/DensityProc.cpp index 1e968c7..f229a9d 100755 --- a/plugins/MacVST/Density/source/DensityProc.cpp +++ b/plugins/MacVST/Density/source/DensityProc.cpp @@ -26,9 +26,6 @@ void Density::processReplacing(float **inputs, float **outputs, VstInt32 sampleF double out = fabs(density); density = density * fabs(density); double count; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -95,6 +92,7 @@ void Density::processReplacing(float **inputs, float **outputs, VstInt32 sampleF inputSampleR -= iirSampleBR; } //highpass section + fpFlip = !fpFlip; count = density; while (count > 1.0) @@ -150,25 +148,14 @@ void Density::processReplacing(float **inputs, float **outputs, VstInt32 sampleF //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -199,9 +186,6 @@ void Density::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double out = fabs(density); density = density * fabs(density); double count; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -268,6 +252,7 @@ void Density::processDoubleReplacing(double **inputs, double **outputs, VstInt32 inputSampleR -= iirSampleBR; } //highpass section + fpFlip = !fpFlip; count = density; while (count > 1.0) @@ -323,25 +308,16 @@ void Density::processDoubleReplacing(double **inputs, double **outputs, VstInt32 //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Desk/Desk.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Desk/Desk.xcodeproj/christopherjohnson.pbxuser index 44f049e..9a65a01 100755 --- a/plugins/MacVST/Desk/Desk.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Desk/Desk.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* Desk */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528459930; - PBXWorkspaceStateSaveDate = 528459930; + PBXPerProjectTemplateStateSaveDate = 569734422; + PBXWorkspaceStateSaveDate = 569734422; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* Desk */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/Desk/Desk.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Desk/Desk.xcodeproj/christopherjohnson.perspectivev3 index cc9907f..58a32ea 100755 --- a/plugins/MacVST/Desk/Desk.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Desk/Desk.xcodeproj/christopherjohnson.perspectivev3 @@ -360,18 +360,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 13}}</string> + <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> <string>430 335 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>13pt</string> + <string>0pt</string> </dict> <dict> <key>Proportion</key> - <string>428pt</string> + <string>441pt</string> <key>Tabs</key> <array> <dict> @@ -385,7 +385,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 401}}</string> + <string>{{10, 27}, {603, 414}}</string> <key>RubberWindowFrame</key> <string>430 335 810 487 0 0 1440 878 </string> </dict> @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D793A1F7FA950007AB60F</string> + <string>8B7937D821F57520006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D793B1F7FA950007AB60F</string> + <string>8B7937D921F57520006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D793C1F7FA950007AB60F</string> + <string>8B7937DA21F57520006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528460112.51118302</real> + <real>569734432.71270597</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,7 +643,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D793D1F7FA950007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/Desk/Desk.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Desk/Desk.xcodeproj/project.pbxproj b/plugins/MacVST/Desk/Desk.xcodeproj/project.pbxproj index a170a5b..43a43a9 100755 --- a/plugins/MacVST/Desk/Desk.xcodeproj/project.pbxproj +++ b/plugins/MacVST/Desk/Desk.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* Desk */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "Desk" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* Desk */, + 8D01CCC60486CAD60068D4B7 /* AudioUnit */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/Desk/source/Desk.cpp b/plugins/MacVST/Desk/source/Desk.cpp index 7a30943..9582f04 100755 --- a/plugins/MacVST/Desk/source/Desk.cpp +++ b/plugins/MacVST/Desk/source/Desk.cpp @@ -18,11 +18,8 @@ Desk::Desk(audioMasterCallback audioMaster) : lastSampleR = 0.0; lastOutSampleR = 0.0; lastSlewR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Desk/source/Desk.h b/plugins/MacVST/Desk/source/Desk.h index 8c5c398..f7f933d 100755 --- a/plugins/MacVST/Desk/source/Desk.h +++ b/plugins/MacVST/Desk/source/Desk.h @@ -51,11 +51,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff long double lastSampleL; diff --git a/plugins/MacVST/Desk/source/DeskProc.cpp b/plugins/MacVST/Desk/source/DeskProc.cpp index a2bc92c..d53894b 100755 --- a/plugins/MacVST/Desk/source/DeskProc.cpp +++ b/plugins/MacVST/Desk/source/DeskProc.cpp @@ -29,9 +29,6 @@ void Desk::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram double bridgerectifier; double combsample; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -151,25 +148,14 @@ void Desk::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram inputSampleR /= gain; //end R - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -203,9 +189,6 @@ void Desk::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa double bridgerectifier; double combsample; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -325,25 +308,16 @@ void Desk::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa inputSampleR /= gain; //end R - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Desk4/Desk4.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Desk4/Desk4.xcodeproj/christopherjohnson.pbxuser index bd49c38..e471115 100755 --- a/plugins/MacVST/Desk4/Desk4.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Desk4/Desk4.xcodeproj/christopherjohnson.pbxuser @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528460121; - PBXWorkspaceStateSaveDate = 528460121; + PBXPerProjectTemplateStateSaveDate = 569734453; + PBXWorkspaceStateSaveDate = 569734453; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { diff --git a/plugins/MacVST/Desk4/Desk4.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Desk4/Desk4.xcodeproj/christopherjohnson.perspectivev3 index 86141a5..eb5fa7d 100755 --- a/plugins/MacVST/Desk4/Desk4.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Desk4/Desk4.xcodeproj/christopherjohnson.perspectivev3 @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D794F1F7FA972007AB60F</string> + <string>8B7937F721F5753E006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D79501F7FA972007AB60F</string> + <string>8B7937F821F5753E006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D79511F7FA972007AB60F</string> + <string>8B7937F921F5753E006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528460146.15257502</real> + <real>569734462.79320705</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,7 +643,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D79521F7FA972007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/Desk4/Desk4.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Desk4/source/Desk4.cpp b/plugins/MacVST/Desk4/source/Desk4.cpp index a8e20a7..0a05d87 100755 --- a/plugins/MacVST/Desk4/source/Desk4.cpp +++ b/plugins/MacVST/Desk4/source/Desk4.cpp @@ -30,11 +30,8 @@ Desk4::Desk4(audioMasterCallback audioMaster) : lastSlewR = 0.0; gcount = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Desk4/source/Desk4.h b/plugins/MacVST/Desk4/source/Desk4.h index fa09cd0..802ee47 100755 --- a/plugins/MacVST/Desk4/source/Desk4.h +++ b/plugins/MacVST/Desk4/source/Desk4.h @@ -70,11 +70,8 @@ private: double lastSlewR; int gcount; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/Desk4/source/Desk4Proc.cpp b/plugins/MacVST/Desk4/source/Desk4Proc.cpp index 515436c..fd165b6 100755 --- a/plugins/MacVST/Desk4/source/Desk4Proc.cpp +++ b/plugins/MacVST/Desk4/source/Desk4Proc.cpp @@ -17,9 +17,6 @@ void Desk4::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double gain = (pow(A,2)*10)+0.0001; double gaintrim = (pow(A,2)*2)+1.0; @@ -229,25 +226,14 @@ void Desk4::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -269,9 +255,6 @@ void Desk4::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double gain = (pow(A,2)*10)+0.0001; double gaintrim = (pow(A,2)*2)+1.0; @@ -481,25 +464,16 @@ void Desk4::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Distance/Distance.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Distance/Distance.xcodeproj/christopherjohnson.pbxuser index 35d1267..f25d8b8 100755 --- a/plugins/MacVST/Distance/Distance.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Distance/Distance.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528460155; - PBXWorkspaceStateSaveDate = 528460155; + PBXPerProjectTemplateStateSaveDate = 569734484; + PBXWorkspaceStateSaveDate = 569734484; }; perUserProjectItems = { - 8B9D6B631F7EE05F007AB60F /* PBXTextBookmark */ = 8B9D6B631F7EE05F007AB60F /* PBXTextBookmark */; - 8B9D79701F7FA98F007AB60F /* PBXTextBookmark */ = 8B9D79701F7FA98F007AB60F /* PBXTextBookmark */; + 8B79381621F5756D006E9731 /* PBXTextBookmark */ = 8B79381621F5756D006E9731 /* PBXTextBookmark */; + 8B79381721F5756D006E9731 /* PBXTextBookmark */ = 8B79381721F5756D006E9731 /* PBXTextBookmark */; + 8B79381821F5756D006E9731 /* PBXBookmark */ = 8B79381821F5756D006E9731 /* PBXBookmark */; + 8B79381921F5756D006E9731 /* PBXTextBookmark */ = 8B79381921F5756D006E9731 /* PBXTextBookmark */; 8BD79BE91DB421CA006FFA16 /* PBXTextBookmark */ = 8BD79BE91DB421CA006FFA16 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -63,17 +65,17 @@ }; 2407DEB6089929BA00EB68BF /* Distance.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 1729}}"; + sepNavIntBoundsRect = "{{0, 0}, {740, 1664}}"; sepNavSelRange = "{460, 0}"; - sepNavVisRange = "{0, 2083}"; + sepNavVisRange = "{0, 650}"; sepNavWindowFrame = "{{12, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* Distance.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 1274}}"; - sepNavSelRange = "{2777, 0}"; - sepNavVisRange = "{2448, 79}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 1027}}"; + sepNavSelRange = "{2723, 0}"; + sepNavVisRange = "{509, 1342}"; sepNavWindowFrame = "{{20, 47}, {895, 831}}"; }; }; @@ -87,9 +89,9 @@ }; 24D8286F09A914000093AEF8 /* DistanceProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 3939}}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 3562}}"; sepNavSelRange = "{7303, 0}"; - sepNavVisRange = "{812, 2313}"; + sepNavVisRange = "{8890, 722}"; sepNavWindowFrame = "{{266, 47}, {895, 831}}"; }; }; @@ -107,25 +109,39 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B9D6B631F7EE05F007AB60F /* PBXTextBookmark */ = { + 8B79381621F5756D006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 245463B80991757100464AD3 /* Distance.h */; - name = "Distance.h: 78"; + name = "Distance.h: 79"; rLen = 0; - rLoc = 2777; + rLoc = 2723; rType = 0; - vrLen = 96; - vrLoc = 2431; + vrLen = 1342; + vrLoc = 509; }; - 8B9D79701F7FA98F007AB60F /* PBXTextBookmark */ = { + 8B79381721F5756D006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 245463B80991757100464AD3 /* Distance.h */; - name = "Distance.h: 78"; + fRef = 2407DEB6089929BA00EB68BF /* Distance.cpp */; + name = "Distance.cpp: 16"; + rLen = 0; + rLoc = 460; + rType = 0; + vrLen = 650; + vrLoc = 0; + }; + 8B79381821F5756D006E9731 /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 24D8286F09A914000093AEF8 /* DistanceProc.cpp */; + }; + 8B79381921F5756D006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 24D8286F09A914000093AEF8 /* DistanceProc.cpp */; + name = "DistanceProc.cpp: 203"; rLen = 0; - rLoc = 2777; + rLoc = 7303; rType = 0; - vrLen = 79; - vrLoc = 2448; + vrLen = 722; + vrLoc = 8890; }; 8BD79BE91DB421CA006FFA16 /* PBXTextBookmark */ = { isa = PBXTextBookmark; diff --git a/plugins/MacVST/Distance/Distance.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Distance/Distance.xcodeproj/christopherjohnson.perspectivev3 index 6450494..5df581a 100755 --- a/plugins/MacVST/Distance/Distance.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Distance/Distance.xcodeproj/christopherjohnson.perspectivev3 @@ -339,7 +339,7 @@ <key>PBXProjectModuleGUID</key> <string>8B0237581D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>Distance.h</string> + <string>DistanceProc.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -347,15 +347,17 @@ <key>PBXProjectModuleGUID</key> <string>8B0237591D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>Distance.h</string> + <string>DistanceProc.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D79701F7FA98F007AB60F</string> + <string>8B79381921F5756D006E9731</string> <key>history</key> <array> <string>8BD79BE91DB421CA006FFA16</string> - <string>8B9D6B631F7EE05F007AB60F</string> + <string>8B79381621F5756D006E9731</string> + <string>8B79381721F5756D006E9731</string> + <string>8B79381821F5756D006E9731</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 86}}</string> + <string>{{0, 0}, {603, 281}}</string> <key>RubberWindowFrame</key> <string>518 304 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>86pt</string> + <string>281pt</string> </dict> <dict> <key>Proportion</key> - <string>355pt</string> + <string>160pt</string> <key>Tabs</key> <array> <dict> @@ -394,7 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 328}}</string> + <string>{{10, 27}, {603, 133}}</string> <key>RubberWindowFrame</key> <string>518 304 810 487 0 0 1440 878 </string> </dict> @@ -478,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D79711F7FA98F007AB60F</string> + <string>8B79381A21F5756D006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D79721F7FA98F007AB60F</string> + <string>8B79381B21F5756D006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D79731F7FA98F007AB60F</string> + <string>8B79381C21F5756D006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +637,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528460175.35196102</real> + <real>569734509.28240097</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,7 +654,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D79741F7FA98F007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/Distance/Distance.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Distance/source/Distance.cpp b/plugins/MacVST/Distance/source/Distance.cpp index bae55c1..7ccd8fb 100755 --- a/plugins/MacVST/Distance/source/Distance.cpp +++ b/plugins/MacVST/Distance/source/Distance.cpp @@ -16,11 +16,8 @@ Distance::Distance(audioMasterCallback audioMaster) : B = 1.0; thirdresultL = prevresultL = lastclampL = clampL = changeL = lastL = 0.0; thirdresultR = prevresultR = lastclampR = clampR = changeR = lastR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Distance/source/Distance.h b/plugins/MacVST/Distance/source/Distance.h index 52ecc14..5566f84 100755 --- a/plugins/MacVST/Distance/source/Distance.h +++ b/plugins/MacVST/Distance/source/Distance.h @@ -67,11 +67,8 @@ private: double prevresultR; double lastR; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/Distance/source/DistanceProc.cpp b/plugins/MacVST/Distance/source/DistanceProc.cpp index bdf3c13..32eb3fa 100755 --- a/plugins/MacVST/Distance/source/DistanceProc.cpp +++ b/plugins/MacVST/Distance/source/DistanceProc.cpp @@ -28,9 +28,6 @@ void Distance::processReplacing(float **inputs, float **outputs, VstInt32 sample double dry = 1.0-wet; double bridgerectifier; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; long double drySampleL; @@ -126,25 +123,14 @@ void Distance::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleR = (drySampleR * dry)+(inputSampleR*wet); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -177,9 +163,6 @@ void Distance::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double dry = 1.0-wet; double bridgerectifier; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; long double drySampleL; @@ -275,25 +258,16 @@ void Distance::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleR = (drySampleR * dry)+(inputSampleR*wet); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Distance2/Distance2.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Distance2/Distance2.xcodeproj/christopherjohnson.pbxuser index 2fb0369..8e41741 100755 --- a/plugins/MacVST/Distance2/Distance2.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Distance2/Distance2.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 547768347; - PBXWorkspaceStateSaveDate = 547768347; + PBXPerProjectTemplateStateSaveDate = 569734535; + PBXWorkspaceStateSaveDate = 569734535; }; perUserProjectItems = { - 8B7E3D4B20A6500200482CB5 /* PBXBookmark */ = 8B7E3D4B20A6500200482CB5 /* PBXBookmark */; - 8B7E3D5420A6501D00482CB5 /* XCBuildMessageTextBookmark */ = 8B7E3D5420A6501D00482CB5 /* XCBuildMessageTextBookmark */; + 8B79383921F57592006E9731 /* PBXTextBookmark */ = 8B79383921F57592006E9731 /* PBXTextBookmark */; + 8B79383D21F57592006E9731 /* PBXTextBookmark */ = 8B79383D21F57592006E9731 /* PBXTextBookmark */; 8B7E3D5520A6501D00482CB5 /* PBXTextBookmark */ = 8B7E3D5520A6501D00482CB5 /* PBXTextBookmark */; 8B7E3D5B20A6501D00482CB5 /* PBXTextBookmark */ = 8B7E3D5B20A6501D00482CB5 /* PBXTextBookmark */; }; @@ -80,15 +80,15 @@ }; 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {838, 19747}}"; + sepNavIntBoundsRect = "{{0, 0}, {838, 19877}}"; sepNavSelRange = "{10616, 0}"; - sepNavVisRange = "{10459, 399}"; + sepNavVisRange = "{10459, 280}"; sepNavWindowFrame = "{{15, 42}, {895, 831}}"; }; }; 24D8286F09A914000093AEF8 /* Distance2Proc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 7605}}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 7371}}"; sepNavSelRange = "{21129, 0}"; sepNavVisRange = "{8249, 1763}"; sepNavWindowFrame = "{{0, 47}, {895, 831}}"; @@ -108,18 +108,25 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B7E3D4B20A6500200482CB5 /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 24D8286F09A914000093AEF8 /* Distance2Proc.cpp */; - }; - 8B7E3D5420A6501D00482CB5 /* XCBuildMessageTextBookmark */ = { + 8B79383921F57592006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - comments = "Deprecated conversion from string constant to 'char*'"; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; - fallbackIsa = XCBuildMessageTextBookmark; - rLen = 1; - rLoc = 306; - rType = 1; + name = "audioeffectx.cpp: 307"; + rLen = 0; + rLoc = 10616; + rType = 0; + vrLen = 280; + vrLoc = 10459; + }; + 8B79383D21F57592006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 24D8286F09A914000093AEF8 /* Distance2Proc.cpp */; + name = "Distance2Proc.cpp: 553"; + rLen = 0; + rLoc = 21129; + rType = 0; + vrLen = 1763; + vrLoc = 8249; }; 8B7E3D5520A6501D00482CB5 /* PBXTextBookmark */ = { isa = PBXTextBookmark; diff --git a/plugins/MacVST/Distance2/Distance2.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Distance2/Distance2.xcodeproj/christopherjohnson.perspectivev3 index 0268d65..7b0ef13 100755 --- a/plugins/MacVST/Distance2/Distance2.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Distance2/Distance2.xcodeproj/christopherjohnson.perspectivev3 @@ -241,10 +241,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B7E3D5B20A6501D00482CB5</string> + <string>8B79383D21F57592006E9731</string> <key>history</key> <array> - <string>8B7E3D4B20A6500200482CB5</string> + <string>8B7E3D5B20A6501D00482CB5</string> </array> </dict> <key>SplitCount</key> @@ -297,6 +297,8 @@ <key>Layout</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -390,10 +392,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B7E3D5520A6501D00482CB5</string> + <string>8B79383921F57592006E9731</string> <key>history</key> <array> - <string>8B7E3D5420A6501D00482CB5</string> + <string>8B7E3D5520A6501D00482CB5</string> </array> </dict> <key>SplitCount</key> @@ -407,18 +409,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 132}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> <string>20 288 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -432,7 +434,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 297}}</string> + <key>RubberWindowFrame</key> + <string>20 288 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -487,8 +491,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 282}}</string> - <key>RubberWindowFrame</key> - <string>20 288 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -516,11 +518,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B7E3D5620A6501D00482CB5</string> + <string>8B79383A21F57592006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B7E3D5720A6501D00482CB5</string> + <string>8B79383B21F57592006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B7E3D5820A6501D00482CB5</string> + <string>8B79383C21F57592006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -673,7 +675,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>547770397.97323096</real> + <real>569734546.43575704</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -691,7 +693,7 @@ <key>WindowOrderList</key> <array> <string>8B7E3D5920A6501D00482CB5</string> - <string>/Users/christopherjohnson/Desktop/Distance2/Distance2.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/Distance2/Distance2.xcodeproj</string> </array> <key>WindowString</key> <string>20 288 810 487 0 0 1440 878 </string> diff --git a/plugins/MacVST/Distance2/source/Distance2Proc.cpp b/plugins/MacVST/Distance2/source/Distance2Proc.cpp index ef5bf5b..473f3c8 100755 --- a/plugins/MacVST/Distance2/source/Distance2Proc.cpp +++ b/plugins/MacVST/Distance2/source/Distance2Proc.cpp @@ -266,18 +266,14 @@ void Distance2::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -287,12 +283,6 @@ void Distance2::processReplacing(float **inputs, float **outputs, VstInt32 sampl *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Distance2::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -554,18 +544,16 @@ void Distance2::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -575,10 +563,4 @@ void Distance2::processDoubleReplacing(double **inputs, double **outputs, VstInt *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.pbxuser new file mode 100755 index 0000000..1fc2619 --- /dev/null +++ b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.pbxuser @@ -0,0 +1,131 @@ +// !$*UTF8*$! +{ + 089C1669FE841209C02AAC07 /* Project object */ = { + activeBuildConfigurationName = Release; + activeTarget = 8D01CCC60486CAD60068D4B7 /* DitherFloat */; + codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; + perUserDictionary = { + PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 364, + 20, + 48, + 43, + 43, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + PBXFileDataSource_Target_ColumnID, + ); + }; + PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 324, + 60, + 20, + 48, + 43, + 43, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXTargetDataSource_PrimaryAttribute, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + ); + }; + PBXPerProjectTemplateStateSaveDate = 569801710; + PBXWorkspaceStateSaveDate = 569801710; + }; + perUserProjectItems = { + 8BEF85B121F6801400FEF113 /* XCBuildMessageTextBookmark */ = 8BEF85B121F6801400FEF113 /* XCBuildMessageTextBookmark */; + 8BEF85B621F6802400FEF113 /* PBXTextBookmark */ = 8BEF85B621F6802400FEF113 /* PBXTextBookmark */; + }; + sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; + userBuildSettings = { + }; + }; + 2407DEB6089929BA00EB68BF /* DitherFloat.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {848, 1664}}"; + sepNavSelRange = "{3601, 0}"; + sepNavVisRange = "{2649, 2103}"; + sepNavWindowFrame = "{{166, 47}, {895, 831}}"; + }; + }; + 245463B80991757100464AD3 /* DitherFloat.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {866, 845}}"; + sepNavSelRange = "{2508, 0}"; + sepNavVisRange = "{292, 2228}"; + sepNavWindowFrame = "{{20, 47}, {895, 831}}"; + }; + }; + 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {859, 20267}}"; + sepNavSelRange = "{10616, 0}"; + sepNavVisRange = "{9653, 2414}"; + sepNavWindowFrame = "{{15, 42}, {895, 831}}"; + }; + }; + 24D8286F09A914000093AEF8 /* DitherFloatProc.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {649, 2652}}"; + sepNavSelRange = "{569, 0}"; + sepNavVisRange = "{451, 169}"; + sepNavWindowFrame = "{{68, 47}, {895, 831}}"; + }; + }; + 8B02375E1D42B1C400E1E8C8 /* Source Control */ = { + isa = PBXSourceControlManager; + fallbackIsa = XCSourceControlManager; + isSCMEnabled = 0; + scmConfiguration = { + repositoryNamesForRoots = { + "" = ""; + }; + }; + }; + 8B02375F1D42B1C400E1E8C8 /* Code sense */ = { + isa = PBXCodeSenseManager; + indexTemplatePath = ""; + }; + 8BEF85B121F6801400FEF113 /* XCBuildMessageTextBookmark */ = { + isa = PBXTextBookmark; + comments = "Unused variable 'blend'"; + fRef = 24D8286F09A914000093AEF8 /* DitherFloatProc.cpp */; + fallbackIsa = XCBuildMessageTextBookmark; + rLen = 1; + rLoc = 21; + rType = 1; + }; + 8BEF85B621F6802400FEF113 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 24D8286F09A914000093AEF8 /* DitherFloatProc.cpp */; + name = "DitherFloatProc.cpp: 22"; + rLen = 0; + rLoc = 569; + rType = 0; + vrLen = 169; + vrLoc = 451; + }; + 8D01CCC60486CAD60068D4B7 /* DitherFloat */ = { + activeExec = 0; + }; +} diff --git a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.perspectivev3 new file mode 100755 index 0000000..3612d29 --- /dev/null +++ b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.perspectivev3 @@ -0,0 +1,1508 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>ActivePerspectiveName</key> + <string>Project</string> + <key>AllowedModules</key> + <array> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXSmartGroupTreeModule</string> + <key>Name</key> + <string>Groups and Files Outline View</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Name</key> + <string>Editor</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>XCTaskListModule</string> + <key>Name</key> + <string>Task List</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>XCDetailModule</string> + <key>Name</key> + <string>File and Smart Group Detail Viewer</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>1</string> + <key>Module</key> + <string>PBXBuildResultsModule</string> + <key>Name</key> + <string>Detailed Build Results Viewer</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>1</string> + <key>Module</key> + <string>PBXProjectFindModule</string> + <key>Name</key> + <string>Project Batch Find Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>XCProjectFormatConflictsModule</string> + <key>Name</key> + <string>Project Format Conflicts List</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXBookmarksModule</string> + <key>Name</key> + <string>Bookmarks Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXClassBrowserModule</string> + <key>Name</key> + <string>Class Browser</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXCVSModule</string> + <key>Name</key> + <string>Source Code Control Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXDebugBreakpointsModule</string> + <key>Name</key> + <string>Debug Breakpoints Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>XCDockableInspector</string> + <key>Name</key> + <string>Inspector</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXOpenQuicklyModule</string> + <key>Name</key> + <string>Open Quickly Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>1</string> + <key>Module</key> + <string>PBXDebugSessionModule</string> + <key>Name</key> + <string>Debugger</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>1</string> + <key>Module</key> + <string>PBXDebugCLIModule</string> + <key>Name</key> + <string>Debug Console</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>XCSnapshotModule</string> + <key>Name</key> + <string>Snapshots Tool</string> + </dict> + </array> + <key>BundlePath</key> + <string>/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources</string> + <key>Description</key> + <string>AIODescriptionKey</string> + <key>DockingSystemVisible</key> + <false/> + <key>Extension</key> + <string>perspectivev3</string> + <key>FavBarConfig</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>8B02375D1D42B1C400E1E8C8</string> + <key>XCBarModuleItemNames</key> + <dict/> + <key>XCBarModuleItems</key> + <array/> + </dict> + <key>FirstTimeWindowDisplayed</key> + <false/> + <key>Identifier</key> + <string>com.apple.perspectives.project.defaultV3</string> + <key>MajorVersion</key> + <integer>34</integer> + <key>MinorVersion</key> + <integer>0</integer> + <key>Name</key> + <string>All-In-One</string> + <key>Notifications</key> + <array> + <dict> + <key>XCObserverAutoDisconnectKey</key> + <true/> + <key>XCObserverDefintionKey</key> + <dict> + <key>PBXStatusErrorsKey</key> + <integer>0</integer> + </dict> + <key>XCObserverFactoryKey</key> + <string>XCPerspectivesSpecificationIdentifier</string> + <key>XCObserverGUIDKey</key> + <string>XCObserverProjectIdentifier</string> + <key>XCObserverNotificationKey</key> + <string>PBXStatusBuildStateMessageNotification</string> + <key>XCObserverTargetKey</key> + <string>XCMainBuildResultsModuleGUID</string> + <key>XCObserverTriggerKey</key> + <string>awakenModuleWithObserver:</string> + <key>XCObserverValidationKey</key> + <dict> + <key>PBXStatusErrorsKey</key> + <integer>2</integer> + </dict> + </dict> + </array> + <key>OpenEditors</key> + <array/> + <key>PerspectiveWidths</key> + <array> + <integer>810</integer> + <integer>810</integer> + </array> + <key>Perspectives</key> + <array> + <dict> + <key>ChosenToolbarItems</key> + <array> + <string>XCToolbarPerspectiveControl</string> + <string>NSToolbarSeparatorItem</string> + <string>active-combo-popup</string> + <string>action</string> + <string>NSToolbarFlexibleSpaceItem</string> + <string>debugger-enable-breakpoints</string> + <string>build-and-go</string> + <string>com.apple.ide.PBXToolbarStopButton</string> + <string>get-info</string> + <string>NSToolbarFlexibleSpaceItem</string> + <string>com.apple.pbx.toolbar.searchfield</string> + </array> + <key>ControllerClassBaseName</key> + <string></string> + <key>IconName</key> + <string>WindowOfProject</string> + <key>Identifier</key> + <string>perspective.project</string> + <key>IsVertical</key> + <false/> + <key>Layout</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXBottomSmartGroupGIDs</key> + <array> + <string>1C37FBAC04509CD000000102</string> + <string>1C37FAAC04509CD000000102</string> + <string>1C37FABC05509CD000000102</string> + <string>1C37FABC05539CD112110102</string> + <string>E2644B35053B69B200211256</string> + <string>1C37FABC04509CD000100104</string> + <string>1CC0EA4004350EF90044410B</string> + <string>1CC0EA4004350EF90041110B</string> + <string>1C77FABC04509CD000000102</string> + </array> + <key>PBXProjectModuleGUID</key> + <string>1CA23ED40692098700951B8B</string> + <key>PBXProjectModuleLabel</key> + <string>Files</string> + <key>PBXProjectStructureProvided</key> + <string>yes</string> + <key>PBXSmartGroupTreeModuleColumnData</key> + <dict> + <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> + <array> + <real>185</real> + </array> + <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> + <array> + <string>MainColumn</string> + </array> + </dict> + <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> + <dict> + <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> + <array> + <string>089C166AFE841209C02AAC07</string> + <string>08FB77ADFE841716C02AAC07</string> + <string>1C37FBAC04509CD000000102</string> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> + <array> + <array> + <integer>6</integer> + <integer>4</integer> + <integer>0</integer> + </array> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> + <string>{{0, 0}, {185, 428}}</string> + </dict> + <key>PBXTopSmartGroupGIDs</key> + <array/> + <key>XCIncludePerspectivesSwitch</key> + <false/> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {202, 446}}</string> + <key>GroupTreeTableConfiguration</key> + <array> + <string>MainColumn</string> + <real>185</real> + </array> + <key>RubberWindowFrame</key> + <string>291 285 810 487 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXSmartGroupTreeModule</string> + <key>Proportion</key> + <string>202pt</string> + </dict> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>8B0237581D42B1C400E1E8C8</string> + <key>PBXProjectModuleLabel</key> + <string>DitherFloatProc.cpp</string> + <key>PBXSplitModuleInNavigatorKey</key> + <dict> + <key>Split0</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>8B0237591D42B1C400E1E8C8</string> + <key>PBXProjectModuleLabel</key> + <string>DitherFloatProc.cpp</string> + <key>_historyCapacity</key> + <integer>0</integer> + <key>bookmark</key> + <string>8BEF85B621F6802400FEF113</string> + <key>history</key> + <array> + <string>8BEF85B121F6801400FEF113</string> + </array> + </dict> + <key>SplitCount</key> + <string>1</string> + </dict> + <key>StatusBarVisibility</key> + <true/> + <key>XCSharingToken</key> + <string>com.apple.Xcode.CommonNavigatorGroupSharingToken</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {603, 132}}</string> + <key>RubberWindowFrame</key> + <string>291 285 810 487 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>132pt</string> + </dict> + <dict> + <key>Proportion</key> + <string>309pt</string> + <key>Tabs</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CA23EDF0692099D00951B8B</string> + <key>PBXProjectModuleLabel</key> + <string>Detail</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{10, 27}, {603, 414}}</string> + </dict> + <key>Module</key> + <string>XCDetailModule</string> + </dict> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CA23EE00692099D00951B8B</string> + <key>PBXProjectModuleLabel</key> + <string>Project Find</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{10, 31}, {603, 297}}</string> + </dict> + <key>Module</key> + <string>PBXProjectFindModule</string> + </dict> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXCVSModuleFilterTypeKey</key> + <integer>1032</integer> + <key>PBXProjectModuleGUID</key> + <string>1CA23EE10692099D00951B8B</string> + <key>PBXProjectModuleLabel</key> + <string>SCM Results</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{10, 31}, {603, 297}}</string> + </dict> + <key>Module</key> + <string>PBXCVSModule</string> + </dict> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>XCMainBuildResultsModuleGUID</string> + <key>PBXProjectModuleLabel</key> + <string>Build Results</string> + <key>XCBuildResultsTrigger_Collapse</key> + <integer>1023</integer> + <key>XCBuildResultsTrigger_Open</key> + <integer>1012</integer> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{10, 27}, {603, 282}}</string> + <key>RubberWindowFrame</key> + <string>291 285 810 487 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXBuildResultsModule</string> + </dict> + </array> + </dict> + </array> + <key>Proportion</key> + <string>603pt</string> + </dict> + </array> + <key>Name</key> + <string>Project</string> + <key>ServiceClasses</key> + <array> + <string>XCModuleDock</string> + <string>PBXSmartGroupTreeModule</string> + <string>XCModuleDock</string> + <string>PBXNavigatorGroup</string> + <string>XCDockableTabModule</string> + <string>XCDetailModule</string> + <string>PBXProjectFindModule</string> + <string>PBXCVSModule</string> + <string>PBXBuildResultsModule</string> + </array> + <key>TableOfContents</key> + <array> + <string>8BEF853D21F67C3100FEF113</string> + <string>1CA23ED40692098700951B8B</string> + <string>8BEF853E21F67C3100FEF113</string> + <string>8B0237581D42B1C400E1E8C8</string> + <string>8BEF853F21F67C3100FEF113</string> + <string>1CA23EDF0692099D00951B8B</string> + <string>1CA23EE00692099D00951B8B</string> + <string>1CA23EE10692099D00951B8B</string> + <string>XCMainBuildResultsModuleGUID</string> + </array> + <key>ToolbarConfigUserDefaultsMinorVersion</key> + <string>2</string> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.defaultV3</string> + </dict> + <dict> + <key>ChosenToolbarItems</key> + <array> + <string>XCToolbarPerspectiveControl</string> + <string>NSToolbarSeparatorItem</string> + <string>active-combo-popup</string> + <string>NSToolbarFlexibleSpaceItem</string> + <string>debugger-enable-breakpoints</string> + <string>build-and-go</string> + <string>com.apple.ide.PBXToolbarStopButton</string> + <string>debugger-restart-executable</string> + <string>debugger-pause</string> + <string>debugger-step-over</string> + <string>debugger-step-into</string> + <string>debugger-step-out</string> + <string>NSToolbarFlexibleSpaceItem</string> + <string>servicesModulebreakpoints</string> + <string>debugger-show-console-window</string> + </array> + <key>ControllerClassBaseName</key> + <string>PBXDebugSessionModule</string> + <key>IconName</key> + <string>DebugTabIcon</string> + <key>Identifier</key> + <string>perspective.debug</string> + <key>IsVertical</key> + <integer>1</integer> + <key>Layout</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CCC7628064C1048000F2A68</string> + <key>PBXProjectModuleLabel</key> + <string>Debugger Console</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {810, 0}}</string> + </dict> + <key>Module</key> + <string>PBXDebugCLIModule</string> + <key>Proportion</key> + <string>0%</string> + </dict> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>Debugger</key> + <dict> + <key>HorizontalSplitView</key> + <dict> + <key>_collapsingFrameDimension</key> + <real>0.0</real> + <key>_indexOfCollapsedView</key> + <integer>0</integer> + <key>_percentageOfCollapsedView</key> + <real>0.0</real> + <key>isCollapsed</key> + <string>yes</string> + <key>sizes</key> + <array> + <string>{{0, 0}, {395, 213}}</string> + <string>{{395, 0}, {415, 213}}</string> + </array> + </dict> + <key>VerticalSplitView</key> + <dict> + <key>_collapsingFrameDimension</key> + <real>0.0</real> + <key>_indexOfCollapsedView</key> + <integer>0</integer> + <key>_percentageOfCollapsedView</key> + <real>0.0</real> + <key>isCollapsed</key> + <string>yes</string> + <key>sizes</key> + <array> + <string>{{0, 0}, {810, 213}}</string> + <string>{{0, 213}, {810, 225}}</string> + </array> + </dict> + </dict> + <key>LauncherConfigVersion</key> + <string>8</string> + <key>PBXProjectModuleGUID</key> + <string>1CCC7629064C1048000F2A68</string> + <key>PBXProjectModuleLabel</key> + <string>Debug</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>DebugConsoleDrawerSize</key> + <string>{100, 120}</string> + <key>DebugConsoleVisible</key> + <string>None</string> + <key>DebugConsoleWindowFrame</key> + <string>{{200, 200}, {500, 300}}</string> + <key>DebugSTDIOWindowFrame</key> + <string>{{200, 200}, {500, 300}}</string> + <key>Frame</key> + <string>{{0, 7}, {810, 438}}</string> + </dict> + <key>Module</key> + <string>PBXDebugSessionModule</string> + <key>Proportion</key> + <string>443pt</string> + </dict> + </array> + <key>Name</key> + <string>Debug</string> + <key>ServiceClasses</key> + <array> + <string>XCModuleDock</string> + <string>XCModuleDock</string> + <string>PBXDebugCLIModule</string> + <string>PBXDebugSessionModule</string> + <string>XCConsole</string> + </array> + <key>TableOfContents</key> + <array> + <string>1CC8E6A5069209BD00BB180A</string> + <string>1CC8E6A6069209BD00BB180A</string> + <string>1CCC7628064C1048000F2A68</string> + <string>1CCC7629064C1048000F2A68</string> + <string>1CC8E6A7069209BD00BB180A</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.debugV3</string> + </dict> + </array> + <key>PerspectivesBarVisible</key> + <true/> + <key>ShelfIsVisible</key> + <false/> + <key>SourceDescription</key> + <string>file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecification.xcperspec'</string> + <key>StatusbarIsVisible</key> + <true/> + <key>TimeStamp</key> + <real>569802788.52883804</real> + <key>ToolbarConfigUserDefaultsMinorVersion</key> + <string>2</string> + <key>ToolbarDisplayMode</key> + <integer>1</integer> + <key>ToolbarIsVisible</key> + <true/> + <key>ToolbarSizeMode</key> + <integer>2</integer> + <key>Type</key> + <string>Perspectives</string> + <key>UpdateMessage</key> + <string></string> + <key>WindowJustification</key> + <integer>5</integer> + <key>WindowOrderList</key> + <array> + <string>/Users/christopherjohnson/Desktop/DitherFloat/DitherFloat.xcodeproj</string> + </array> + <key>WindowString</key> + <string>291 285 810 487 0 0 1440 878 </string> + <key>WindowToolsV3</key> + <array> + <dict> + <key>Identifier</key> + <string>windowTool.debugger</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>Debugger</key> + <dict> + <key>HorizontalSplitView</key> + <dict> + <key>_collapsingFrameDimension</key> + <real>0.0</real> + <key>_indexOfCollapsedView</key> + <integer>0</integer> + <key>_percentageOfCollapsedView</key> + <real>0.0</real> + <key>isCollapsed</key> + <string>yes</string> + <key>sizes</key> + <array> + <string>{{0, 0}, {317, 164}}</string> + <string>{{317, 0}, {377, 164}}</string> + </array> + </dict> + <key>VerticalSplitView</key> + <dict> + <key>_collapsingFrameDimension</key> + <real>0.0</real> + <key>_indexOfCollapsedView</key> + <integer>0</integer> + <key>_percentageOfCollapsedView</key> + <real>0.0</real> + <key>isCollapsed</key> + <string>yes</string> + <key>sizes</key> + <array> + <string>{{0, 0}, {694, 164}}</string> + <string>{{0, 164}, {694, 216}}</string> + </array> + </dict> + </dict> + <key>LauncherConfigVersion</key> + <string>8</string> + <key>PBXProjectModuleGUID</key> + <string>1C162984064C10D400B95A72</string> + <key>PBXProjectModuleLabel</key> + <string>Debug - GLUTExamples (Underwater)</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>DebugConsoleDrawerSize</key> + <string>{100, 120}</string> + <key>DebugConsoleVisible</key> + <string>None</string> + <key>DebugConsoleWindowFrame</key> + <string>{{200, 200}, {500, 300}}</string> + <key>DebugSTDIOWindowFrame</key> + <string>{{200, 200}, {500, 300}}</string> + <key>Frame</key> + <string>{{0, 0}, {694, 380}}</string> + <key>RubberWindowFrame</key> + <string>321 238 694 422 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXDebugSessionModule</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Debugger</string> + <key>ServiceClasses</key> + <array> + <string>PBXDebugSessionModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1CD10A99069EF8BA00B06720</string> + <string>1C0AD2AB069F1E9B00FABCE6</string> + <string>1C162984064C10D400B95A72</string> + <string>1C0AD2AC069F1E9B00FABCE6</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.debugV3</string> + <key>WindowString</key> + <string>321 238 694 422 0 0 1440 878 </string> + <key>WindowToolGUID</key> + <string>1CD10A99069EF8BA00B06720</string> + <key>WindowToolIsVisible</key> + <integer>0</integer> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.build</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CD0528F0623707200166675</string> + <key>PBXProjectModuleLabel</key> + <string><No Editor></string> + <key>PBXSplitModuleInNavigatorKey</key> + <dict> + <key>Split0</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CD052900623707200166675</string> + </dict> + <key>SplitCount</key> + <string>1</string> + </dict> + <key>StatusBarVisibility</key> + <integer>1</integer> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {500, 215}}</string> + <key>RubberWindowFrame</key> + <string>192 257 500 500 0 0 1280 1002 </string> + </dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>218pt</string> + </dict> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>XCMainBuildResultsModuleGUID</string> + <key>PBXProjectModuleLabel</key> + <string>Build Results</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 222}, {500, 236}}</string> + <key>RubberWindowFrame</key> + <string>192 257 500 500 0 0 1280 1002 </string> + </dict> + <key>Module</key> + <string>PBXBuildResultsModule</string> + <key>Proportion</key> + <string>236pt</string> + </dict> + </array> + <key>Proportion</key> + <string>458pt</string> + </dict> + </array> + <key>Name</key> + <string>Build Results</string> + <key>ServiceClasses</key> + <array> + <string>PBXBuildResultsModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1C78EAA5065D492600B07095</string> + <string>1C78EAA6065D492600B07095</string> + <string>1CD0528F0623707200166675</string> + <string>XCMainBuildResultsModuleGUID</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.buildV3</string> + <key>WindowString</key> + <string>192 257 500 500 0 0 1280 1002 </string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.find</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CDD528C0622207200134675</string> + <key>PBXProjectModuleLabel</key> + <string><No Editor></string> + <key>PBXSplitModuleInNavigatorKey</key> + <dict> + <key>Split0</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CD0528D0623707200166675</string> + </dict> + <key>SplitCount</key> + <string>1</string> + </dict> + <key>StatusBarVisibility</key> + <integer>1</integer> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {781, 167}}</string> + <key>RubberWindowFrame</key> + <string>62 385 781 470 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>781pt</string> + </dict> + </array> + <key>Proportion</key> + <string>50%</string> + </dict> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CD0528E0623707200166675</string> + <key>PBXProjectModuleLabel</key> + <string>Project Find</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{8, 0}, {773, 254}}</string> + <key>RubberWindowFrame</key> + <string>62 385 781 470 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXProjectFindModule</string> + <key>Proportion</key> + <string>50%</string> + </dict> + </array> + <key>Proportion</key> + <string>428pt</string> + </dict> + </array> + <key>Name</key> + <string>Project Find</string> + <key>ServiceClasses</key> + <array> + <string>PBXProjectFindModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1C530D57069F1CE1000CFCEE</string> + <string>1C530D58069F1CE1000CFCEE</string> + <string>1C530D59069F1CE1000CFCEE</string> + <string>1CDD528C0622207200134675</string> + <string>1C530D5A069F1CE1000CFCEE</string> + <string>1CE0B1FE06471DED0097A5F4</string> + <string>1CD0528E0623707200166675</string> + </array> + <key>WindowString</key> + <string>62 385 781 470 0 0 1440 878 </string> + <key>WindowToolGUID</key> + <string>1C530D57069F1CE1000CFCEE</string> + <key>WindowToolIsVisible</key> + <integer>0</integer> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.snapshots</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>Module</key> + <string>XCSnapshotModule</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Snapshots</string> + <key>ServiceClasses</key> + <array> + <string>XCSnapshotModule</string> + </array> + <key>StatusbarIsVisible</key> + <string>Yes</string> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.snapshots</string> + <key>WindowString</key> + <string>315 824 300 550 0 0 1440 878 </string> + <key>WindowToolIsVisible</key> + <string>Yes</string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.debuggerConsole</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1C78EAAC065D492600B07095</string> + <key>PBXProjectModuleLabel</key> + <string>Debugger Console</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {700, 358}}</string> + <key>RubberWindowFrame</key> + <string>149 87 700 400 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXDebugCLIModule</string> + <key>Proportion</key> + <string>358pt</string> + </dict> + </array> + <key>Proportion</key> + <string>358pt</string> + </dict> + </array> + <key>Name</key> + <string>Debugger Console</string> + <key>ServiceClasses</key> + <array> + <string>PBXDebugCLIModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1C530D5B069F1CE1000CFCEE</string> + <string>1C530D5C069F1CE1000CFCEE</string> + <string>1C78EAAC065D492600B07095</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.consoleV3</string> + <key>WindowString</key> + <string>149 87 440 400 0 0 1440 878 </string> + <key>WindowToolGUID</key> + <string>1C530D5B069F1CE1000CFCEE</string> + <key>WindowToolIsVisible</key> + <integer>0</integer> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.scm</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1C78EAB2065D492600B07095</string> + <key>PBXProjectModuleLabel</key> + <string><No Editor></string> + <key>PBXSplitModuleInNavigatorKey</key> + <dict> + <key>Split0</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1C78EAB3065D492600B07095</string> + </dict> + <key>SplitCount</key> + <string>1</string> + </dict> + <key>StatusBarVisibility</key> + <integer>1</integer> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {452, 0}}</string> + <key>RubberWindowFrame</key> + <string>743 379 452 308 0 0 1280 1002 </string> + </dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>0pt</string> + </dict> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CD052920623707200166675</string> + <key>PBXProjectModuleLabel</key> + <string>SCM</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>ConsoleFrame</key> + <string>{{0, 259}, {452, 0}}</string> + <key>Frame</key> + <string>{{0, 7}, {452, 259}}</string> + <key>RubberWindowFrame</key> + <string>743 379 452 308 0 0 1280 1002 </string> + <key>TableConfiguration</key> + <array> + <string>Status</string> + <real>30</real> + <string>FileName</string> + <real>199</real> + <string>Path</string> + <real>197.09500122070312</real> + </array> + <key>TableFrame</key> + <string>{{0, 0}, {452, 250}}</string> + </dict> + <key>Module</key> + <string>PBXCVSModule</string> + <key>Proportion</key> + <string>262pt</string> + </dict> + </array> + <key>Proportion</key> + <string>266pt</string> + </dict> + </array> + <key>Name</key> + <string>SCM</string> + <key>ServiceClasses</key> + <array> + <string>PBXCVSModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1C78EAB4065D492600B07095</string> + <string>1C78EAB5065D492600B07095</string> + <string>1C78EAB2065D492600B07095</string> + <string>1CD052920623707200166675</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.scmV3</string> + <key>WindowString</key> + <string>743 379 452 308 0 0 1280 1002 </string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.breakpoints</string> + <key>IsVertical</key> + <integer>0</integer> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>PBXBottomSmartGroupGIDs</key> + <array> + <string>1C77FABC04509CD000000102</string> + </array> + <key>PBXProjectModuleGUID</key> + <string>1CE0B1FE06471DED0097A5F4</string> + <key>PBXProjectModuleLabel</key> + <string>Files</string> + <key>PBXProjectStructureProvided</key> + <string>no</string> + <key>PBXSmartGroupTreeModuleColumnData</key> + <dict> + <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> + <array> + <real>168</real> + </array> + <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> + <array> + <string>MainColumn</string> + </array> + </dict> + <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> + <dict> + <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> + <array> + <string>1C77FABC04509CD000000102</string> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> + <array> + <array> + <integer>0</integer> + </array> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> + <string>{{0, 0}, {168, 350}}</string> + </dict> + <key>PBXTopSmartGroupGIDs</key> + <array/> + <key>XCIncludePerspectivesSwitch</key> + <integer>0</integer> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {185, 368}}</string> + <key>GroupTreeTableConfiguration</key> + <array> + <string>MainColumn</string> + <real>168</real> + </array> + <key>RubberWindowFrame</key> + <string>315 424 744 409 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXSmartGroupTreeModule</string> + <key>Proportion</key> + <string>185pt</string> + </dict> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CA1AED706398EBD00589147</string> + <key>PBXProjectModuleLabel</key> + <string>Detail</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{190, 0}, {554, 368}}</string> + <key>RubberWindowFrame</key> + <string>315 424 744 409 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>XCDetailModule</string> + <key>Proportion</key> + <string>554pt</string> + </dict> + </array> + <key>Proportion</key> + <string>368pt</string> + </dict> + </array> + <key>MajorVersion</key> + <integer>3</integer> + <key>MinorVersion</key> + <integer>0</integer> + <key>Name</key> + <string>Breakpoints</string> + <key>ServiceClasses</key> + <array> + <string>PBXSmartGroupTreeModule</string> + <string>XCDetailModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1CDDB66807F98D9800BB5817</string> + <string>1CDDB66907F98D9800BB5817</string> + <string>1CE0B1FE06471DED0097A5F4</string> + <string>1CA1AED706398EBD00589147</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.breakpointsV3</string> + <key>WindowString</key> + <string>315 424 744 409 0 0 1440 878 </string> + <key>WindowToolGUID</key> + <string>1CDDB66807F98D9800BB5817</string> + <key>WindowToolIsVisible</key> + <integer>1</integer> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.debugAnimator</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Debug Visualizer</string> + <key>ServiceClasses</key> + <array> + <string>PBXNavigatorGroup</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.debugAnimatorV3</string> + <key>WindowString</key> + <string>100 100 700 500 0 0 1280 1002 </string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.bookmarks</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>Module</key> + <string>PBXBookmarksModule</string> + <key>Proportion</key> + <string>166pt</string> + </dict> + </array> + <key>Proportion</key> + <string>166pt</string> + </dict> + </array> + <key>Name</key> + <string>Bookmarks</string> + <key>ServiceClasses</key> + <array> + <string>PBXBookmarksModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>0</integer> + <key>WindowString</key> + <string>538 42 401 187 0 0 1280 1002 </string> + </dict> + <dict> + <key>FirstTimeWindowDisplayed</key> + <false/> + <key>Identifier</key> + <string>windowTool.projectFormatConflicts</string> + <key>IsVertical</key> + <true/> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>BecomeActive</key> + <true/> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>8BCAE52E1D49920D0047D4BD</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {472, 302}}</string> + <key>RubberWindowFrame</key> + <string>569 378 472 322 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>XCProjectFormatConflictsModule</string> + <key>Proportion</key> + <string>302pt</string> + </dict> + </array> + <key>Proportion</key> + <string>302pt</string> + </dict> + </array> + <key>Name</key> + <string>Project Format Conflicts</string> + <key>ServiceClasses</key> + <array> + <string>XCProjectFormatConflictsModule</string> + </array> + <key>StatusbarIsVisible</key> + <false/> + <key>TableOfContents</key> + <array> + <string>8BCAE52F1D49920D0047D4BD</string> + <string>8BCAE5301D49920D0047D4BD</string> + <string>8BCAE52E1D49920D0047D4BD</string> + </array> + <key>WindowContentMinSize</key> + <string>450 300</string> + <key>WindowString</key> + <string>569 378 472 322 0 0 1440 878 </string> + <key>WindowToolGUID</key> + <string>8BCAE52F1D49920D0047D4BD</string> + <key>WindowToolIsVisible</key> + <false/> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.classBrowser</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>OptionsSetName</key> + <string>Hierarchy, all classes</string> + <key>PBXProjectModuleGUID</key> + <string>1CA6456E063B45B4001379D8</string> + <key>PBXProjectModuleLabel</key> + <string>Class Browser - NSObject</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>ClassesFrame</key> + <string>{{0, 0}, {369, 96}}</string> + <key>ClassesTreeTableConfiguration</key> + <array> + <string>PBXClassNameColumnIdentifier</string> + <real>208</real> + <string>PBXClassBookColumnIdentifier</string> + <real>22</real> + </array> + <key>Frame</key> + <string>{{0, 0}, {616, 353}}</string> + <key>MembersFrame</key> + <string>{{0, 105}, {369, 395}}</string> + <key>MembersTreeTableConfiguration</key> + <array> + <string>PBXMemberTypeIconColumnIdentifier</string> + <real>22</real> + <string>PBXMemberNameColumnIdentifier</string> + <real>216</real> + <string>PBXMemberTypeColumnIdentifier</string> + <real>94</real> + <string>PBXMemberBookColumnIdentifier</string> + <real>22</real> + </array> + <key>PBXModuleWindowStatusBarHidden2</key> + <integer>1</integer> + <key>RubberWindowFrame</key> + <string>597 125 616 374 0 0 1280 1002 </string> + </dict> + <key>Module</key> + <string>PBXClassBrowserModule</string> + <key>Proportion</key> + <string>354pt</string> + </dict> + </array> + <key>Proportion</key> + <string>354pt</string> + </dict> + </array> + <key>Name</key> + <string>Class Browser</string> + <key>ServiceClasses</key> + <array> + <string>PBXClassBrowserModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>0</integer> + <key>TableOfContents</key> + <array> + <string>1C78EABA065D492600B07095</string> + <string>1C78EABB065D492600B07095</string> + <string>1CA6456E063B45B4001379D8</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.classbrowser</string> + <key>WindowString</key> + <string>597 125 616 374 0 0 1280 1002 </string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.refactoring</string> + <key>IncludeInToolsMenu</key> + <integer>0</integer> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{0, 0}, {500, 335}</string> + <key>RubberWindowFrame</key> + <string>{0, 0}, {500, 335}</string> + </dict> + <key>Module</key> + <string>XCRefactoringModule</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Refactoring</string> + <key>ServiceClasses</key> + <array> + <string>XCRefactoringModule</string> + </array> + <key>WindowString</key> + <string>200 200 500 356 0 0 1920 1200 </string> + </dict> + </array> +</dict> +</plist> diff --git a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.pbxproj b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.pbxproj new file mode 100755 index 0000000..eac959a --- /dev/null +++ b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.pbxproj @@ -0,0 +1,2201 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXBuildFile section */ + 2407DEB9089929BA00EB68BF /* DitherFloat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2407DEB6089929BA00EB68BF /* DitherFloat.cpp */; }; + 245463B90991757100464AD3 /* DitherFloat.h in Headers */ = {isa = PBXBuildFile; fileRef = 245463B80991757100464AD3 /* DitherFloat.h */; }; + 24A202190F90D1DE003BB5A7 /* aeffect.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FF910F90D1DD003BB5A7 /* aeffect.h */; }; + 24A2021A0F90D1DE003BB5A7 /* aeffectx.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FF920F90D1DD003BB5A7 /* aeffectx.h */; }; + 24A2021B0F90D1DE003BB5A7 /* vstfxstore.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FF930F90D1DD003BB5A7 /* vstfxstore.h */; }; + 24A2021D0F90D1DE003BB5A7 /* adelay.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FF990F90D1DD003BB5A7 /* adelay.h */; }; + 24A202240F90D1DE003BB5A7 /* sdeditor.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FFA20F90D1DD003BB5A7 /* sdeditor.h */; }; + 24A202260F90D1DE003BB5A7 /* surrounddelay.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FFA40F90D1DD003BB5A7 /* surrounddelay.h */; }; + 24A2022A0F90D1DE003BB5A7 /* again.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FFAB0F90D1DD003BB5A7 /* again.h */; }; + 24A202330F90D1DE003BB5A7 /* gmnames.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FFBF0F90D1DD003BB5A7 /* gmnames.h */; }; + 24A202350F90D1DE003BB5A7 /* vstxsynth.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FFC10F90D1DD003BB5A7 /* vstxsynth.h */; }; + 24A202460F90D1DE003BB5A7 /* aeffeditor.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FFD80F90D1DD003BB5A7 /* aeffeditor.h */; }; + 24A202480F90D1DE003BB5A7 /* audioeffect.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FFDA0F90D1DD003BB5A7 /* audioeffect.h */; }; + 24A2024A0F90D1DE003BB5A7 /* audioeffectx.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FFDC0F90D1DD003BB5A7 /* audioeffectx.h */; }; + 24A2024D0F90D1DE003BB5A7 /* cw_vst_prefix.pch++ in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FFE20F90D1DD003BB5A7 /* cw_vst_prefix.pch++ */; }; + 24A202510F90D1DE003BB5A7 /* xcode_au_prefix.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FFEC0F90D1DD003BB5A7 /* xcode_au_prefix.h */; }; + 24A202520F90D1DE003BB5A7 /* xcode_vst_prefix.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FFED0F90D1DD003BB5A7 /* xcode_vst_prefix.h */; }; + 24A202680F90D1DE003BB5A7 /* controlsgui.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A200050F90D1DD003BB5A7 /* controlsgui.h */; }; + 24A2026A0F90D1DE003BB5A7 /* pdrawtesteditor.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A200070F90D1DD003BB5A7 /* pdrawtesteditor.h */; }; + 24A2026C0F90D1DE003BB5A7 /* pdrawtesteffect.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A200090F90D1DD003BB5A7 /* pdrawtesteffect.h */; }; + 24A2026F0F90D1DE003BB5A7 /* pdrawtestview.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2000C0F90D1DD003BB5A7 /* pdrawtestview.h */; }; + 24A202710F90D1DE003BB5A7 /* pprimitivesviews.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2000E0F90D1DD003BB5A7 /* pprimitivesviews.h */; }; + 24A202780F90D1DE003BB5A7 /* aeffguieditor.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A200180F90D1DD003BB5A7 /* aeffguieditor.h */; }; + 24A2027A0F90D1DE003BB5A7 /* cfileselector.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2001A0F90D1DD003BB5A7 /* cfileselector.h */; }; + 24A2027D0F90D1DE003BB5A7 /* cscrollview.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2001D0F90D1DD003BB5A7 /* cscrollview.h */; }; + 24A2027F0F90D1DE003BB5A7 /* ctabview.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2001F0F90D1DD003BB5A7 /* ctabview.h */; }; + 24A203A50F90D1DE003BB5A7 /* plugguieditor.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A201470F90D1DE003BB5A7 /* plugguieditor.h */; }; + 24A203A70F90D1DE003BB5A7 /* vstcontrols.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A201490F90D1DE003BB5A7 /* vstcontrols.h */; }; + 24A203A90F90D1DE003BB5A7 /* vstgui.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2014B0F90D1DE003BB5A7 /* vstgui.h */; }; + 24A203AA0F90D1DE003BB5A7 /* vstkeycode.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2014C0F90D1DE003BB5A7 /* vstkeycode.h */; }; + 24A203AB0F90D1DE003BB5A7 /* vstplugscarbon.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2014D0F90D1DE003BB5A7 /* vstplugscarbon.h */; }; + 24A203AC0F90D1DE003BB5A7 /* vstplugsmac.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2014E0F90D1DE003BB5A7 /* vstplugsmac.h */; }; + 24A203AD0F90D1DE003BB5A7 /* vstplugsmacho.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2014F0F90D1DE003BB5A7 /* vstplugsmacho.h */; }; + 24A203AE0F90D1DE003BB5A7 /* vstplugsquartz.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A201500F90D1DE003BB5A7 /* vstplugsquartz.h */; }; + 24A203CB0F90D251003BB5A7 /* audioeffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24A2FFD90F90D1DD003BB5A7 /* audioeffect.cpp */; }; + 24A203CC0F90D251003BB5A7 /* audioeffectx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; }; + 24A203CD0F90D251003BB5A7 /* vstplugmain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24A2FFDD0F90D1DD003BB5A7 /* vstplugmain.cpp */; }; + 24CFB70407E7A0220081BD57 /* PkgInfo in Resources */ = {isa = PBXBuildFile; fileRef = 24CFB70307E7A0220081BD57 /* PkgInfo */; }; + 24D8287009A914000093AEF8 /* DitherFloatProc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24D8286F09A914000093AEF8 /* DitherFloatProc.cpp */; }; + 24D8287F09A9164A0093AEF8 /* xcode_vst_prefix.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D8287E09A9164A0093AEF8 /* xcode_vst_prefix.h */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 24A203D60F90D272003BB5A7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 24A2FFB00F90D1DD003BB5A7 /* vst 2.4 examples.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8D01CCD20486CAD60068D4B7; + remoteInfo = again; + }; + 24A203D80F90D272003BB5A7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 24A2FFB00F90D1DD003BB5A7 /* vst 2.4 examples.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = F4476974093DAE42008998C4; + remoteInfo = adelay; + }; + 24A203DA0F90D272003BB5A7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 24A2FFB00F90D1DD003BB5A7 /* vst 2.4 examples.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = F4FF52220929FBF500DDED7A; + remoteInfo = vstxsynth; + }; + 24A203DC0F90D272003BB5A7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 24A2FFB00F90D1DD003BB5A7 /* vst 2.4 examples.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = F4476A10093DCAF9008998C4; + remoteInfo = surrounddelay; + }; + 24A203DE0F90D272003BB5A7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 24A2FFB00F90D1DD003BB5A7 /* vst 2.4 examples.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = F4FF52F3092A312800DDED7A; + remoteInfo = minihost; + }; + 24A203E40F90D272003BB5A7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 24A2FFE50F90D1DD003BB5A7 /* drawtest.xcode */; + proxyType = 2; + remoteGlobalIDString = 8D01CCD20486CAD60068D4B7; + remoteInfo = AudioUnit; + }; + 24A203E60F90D272003BB5A7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 24A2FFE50F90D1DD003BB5A7 /* drawtest.xcode */; + proxyType = 2; + remoteGlobalIDString = F4C9F1D407B2320800010DAD; + remoteInfo = VST; + }; + 24A203EC0F90D272003BB5A7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 24A2FFE80F90D1DD003BB5A7 /* drawtest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8D01CCD20486CAD60068D4B7; + remoteInfo = AudioUnit; + }; + 24A203EE0F90D272003BB5A7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 24A2FFE80F90D1DD003BB5A7 /* drawtest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = F4C9F1D407B2320800010DAD; + remoteInfo = VST; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 08EA7FFBFE8413EDC02AAC07 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; }; + 2407DE920899296600EB68BF /* DitherFloat.vst */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DitherFloat.vst; sourceTree = BUILT_PRODUCTS_DIR; }; + 2407DEB6089929BA00EB68BF /* DitherFloat.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = DitherFloat.cpp; path = source/DitherFloat.cpp; sourceTree = "<group>"; }; + 2434720A098313350063BBF1 /* QuickTime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = /System/Library/Frameworks/QuickTime.framework; sourceTree = "<absolute>"; }; + 245463B80991757100464AD3 /* DitherFloat.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = DitherFloat.h; path = source/DitherFloat.h; sourceTree = "<group>"; }; + 24A200000F90D1DD003BB5A7 /* bmp10014.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10014.bmp; sourceTree = "<group>"; }; + 24A200010F90D1DD003BB5A7 /* bmp10015.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10015.bmp; sourceTree = "<group>"; }; + 24A200020F90D1DD003BB5A7 /* bmp10016.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10016.bmp; sourceTree = "<group>"; }; + 24A200040F90D1DD003BB5A7 /* controlsgui.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = controlsgui.cpp; sourceTree = "<group>"; }; + 24A200050F90D1DD003BB5A7 /* controlsgui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = controlsgui.h; sourceTree = "<group>"; }; + 24A200060F90D1DD003BB5A7 /* pdrawtesteditor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pdrawtesteditor.cpp; sourceTree = "<group>"; }; + 24A200070F90D1DD003BB5A7 /* pdrawtesteditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pdrawtesteditor.h; sourceTree = "<group>"; }; + 24A200080F90D1DD003BB5A7 /* pdrawtesteffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pdrawtesteffect.cpp; sourceTree = "<group>"; }; + 24A200090F90D1DD003BB5A7 /* pdrawtesteffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pdrawtesteffect.h; sourceTree = "<group>"; }; + 24A2000A0F90D1DD003BB5A7 /* pdrawtestmain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pdrawtestmain.cpp; sourceTree = "<group>"; }; + 24A2000B0F90D1DD003BB5A7 /* pdrawtestview.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pdrawtestview.cpp; sourceTree = "<group>"; }; + 24A2000C0F90D1DD003BB5A7 /* pdrawtestview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pdrawtestview.h; sourceTree = "<group>"; }; + 24A2000D0F90D1DD003BB5A7 /* pprimitivesviews.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pprimitivesviews.cpp; sourceTree = "<group>"; }; + 24A2000E0F90D1DD003BB5A7 /* pprimitivesviews.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pprimitivesviews.h; sourceTree = "<group>"; }; + 24A200100F90D1DD003BB5A7 /* drawtest.def */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = drawtest.def; sourceTree = "<group>"; }; + 24A200110F90D1DD003BB5A7 /* drawtest.rc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = drawtest.rc; sourceTree = "<group>"; }; + 24A200120F90D1DD003BB5A7 /* drawtest.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = drawtest.vcproj; sourceTree = "<group>"; }; + 24A200140F90D1DD003BB5A7 /* drawtest.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = drawtest.dsp; sourceTree = "<group>"; }; + 24A200150F90D1DD003BB5A7 /* drawtest.dsw */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = drawtest.dsw; sourceTree = "<group>"; }; + 24A200170F90D1DD003BB5A7 /* aeffguieditor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = aeffguieditor.cpp; sourceTree = "<group>"; }; + 24A200180F90D1DD003BB5A7 /* aeffguieditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aeffguieditor.h; sourceTree = "<group>"; }; + 24A200190F90D1DD003BB5A7 /* cfileselector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cfileselector.cpp; sourceTree = "<group>"; }; + 24A2001A0F90D1DD003BB5A7 /* cfileselector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cfileselector.h; sourceTree = "<group>"; }; + 24A2001B0F90D1DD003BB5A7 /* Changelog */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Changelog; sourceTree = "<group>"; }; + 24A2001C0F90D1DD003BB5A7 /* cscrollview.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cscrollview.cpp; sourceTree = "<group>"; }; + 24A2001D0F90D1DD003BB5A7 /* cscrollview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cscrollview.h; sourceTree = "<group>"; }; + 24A2001E0F90D1DD003BB5A7 /* ctabview.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ctabview.cpp; sourceTree = "<group>"; }; + 24A2001F0F90D1DD003BB5A7 /* ctabview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ctabview.h; sourceTree = "<group>"; }; + 24A200220F90D1DD003BB5A7 /* aeffguieditor_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = aeffguieditor_8cpp.html; sourceTree = "<group>"; }; + 24A200230F90D1DD003BB5A7 /* aeffguieditor_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = aeffguieditor_8h.html; sourceTree = "<group>"; }; + 24A200240F90D1DD003BB5A7 /* annotated.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = annotated.html; sourceTree = "<group>"; }; + 24A200250F90D1DD003BB5A7 /* cfileselector_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = cfileselector_8cpp.html; sourceTree = "<group>"; }; + 24A200260F90D1DD003BB5A7 /* cfileselector_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = cfileselector_8h.html; sourceTree = "<group>"; }; + 24A200270F90D1DD003BB5A7 /* class_a_eff_g_u_i_editor-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_a_eff_g_u_i_editor-members.html"; sourceTree = "<group>"; }; + 24A200280F90D1DD003BB5A7 /* class_a_eff_g_u_i_editor.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_a_eff_g_u_i_editor.html; sourceTree = "<group>"; }; + 24A200290F90D1DD003BB5A7 /* class_c_anim_knob-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_anim_knob-members.html"; sourceTree = "<group>"; }; + 24A2002A0F90D1DD003BB5A7 /* class_c_anim_knob.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_anim_knob.html; sourceTree = "<group>"; }; + 24A2002B0F90D1DD003BB5A7 /* class_c_anim_knob.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_anim_knob.png; sourceTree = "<group>"; }; + 24A2002C0F90D1DD003BB5A7 /* class_c_attribute_list_entry-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_attribute_list_entry-members.html"; sourceTree = "<group>"; }; + 24A2002D0F90D1DD003BB5A7 /* class_c_attribute_list_entry.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_attribute_list_entry.html; sourceTree = "<group>"; }; + 24A2002E0F90D1DD003BB5A7 /* class_c_auto_animation-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_auto_animation-members.html"; sourceTree = "<group>"; }; + 24A2002F0F90D1DD003BB5A7 /* class_c_auto_animation.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_auto_animation.html; sourceTree = "<group>"; }; + 24A200300F90D1DD003BB5A7 /* class_c_auto_animation.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_auto_animation.png; sourceTree = "<group>"; }; + 24A200310F90D1DD003BB5A7 /* class_c_bitmap-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_bitmap-members.html"; sourceTree = "<group>"; }; + 24A200320F90D1DD003BB5A7 /* class_c_bitmap.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_bitmap.html; sourceTree = "<group>"; }; + 24A200330F90D1DD003BB5A7 /* class_c_bitmap.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_bitmap.png; sourceTree = "<group>"; }; + 24A200340F90D1DD003BB5A7 /* class_c_c_view-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_c_view-members.html"; sourceTree = "<group>"; }; + 24A200350F90D1DD003BB5A7 /* class_c_c_view.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_c_view.html; sourceTree = "<group>"; }; + 24A200360F90D1DD003BB5A7 /* class_c_control-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_control-members.html"; sourceTree = "<group>"; }; + 24A200370F90D1DD003BB5A7 /* class_c_control.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_control.html; sourceTree = "<group>"; }; + 24A200380F90D1DD003BB5A7 /* class_c_control.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_control.png; sourceTree = "<group>"; }; + 24A200390F90D1DD003BB5A7 /* class_c_control_listener-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_control_listener-members.html"; sourceTree = "<group>"; }; + 24A2003A0F90D1DD003BB5A7 /* class_c_control_listener.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_control_listener.html; sourceTree = "<group>"; }; + 24A2003B0F90D1DD003BB5A7 /* class_c_control_listener.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_control_listener.png; sourceTree = "<group>"; }; + 24A2003C0F90D1DD003BB5A7 /* class_c_drag_container-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_drag_container-members.html"; sourceTree = "<group>"; }; + 24A2003D0F90D1DD003BB5A7 /* class_c_drag_container.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_drag_container.html; sourceTree = "<group>"; }; + 24A2003E0F90D1DD003BB5A7 /* class_c_drag_container.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_drag_container.png; sourceTree = "<group>"; }; + 24A2003F0F90D1DD003BB5A7 /* class_c_draw_context-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_draw_context-members.html"; sourceTree = "<group>"; }; + 24A200400F90D1DD003BB5A7 /* class_c_draw_context.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_draw_context.html; sourceTree = "<group>"; }; + 24A200410F90D1DD003BB5A7 /* class_c_draw_context.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_draw_context.png; sourceTree = "<group>"; }; + 24A200420F90D1DD003BB5A7 /* class_c_file_selector-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_file_selector-members.html"; sourceTree = "<group>"; }; + 24A200430F90D1DD003BB5A7 /* class_c_file_selector.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_file_selector.html; sourceTree = "<group>"; }; + 24A200440F90D1DD003BB5A7 /* class_c_frame-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_frame-members.html"; sourceTree = "<group>"; }; + 24A200450F90D1DD003BB5A7 /* class_c_frame.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_frame.html; sourceTree = "<group>"; }; + 24A200460F90D1DD003BB5A7 /* class_c_frame.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_frame.png; sourceTree = "<group>"; }; + 24A200470F90D1DD003BB5A7 /* class_c_horizontal_slider-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_horizontal_slider-members.html"; sourceTree = "<group>"; }; + 24A200480F90D1DD003BB5A7 /* class_c_horizontal_slider.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_horizontal_slider.html; sourceTree = "<group>"; }; + 24A200490F90D1DD003BB5A7 /* class_c_horizontal_slider.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_horizontal_slider.png; sourceTree = "<group>"; }; + 24A2004A0F90D1DD003BB5A7 /* class_c_horizontal_switch-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_horizontal_switch-members.html"; sourceTree = "<group>"; }; + 24A2004B0F90D1DD003BB5A7 /* class_c_horizontal_switch.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_horizontal_switch.html; sourceTree = "<group>"; }; + 24A2004C0F90D1DD003BB5A7 /* class_c_horizontal_switch.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_horizontal_switch.png; sourceTree = "<group>"; }; + 24A2004D0F90D1DD003BB5A7 /* class_c_kick_button-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_kick_button-members.html"; sourceTree = "<group>"; }; + 24A2004E0F90D1DD003BB5A7 /* class_c_kick_button.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_kick_button.html; sourceTree = "<group>"; }; + 24A2004F0F90D1DD003BB5A7 /* class_c_kick_button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_kick_button.png; sourceTree = "<group>"; }; + 24A200500F90D1DD003BB5A7 /* class_c_knob-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_knob-members.html"; sourceTree = "<group>"; }; + 24A200510F90D1DD003BB5A7 /* class_c_knob.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_knob.html; sourceTree = "<group>"; }; + 24A200520F90D1DD003BB5A7 /* class_c_knob.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_knob.png; sourceTree = "<group>"; }; + 24A200530F90D1DD003BB5A7 /* class_c_movie_bitmap-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_movie_bitmap-members.html"; sourceTree = "<group>"; }; + 24A200540F90D1DD003BB5A7 /* class_c_movie_bitmap.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_movie_bitmap.html; sourceTree = "<group>"; }; + 24A200550F90D1DD003BB5A7 /* class_c_movie_bitmap.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_movie_bitmap.png; sourceTree = "<group>"; }; + 24A200560F90D1DD003BB5A7 /* class_c_movie_button-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_movie_button-members.html"; sourceTree = "<group>"; }; + 24A200570F90D1DD003BB5A7 /* class_c_movie_button.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_movie_button.html; sourceTree = "<group>"; }; + 24A200580F90D1DD003BB5A7 /* class_c_movie_button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_movie_button.png; sourceTree = "<group>"; }; + 24A200590F90D1DD003BB5A7 /* class_c_offscreen_context-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_offscreen_context-members.html"; sourceTree = "<group>"; }; + 24A2005A0F90D1DD003BB5A7 /* class_c_offscreen_context.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_offscreen_context.html; sourceTree = "<group>"; }; + 24A2005B0F90D1DD003BB5A7 /* class_c_offscreen_context.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_offscreen_context.png; sourceTree = "<group>"; }; + 24A2005C0F90D1DD003BB5A7 /* class_c_on_off_button-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_on_off_button-members.html"; sourceTree = "<group>"; }; + 24A2005D0F90D1DD003BB5A7 /* class_c_on_off_button.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_on_off_button.html; sourceTree = "<group>"; }; + 24A2005E0F90D1DD003BB5A7 /* class_c_on_off_button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_on_off_button.png; sourceTree = "<group>"; }; + 24A2005F0F90D1DD003BB5A7 /* class_c_option_menu-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_option_menu-members.html"; sourceTree = "<group>"; }; + 24A200600F90D1DD003BB5A7 /* class_c_option_menu.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_option_menu.html; sourceTree = "<group>"; }; + 24A200610F90D1DD003BB5A7 /* class_c_option_menu.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_option_menu.png; sourceTree = "<group>"; }; + 24A200620F90D1DD003BB5A7 /* class_c_option_menu_scheme-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_option_menu_scheme-members.html"; sourceTree = "<group>"; }; + 24A200630F90D1DD003BB5A7 /* class_c_option_menu_scheme.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_option_menu_scheme.html; sourceTree = "<group>"; }; + 24A200640F90D1DD003BB5A7 /* class_c_option_menu_scheme.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_option_menu_scheme.png; sourceTree = "<group>"; }; + 24A200650F90D1DD003BB5A7 /* class_c_param_display-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_param_display-members.html"; sourceTree = "<group>"; }; + 24A200660F90D1DD003BB5A7 /* class_c_param_display.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_param_display.html; sourceTree = "<group>"; }; + 24A200670F90D1DD003BB5A7 /* class_c_param_display.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_param_display.png; sourceTree = "<group>"; }; + 24A200680F90D1DD003BB5A7 /* class_c_reference_counter-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_reference_counter-members.html"; sourceTree = "<group>"; }; + 24A200690F90D1DD003BB5A7 /* class_c_reference_counter.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_reference_counter.html; sourceTree = "<group>"; }; + 24A2006A0F90D1DD003BB5A7 /* class_c_reference_counter.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_reference_counter.png; sourceTree = "<group>"; }; + 24A2006B0F90D1DD003BB5A7 /* class_c_rocker_switch-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_rocker_switch-members.html"; sourceTree = "<group>"; }; + 24A2006C0F90D1DD003BB5A7 /* class_c_rocker_switch.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_rocker_switch.html; sourceTree = "<group>"; }; + 24A2006D0F90D1DD003BB5A7 /* class_c_rocker_switch.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_rocker_switch.png; sourceTree = "<group>"; }; + 24A2006E0F90D1DD003BB5A7 /* class_c_scroll_container-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_scroll_container-members.html"; sourceTree = "<group>"; }; + 24A2006F0F90D1DD003BB5A7 /* class_c_scroll_container.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_scroll_container.html; sourceTree = "<group>"; }; + 24A200700F90D1DD003BB5A7 /* class_c_scroll_container.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_scroll_container.png; sourceTree = "<group>"; }; + 24A200710F90D1DD003BB5A7 /* class_c_scroll_view-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_scroll_view-members.html"; sourceTree = "<group>"; }; + 24A200720F90D1DD003BB5A7 /* class_c_scroll_view.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_scroll_view.html; sourceTree = "<group>"; }; + 24A200730F90D1DD003BB5A7 /* class_c_scroll_view.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_scroll_view.png; sourceTree = "<group>"; }; + 24A200740F90D1DD003BB5A7 /* class_c_scrollbar-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_scrollbar-members.html"; sourceTree = "<group>"; }; + 24A200750F90D1DD003BB5A7 /* class_c_scrollbar.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_scrollbar.html; sourceTree = "<group>"; }; + 24A200760F90D1DD003BB5A7 /* class_c_scrollbar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_scrollbar.png; sourceTree = "<group>"; }; + 24A200770F90D1DD003BB5A7 /* class_c_slider-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_slider-members.html"; sourceTree = "<group>"; }; + 24A200780F90D1DD003BB5A7 /* class_c_slider.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_slider.html; sourceTree = "<group>"; }; + 24A200790F90D1DD003BB5A7 /* class_c_slider.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_slider.png; sourceTree = "<group>"; }; + 24A2007A0F90D1DD003BB5A7 /* class_c_special_digit-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_special_digit-members.html"; sourceTree = "<group>"; }; + 24A2007B0F90D1DD003BB5A7 /* class_c_special_digit.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_special_digit.html; sourceTree = "<group>"; }; + 24A2007C0F90D1DD003BB5A7 /* class_c_special_digit.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_special_digit.png; sourceTree = "<group>"; }; + 24A2007D0F90D1DD003BB5A7 /* class_c_splash_screen-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_splash_screen-members.html"; sourceTree = "<group>"; }; + 24A2007E0F90D1DD003BB5A7 /* class_c_splash_screen.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_splash_screen.html; sourceTree = "<group>"; }; + 24A2007F0F90D1DD003BB5A7 /* class_c_splash_screen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_splash_screen.png; sourceTree = "<group>"; }; + 24A200800F90D1DD003BB5A7 /* class_c_splash_screen_view-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_splash_screen_view-members.html"; sourceTree = "<group>"; }; + 24A200810F90D1DD003BB5A7 /* class_c_splash_screen_view.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_splash_screen_view.html; sourceTree = "<group>"; }; + 24A200820F90D1DD003BB5A7 /* class_c_splash_screen_view.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_splash_screen_view.png; sourceTree = "<group>"; }; + 24A200830F90D1DD003BB5A7 /* class_c_tab_button-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_tab_button-members.html"; sourceTree = "<group>"; }; + 24A200840F90D1DD003BB5A7 /* class_c_tab_button.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_tab_button.html; sourceTree = "<group>"; }; + 24A200850F90D1DD003BB5A7 /* class_c_tab_button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_tab_button.png; sourceTree = "<group>"; }; + 24A200860F90D1DD003BB5A7 /* class_c_tab_child_view-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_tab_child_view-members.html"; sourceTree = "<group>"; }; + 24A200870F90D1DD003BB5A7 /* class_c_tab_child_view.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_tab_child_view.html; sourceTree = "<group>"; }; + 24A200880F90D1DD003BB5A7 /* class_c_tab_child_view.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_tab_child_view.png; sourceTree = "<group>"; }; + 24A200890F90D1DD003BB5A7 /* class_c_tab_view-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_tab_view-members.html"; sourceTree = "<group>"; }; + 24A2008A0F90D1DD003BB5A7 /* class_c_tab_view.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_tab_view.html; sourceTree = "<group>"; }; + 24A2008B0F90D1DD003BB5A7 /* class_c_tab_view.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_tab_view.png; sourceTree = "<group>"; }; + 24A2008C0F90D1DD003BB5A7 /* class_c_text_edit-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_text_edit-members.html"; sourceTree = "<group>"; }; + 24A2008D0F90D1DD003BB5A7 /* class_c_text_edit.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_text_edit.html; sourceTree = "<group>"; }; + 24A2008E0F90D1DD003BB5A7 /* class_c_text_edit.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_text_edit.png; sourceTree = "<group>"; }; + 24A2008F0F90D1DD003BB5A7 /* class_c_text_label-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_text_label-members.html"; sourceTree = "<group>"; }; + 24A200900F90D1DD003BB5A7 /* class_c_text_label.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_text_label.html; sourceTree = "<group>"; }; + 24A200910F90D1DD003BB5A7 /* class_c_text_label.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_text_label.png; sourceTree = "<group>"; }; + 24A200920F90D1DD003BB5A7 /* class_c_vertical_slider-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_vertical_slider-members.html"; sourceTree = "<group>"; }; + 24A200930F90D1DD003BB5A7 /* class_c_vertical_slider.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_vertical_slider.html; sourceTree = "<group>"; }; + 24A200940F90D1DD003BB5A7 /* class_c_vertical_slider.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_vertical_slider.png; sourceTree = "<group>"; }; + 24A200950F90D1DD003BB5A7 /* class_c_vertical_switch-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_vertical_switch-members.html"; sourceTree = "<group>"; }; + 24A200960F90D1DD003BB5A7 /* class_c_vertical_switch.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_vertical_switch.html; sourceTree = "<group>"; }; + 24A200970F90D1DD003BB5A7 /* class_c_vertical_switch.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_vertical_switch.png; sourceTree = "<group>"; }; + 24A200980F90D1DD003BB5A7 /* class_c_view-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_view-members.html"; sourceTree = "<group>"; }; + 24A200990F90D1DD003BB5A7 /* class_c_view.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_view.html; sourceTree = "<group>"; }; + 24A2009A0F90D1DD003BB5A7 /* class_c_view.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_view.png; sourceTree = "<group>"; }; + 24A2009B0F90D1DD003BB5A7 /* class_c_view_container-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_view_container-members.html"; sourceTree = "<group>"; }; + 24A2009C0F90D1DD003BB5A7 /* class_c_view_container.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_view_container.html; sourceTree = "<group>"; }; + 24A2009D0F90D1DD003BB5A7 /* class_c_view_container.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_view_container.png; sourceTree = "<group>"; }; + 24A2009E0F90D1DD003BB5A7 /* class_c_vu_meter-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_vu_meter-members.html"; sourceTree = "<group>"; }; + 24A2009F0F90D1DD003BB5A7 /* class_c_vu_meter.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_vu_meter.html; sourceTree = "<group>"; }; + 24A200A00F90D1DD003BB5A7 /* class_c_vu_meter.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_vu_meter.png; sourceTree = "<group>"; }; + 24A200A10F90D1DD003BB5A7 /* class_i_scrollbar_drawer-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_i_scrollbar_drawer-members.html"; sourceTree = "<group>"; }; + 24A200A20F90D1DD003BB5A7 /* class_i_scrollbar_drawer.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_i_scrollbar_drawer.html; sourceTree = "<group>"; }; + 24A200A30F90D1DD003BB5A7 /* class_plugin_g_u_i_editor-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_plugin_g_u_i_editor-members.html"; sourceTree = "<group>"; }; + 24A200A40F90D1DD003BB5A7 /* class_plugin_g_u_i_editor.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_plugin_g_u_i_editor.html; sourceTree = "<group>"; }; + 24A200A50F90D1DD003BB5A7 /* cscrollview_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = cscrollview_8cpp.html; sourceTree = "<group>"; }; + 24A200A60F90D1DD003BB5A7 /* cscrollview_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = cscrollview_8h.html; sourceTree = "<group>"; }; + 24A200A70F90D1DD003BB5A7 /* ctabview_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = ctabview_8cpp.html; sourceTree = "<group>"; }; + 24A200A80F90D1DD003BB5A7 /* ctabview_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = ctabview_8h.html; sourceTree = "<group>"; }; + 24A200A90F90D1DD003BB5A7 /* deprecated.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = deprecated.html; sourceTree = "<group>"; }; + 24A200AA0F90D1DD003BB5A7 /* doc_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = doc_8h.html; sourceTree = "<group>"; }; + 24A200AB0F90D1DD003BB5A7 /* doxygen.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = doxygen.css; sourceTree = "<group>"; }; + 24A200AC0F90D1DD003BB5A7 /* doxygen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = doxygen.png; sourceTree = "<group>"; }; + 24A200AD0F90D1DD003BB5A7 /* files.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = files.html; sourceTree = "<group>"; }; + 24A200AE0F90D1DD003BB5A7 /* ftv2blank.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2blank.png; sourceTree = "<group>"; }; + 24A200AF0F90D1DD003BB5A7 /* ftv2doc.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2doc.png; sourceTree = "<group>"; }; + 24A200B00F90D1DD003BB5A7 /* ftv2folderclosed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2folderclosed.png; sourceTree = "<group>"; }; + 24A200B10F90D1DE003BB5A7 /* ftv2folderopen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2folderopen.png; sourceTree = "<group>"; }; + 24A200B20F90D1DE003BB5A7 /* ftv2lastnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2lastnode.png; sourceTree = "<group>"; }; + 24A200B30F90D1DE003BB5A7 /* ftv2link.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2link.png; sourceTree = "<group>"; }; + 24A200B40F90D1DE003BB5A7 /* ftv2mlastnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2mlastnode.png; sourceTree = "<group>"; }; + 24A200B50F90D1DE003BB5A7 /* ftv2mnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2mnode.png; sourceTree = "<group>"; }; + 24A200B60F90D1DE003BB5A7 /* ftv2node.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2node.png; sourceTree = "<group>"; }; + 24A200B70F90D1DE003BB5A7 /* ftv2plastnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2plastnode.png; sourceTree = "<group>"; }; + 24A200B80F90D1DE003BB5A7 /* ftv2pnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2pnode.png; sourceTree = "<group>"; }; + 24A200B90F90D1DE003BB5A7 /* ftv2vertline.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2vertline.png; sourceTree = "<group>"; }; + 24A200BA0F90D1DE003BB5A7 /* functions.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions.html; sourceTree = "<group>"; }; + 24A200BB0F90D1DE003BB5A7 /* functions_0x62.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x62.html; sourceTree = "<group>"; }; + 24A200BC0F90D1DE003BB5A7 /* functions_0x63.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x63.html; sourceTree = "<group>"; }; + 24A200BD0F90D1DE003BB5A7 /* functions_0x64.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x64.html; sourceTree = "<group>"; }; + 24A200BE0F90D1DE003BB5A7 /* functions_0x65.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x65.html; sourceTree = "<group>"; }; + 24A200BF0F90D1DE003BB5A7 /* functions_0x66.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x66.html; sourceTree = "<group>"; }; + 24A200C00F90D1DE003BB5A7 /* functions_0x67.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x67.html; sourceTree = "<group>"; }; + 24A200C10F90D1DE003BB5A7 /* functions_0x68.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x68.html; sourceTree = "<group>"; }; + 24A200C20F90D1DE003BB5A7 /* functions_0x69.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x69.html; sourceTree = "<group>"; }; + 24A200C30F90D1DE003BB5A7 /* functions_0x6b.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x6b.html; sourceTree = "<group>"; }; + 24A200C40F90D1DE003BB5A7 /* functions_0x6c.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x6c.html; sourceTree = "<group>"; }; + 24A200C50F90D1DE003BB5A7 /* functions_0x6d.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x6d.html; sourceTree = "<group>"; }; + 24A200C60F90D1DE003BB5A7 /* functions_0x6e.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x6e.html; sourceTree = "<group>"; }; + 24A200C70F90D1DE003BB5A7 /* functions_0x6f.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x6f.html; sourceTree = "<group>"; }; + 24A200C80F90D1DE003BB5A7 /* functions_0x70.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x70.html; sourceTree = "<group>"; }; + 24A200C90F90D1DE003BB5A7 /* functions_0x72.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x72.html; sourceTree = "<group>"; }; + 24A200CA0F90D1DE003BB5A7 /* functions_0x73.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x73.html; sourceTree = "<group>"; }; + 24A200CB0F90D1DE003BB5A7 /* functions_0x74.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x74.html; sourceTree = "<group>"; }; + 24A200CC0F90D1DE003BB5A7 /* functions_0x75.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x75.html; sourceTree = "<group>"; }; + 24A200CD0F90D1DE003BB5A7 /* functions_0x76.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x76.html; sourceTree = "<group>"; }; + 24A200CE0F90D1DE003BB5A7 /* functions_0x77.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x77.html; sourceTree = "<group>"; }; + 24A200CF0F90D1DE003BB5A7 /* functions_0x78.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x78.html; sourceTree = "<group>"; }; + 24A200D00F90D1DE003BB5A7 /* functions_0x79.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x79.html; sourceTree = "<group>"; }; + 24A200D10F90D1DE003BB5A7 /* functions_0x7a.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x7a.html; sourceTree = "<group>"; }; + 24A200D20F90D1DE003BB5A7 /* functions_0x7e.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x7e.html; sourceTree = "<group>"; }; + 24A200D30F90D1DE003BB5A7 /* functions_eval.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_eval.html; sourceTree = "<group>"; }; + 24A200D40F90D1DE003BB5A7 /* functions_func.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func.html; sourceTree = "<group>"; }; + 24A200D50F90D1DE003BB5A7 /* functions_func_0x62.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x62.html; sourceTree = "<group>"; }; + 24A200D60F90D1DE003BB5A7 /* functions_func_0x63.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x63.html; sourceTree = "<group>"; }; + 24A200D70F90D1DE003BB5A7 /* functions_func_0x64.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x64.html; sourceTree = "<group>"; }; + 24A200D80F90D1DE003BB5A7 /* functions_func_0x65.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x65.html; sourceTree = "<group>"; }; + 24A200D90F90D1DE003BB5A7 /* functions_func_0x66.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x66.html; sourceTree = "<group>"; }; + 24A200DA0F90D1DE003BB5A7 /* functions_func_0x67.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x67.html; sourceTree = "<group>"; }; + 24A200DB0F90D1DE003BB5A7 /* functions_func_0x68.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x68.html; sourceTree = "<group>"; }; + 24A200DC0F90D1DE003BB5A7 /* functions_func_0x69.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x69.html; sourceTree = "<group>"; }; + 24A200DD0F90D1DE003BB5A7 /* functions_func_0x6c.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x6c.html; sourceTree = "<group>"; }; + 24A200DE0F90D1DE003BB5A7 /* functions_func_0x6d.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x6d.html; sourceTree = "<group>"; }; + 24A200DF0F90D1DE003BB5A7 /* functions_func_0x6e.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x6e.html; sourceTree = "<group>"; }; + 24A200E00F90D1DE003BB5A7 /* functions_func_0x6f.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x6f.html; sourceTree = "<group>"; }; + 24A200E10F90D1DE003BB5A7 /* functions_func_0x70.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x70.html; sourceTree = "<group>"; }; + 24A200E20F90D1DE003BB5A7 /* functions_func_0x72.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x72.html; sourceTree = "<group>"; }; + 24A200E30F90D1DE003BB5A7 /* functions_func_0x73.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x73.html; sourceTree = "<group>"; }; + 24A200E40F90D1DE003BB5A7 /* functions_func_0x74.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x74.html; sourceTree = "<group>"; }; + 24A200E50F90D1DE003BB5A7 /* functions_func_0x75.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x75.html; sourceTree = "<group>"; }; + 24A200E60F90D1DE003BB5A7 /* functions_func_0x76.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x76.html; sourceTree = "<group>"; }; + 24A200E70F90D1DE003BB5A7 /* functions_func_0x77.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x77.html; sourceTree = "<group>"; }; + 24A200E80F90D1DE003BB5A7 /* functions_func_0x7e.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x7e.html; sourceTree = "<group>"; }; + 24A200E90F90D1DE003BB5A7 /* functions_rela.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_rela.html; sourceTree = "<group>"; }; + 24A200EA0F90D1DE003BB5A7 /* functions_vars.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars.html; sourceTree = "<group>"; }; + 24A200EB0F90D1DE003BB5A7 /* functions_vars_0x62.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x62.html; sourceTree = "<group>"; }; + 24A200EC0F90D1DE003BB5A7 /* functions_vars_0x63.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x63.html; sourceTree = "<group>"; }; + 24A200ED0F90D1DE003BB5A7 /* functions_vars_0x64.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x64.html; sourceTree = "<group>"; }; + 24A200EE0F90D1DE003BB5A7 /* functions_vars_0x65.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x65.html; sourceTree = "<group>"; }; + 24A200EF0F90D1DE003BB5A7 /* functions_vars_0x66.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x66.html; sourceTree = "<group>"; }; + 24A200F00F90D1DE003BB5A7 /* functions_vars_0x67.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x67.html; sourceTree = "<group>"; }; + 24A200F10F90D1DE003BB5A7 /* functions_vars_0x68.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x68.html; sourceTree = "<group>"; }; + 24A200F20F90D1DE003BB5A7 /* functions_vars_0x69.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x69.html; sourceTree = "<group>"; }; + 24A200F30F90D1DE003BB5A7 /* functions_vars_0x6b.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x6b.html; sourceTree = "<group>"; }; + 24A200F40F90D1DE003BB5A7 /* functions_vars_0x6c.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x6c.html; sourceTree = "<group>"; }; + 24A200F50F90D1DE003BB5A7 /* functions_vars_0x6d.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x6d.html; sourceTree = "<group>"; }; + 24A200F60F90D1DE003BB5A7 /* functions_vars_0x6e.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x6e.html; sourceTree = "<group>"; }; + 24A200F70F90D1DE003BB5A7 /* functions_vars_0x6f.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x6f.html; sourceTree = "<group>"; }; + 24A200F80F90D1DE003BB5A7 /* functions_vars_0x70.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x70.html; sourceTree = "<group>"; }; + 24A200F90F90D1DE003BB5A7 /* functions_vars_0x72.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x72.html; sourceTree = "<group>"; }; + 24A200FA0F90D1DE003BB5A7 /* functions_vars_0x73.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x73.html; sourceTree = "<group>"; }; + 24A200FB0F90D1DE003BB5A7 /* functions_vars_0x74.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x74.html; sourceTree = "<group>"; }; + 24A200FC0F90D1DE003BB5A7 /* functions_vars_0x75.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x75.html; sourceTree = "<group>"; }; + 24A200FD0F90D1DE003BB5A7 /* functions_vars_0x76.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x76.html; sourceTree = "<group>"; }; + 24A200FE0F90D1DE003BB5A7 /* functions_vars_0x77.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x77.html; sourceTree = "<group>"; }; + 24A200FF0F90D1DE003BB5A7 /* functions_vars_0x78.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x78.html; sourceTree = "<group>"; }; + 24A201000F90D1DE003BB5A7 /* functions_vars_0x79.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x79.html; sourceTree = "<group>"; }; + 24A201010F90D1DE003BB5A7 /* functions_vars_0x7a.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x7a.html; sourceTree = "<group>"; }; + 24A201020F90D1DE003BB5A7 /* globals.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals.html; sourceTree = "<group>"; }; + 24A201030F90D1DE003BB5A7 /* globals_0x61.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x61.html; sourceTree = "<group>"; }; + 24A201040F90D1DE003BB5A7 /* globals_0x62.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x62.html; sourceTree = "<group>"; }; + 24A201050F90D1DE003BB5A7 /* globals_0x63.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x63.html; sourceTree = "<group>"; }; + 24A201060F90D1DE003BB5A7 /* globals_0x65.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x65.html; sourceTree = "<group>"; }; + 24A201070F90D1DE003BB5A7 /* globals_0x66.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x66.html; sourceTree = "<group>"; }; + 24A201080F90D1DE003BB5A7 /* globals_0x67.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x67.html; sourceTree = "<group>"; }; + 24A201090F90D1DE003BB5A7 /* globals_0x6b.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x6b.html; sourceTree = "<group>"; }; + 24A2010A0F90D1DE003BB5A7 /* globals_0x6d.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x6d.html; sourceTree = "<group>"; }; + 24A2010B0F90D1DE003BB5A7 /* globals_0x6e.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x6e.html; sourceTree = "<group>"; }; + 24A2010C0F90D1DE003BB5A7 /* globals_0x6f.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x6f.html; sourceTree = "<group>"; }; + 24A2010D0F90D1DE003BB5A7 /* globals_0x71.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x71.html; sourceTree = "<group>"; }; + 24A2010E0F90D1DE003BB5A7 /* globals_0x72.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x72.html; sourceTree = "<group>"; }; + 24A2010F0F90D1DE003BB5A7 /* globals_0x73.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x73.html; sourceTree = "<group>"; }; + 24A201100F90D1DE003BB5A7 /* globals_0x74.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x74.html; sourceTree = "<group>"; }; + 24A201110F90D1DE003BB5A7 /* globals_0x75.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x75.html; sourceTree = "<group>"; }; + 24A201120F90D1DE003BB5A7 /* globals_0x76.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x76.html; sourceTree = "<group>"; }; + 24A201130F90D1DE003BB5A7 /* globals_0x77.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x77.html; sourceTree = "<group>"; }; + 24A201140F90D1DE003BB5A7 /* globals_defs.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_defs.html; sourceTree = "<group>"; }; + 24A201150F90D1DE003BB5A7 /* globals_enum.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_enum.html; sourceTree = "<group>"; }; + 24A201160F90D1DE003BB5A7 /* globals_eval.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_eval.html; sourceTree = "<group>"; }; + 24A201170F90D1DE003BB5A7 /* globals_type.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_type.html; sourceTree = "<group>"; }; + 24A201180F90D1DE003BB5A7 /* globals_vars.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_vars.html; sourceTree = "<group>"; }; + 24A201190F90D1DE003BB5A7 /* hierarchy.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = hierarchy.html; sourceTree = "<group>"; }; + 24A2011A0F90D1DE003BB5A7 /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = index.html; sourceTree = "<group>"; }; + 24A2011B0F90D1DE003BB5A7 /* intro.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = intro.html; sourceTree = "<group>"; }; + 24A2011C0F90D1DE003BB5A7 /* license.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = license.html; sourceTree = "<group>"; }; + 24A2011D0F90D1DE003BB5A7 /* maceditor.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = maceditor.html; sourceTree = "<group>"; }; + 24A2011E0F90D1DE003BB5A7 /* main.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = main.html; sourceTree = "<group>"; }; + 24A2011F0F90D1DE003BB5A7 /* others.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = others.html; sourceTree = "<group>"; }; + 24A201200F90D1DE003BB5A7 /* pages.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = pages.html; sourceTree = "<group>"; }; + 24A201210F90D1DE003BB5A7 /* plugguieditor_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = plugguieditor_8cpp.html; sourceTree = "<group>"; }; + 24A201220F90D1DE003BB5A7 /* plugguieditor_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = plugguieditor_8h.html; sourceTree = "<group>"; }; + 24A201230F90D1DE003BB5A7 /* sequences.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = sequences.html; sourceTree = "<group>"; }; + 24A201240F90D1DE003BB5A7 /* struct_c_color-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "struct_c_color-members.html"; sourceTree = "<group>"; }; + 24A201250F90D1DE003BB5A7 /* struct_c_color.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = struct_c_color.html; sourceTree = "<group>"; }; + 24A201260F90D1DE003BB5A7 /* struct_c_point-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "struct_c_point-members.html"; sourceTree = "<group>"; }; + 24A201270F90D1DE003BB5A7 /* struct_c_point.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = struct_c_point.html; sourceTree = "<group>"; }; + 24A201280F90D1DE003BB5A7 /* struct_c_rect-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "struct_c_rect-members.html"; sourceTree = "<group>"; }; + 24A201290F90D1DE003BB5A7 /* struct_c_rect.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = struct_c_rect.html; sourceTree = "<group>"; }; + 24A2012A0F90D1DE003BB5A7 /* struct_e_rect-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "struct_e_rect-members.html"; sourceTree = "<group>"; }; + 24A2012B0F90D1DE003BB5A7 /* struct_e_rect.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = struct_e_rect.html; sourceTree = "<group>"; }; + 24A2012C0F90D1DE003BB5A7 /* struct_vst_file_select-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "struct_vst_file_select-members.html"; sourceTree = "<group>"; }; + 24A2012D0F90D1DE003BB5A7 /* struct_vst_file_select.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = struct_vst_file_select.html; sourceTree = "<group>"; }; + 24A2012E0F90D1DE003BB5A7 /* struct_vst_file_type-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "struct_vst_file_type-members.html"; sourceTree = "<group>"; }; + 24A2012F0F90D1DE003BB5A7 /* struct_vst_file_type.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = struct_vst_file_type.html; sourceTree = "<group>"; }; + 24A201300F90D1DE003BB5A7 /* struct_vst_key_code-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "struct_vst_key_code-members.html"; sourceTree = "<group>"; }; + 24A201310F90D1DE003BB5A7 /* struct_vst_key_code.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = struct_vst_key_code.html; sourceTree = "<group>"; }; + 24A201320F90D1DE003BB5A7 /* tab_b.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = tab_b.gif; sourceTree = "<group>"; }; + 24A201330F90D1DE003BB5A7 /* tab_l.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = tab_l.gif; sourceTree = "<group>"; }; + 24A201340F90D1DE003BB5A7 /* tab_r.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = tab_r.gif; sourceTree = "<group>"; }; + 24A201350F90D1DE003BB5A7 /* tabs.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = tabs.css; sourceTree = "<group>"; }; + 24A201360F90D1DE003BB5A7 /* thanks.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = thanks.html; sourceTree = "<group>"; }; + 24A201370F90D1DE003BB5A7 /* tree.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = tree.html; sourceTree = "<group>"; }; + 24A201380F90D1DE003BB5A7 /* vstcontrols_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstcontrols_8cpp.html; sourceTree = "<group>"; }; + 24A201390F90D1DE003BB5A7 /* vstcontrols_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstcontrols_8h.html; sourceTree = "<group>"; }; + 24A2013A0F90D1DE003BB5A7 /* vstgui_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstgui_8cpp.html; sourceTree = "<group>"; }; + 24A2013B0F90D1DE003BB5A7 /* vstgui_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstgui_8h.html; sourceTree = "<group>"; }; + 24A2013C0F90D1DE003BB5A7 /* vstkeycode_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstkeycode_8h.html; sourceTree = "<group>"; }; + 24A2013D0F90D1DE003BB5A7 /* vstoffline.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstoffline.html; sourceTree = "<group>"; }; + 24A2013E0F90D1DE003BB5A7 /* vstparamstruct.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstparamstruct.html; sourceTree = "<group>"; }; + 24A2013F0F90D1DE003BB5A7 /* vstplugscarbon_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstplugscarbon_8h.html; sourceTree = "<group>"; }; + 24A201400F90D1DE003BB5A7 /* vstplugsmac_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstplugsmac_8h.html; sourceTree = "<group>"; }; + 24A201410F90D1DE003BB5A7 /* vstplugsmacho_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstplugsmacho_8h.html; sourceTree = "<group>"; }; + 24A201420F90D1DE003BB5A7 /* vstplugsquartz_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstplugsquartz_8h.html; sourceTree = "<group>"; }; + 24A201430F90D1DE003BB5A7 /* whatsnew.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = whatsnew.html; sourceTree = "<group>"; }; + 24A201440F90D1DE003BB5A7 /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = index.html; sourceTree = "<group>"; }; + 24A201450F90D1DE003BB5A7 /* Migrating from 2.3.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = "Migrating from 2.3.rtf"; sourceTree = "<group>"; }; + 24A201460F90D1DE003BB5A7 /* plugguieditor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = plugguieditor.cpp; sourceTree = "<group>"; }; + 24A201470F90D1DE003BB5A7 /* plugguieditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = plugguieditor.h; sourceTree = "<group>"; }; + 24A201480F90D1DE003BB5A7 /* vstcontrols.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vstcontrols.cpp; sourceTree = "<group>"; }; + 24A201490F90D1DE003BB5A7 /* vstcontrols.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstcontrols.h; sourceTree = "<group>"; }; + 24A2014A0F90D1DE003BB5A7 /* vstgui.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vstgui.cpp; sourceTree = "<group>"; }; + 24A2014B0F90D1DE003BB5A7 /* vstgui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstgui.h; sourceTree = "<group>"; }; + 24A2014C0F90D1DE003BB5A7 /* vstkeycode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstkeycode.h; sourceTree = "<group>"; }; + 24A2014D0F90D1DE003BB5A7 /* vstplugscarbon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstplugscarbon.h; sourceTree = "<group>"; }; + 24A2014E0F90D1DE003BB5A7 /* vstplugsmac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstplugsmac.h; sourceTree = "<group>"; }; + 24A2014F0F90D1DE003BB5A7 /* vstplugsmacho.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstplugsmacho.h; sourceTree = "<group>"; }; + 24A201500F90D1DE003BB5A7 /* vstplugsquartz.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstplugsquartz.h; sourceTree = "<group>"; }; + 24A2FEBD0F90D1DC003BB5A7 /* Thumbs.db */ = {isa = PBXFileReference; lastKnownFileType = file; path = Thumbs.db; sourceTree = "<group>"; }; + 24A2FEBE0F90D1DC003BB5A7 /* VST_Logo_Usage_Guideline.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = VST_Logo_Usage_Guideline.pdf; sourceTree = "<group>"; }; + 24A2FEBF0F90D1DC003BB5A7 /* VSTLogoAlpha.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = VSTLogoAlpha.png; sourceTree = "<group>"; }; + 24A2FEC00F90D1DC003BB5A7 /* VSTLogoBlack.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = VSTLogoBlack.jpg; sourceTree = "<group>"; }; + 24A2FEC10F90D1DC003BB5A7 /* VSTLogoWhite.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = VSTLogoWhite.jpg; sourceTree = "<group>"; }; + 24A2FEC60F90D1DC003BB5A7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; + 24A2FEC80F90D1DC003BB5A7 /* VSTMonitor */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; path = VSTMonitor; sourceTree = "<group>"; }; + 24A2FEC90F90D1DC003BB5A7 /* PkgInfo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PkgInfo; sourceTree = "<group>"; }; + 24A2FECB0F90D1DC003BB5A7 /* bmp50000.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50000.bmp; sourceTree = "<group>"; }; + 24A2FECC0F90D1DC003BB5A7 /* bmp50001.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50001.bmp; sourceTree = "<group>"; }; + 24A2FECD0F90D1DC003BB5A7 /* bmp50002.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50002.bmp; sourceTree = "<group>"; }; + 24A2FECE0F90D1DC003BB5A7 /* bmp50003.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50003.bmp; sourceTree = "<group>"; }; + 24A2FECF0F90D1DC003BB5A7 /* bmp50004.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50004.bmp; sourceTree = "<group>"; }; + 24A2FED00F90D1DC003BB5A7 /* bmp50005.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50005.bmp; sourceTree = "<group>"; }; + 24A2FED10F90D1DC003BB5A7 /* bmp50006.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50006.bmp; sourceTree = "<group>"; }; + 24A2FED20F90D1DC003BB5A7 /* bmp50007.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50007.bmp; sourceTree = "<group>"; }; + 24A2FED30F90D1DC003BB5A7 /* bmp50008.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50008.bmp; sourceTree = "<group>"; }; + 24A2FED40F90D1DC003BB5A7 /* VSTParamTool.app */ = {isa = PBXFileReference; lastKnownFileType = wrapper.application; path = VSTParamTool.app; sourceTree = "<group>"; }; + 24A2FED60F90D1DC003BB5A7 /* vstmonitor.dll */ = {isa = PBXFileReference; lastKnownFileType = file; path = vstmonitor.dll; sourceTree = "<group>"; }; + 24A2FED70F90D1DC003BB5A7 /* vstparamtool.exe */ = {isa = PBXFileReference; lastKnownFileType = file; path = vstparamtool.exe; sourceTree = "<group>"; }; + 24A2FEDA0F90D1DC003BB5A7 /* folder.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = folder.gif; sourceTree = "<group>"; }; + 24A2FEDB0F90D1DC003BB5A7 /* mac.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = mac.gif; sourceTree = "<group>"; }; + 24A2FEDC0F90D1DC003BB5A7 /* vstpluglogo_small.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = vstpluglogo_small.jpg; sourceTree = "<group>"; }; + 24A2FEDD0F90D1DC003BB5A7 /* win.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = win.gif; sourceTree = "<group>"; }; + 24A2FEDF0F90D1DC003BB5A7 /* aeffect_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = aeffect_8h.html; sourceTree = "<group>"; }; + 24A2FEE00F90D1DC003BB5A7 /* aeffectx_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = aeffectx_8h.html; sourceTree = "<group>"; }; + 24A2FEE10F90D1DC003BB5A7 /* aeffeditor_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = aeffeditor_8h.html; sourceTree = "<group>"; }; + 24A2FEE20F90D1DC003BB5A7 /* annotated.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = annotated.html; sourceTree = "<group>"; }; + 24A2FEE30F90D1DC003BB5A7 /* audioeffect_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = audioeffect_8cpp.html; sourceTree = "<group>"; }; + 24A2FEE40F90D1DC003BB5A7 /* audioeffect_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = audioeffect_8h.html; sourceTree = "<group>"; }; + 24A2FEE50F90D1DC003BB5A7 /* audioeffectx_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = audioeffectx_8cpp.html; sourceTree = "<group>"; }; + 24A2FEE60F90D1DC003BB5A7 /* audioeffectx_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = audioeffectx_8h.html; sourceTree = "<group>"; }; + 24A2FEE70F90D1DC003BB5A7 /* Blocksizechange.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = Blocksizechange.gif; sourceTree = "<group>"; }; + 24A2FEE80F90D1DC003BB5A7 /* class_a_eff_editor-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "class_a_eff_editor-members.html"; sourceTree = "<group>"; }; + 24A2FEE90F90D1DC003BB5A7 /* class_a_eff_editor.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = class_a_eff_editor.html; sourceTree = "<group>"; }; + 24A2FEEA0F90D1DC003BB5A7 /* class_audio_effect-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "class_audio_effect-members.html"; sourceTree = "<group>"; }; + 24A2FEEB0F90D1DC003BB5A7 /* class_audio_effect.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = class_audio_effect.html; sourceTree = "<group>"; }; + 24A2FEEC0F90D1DC003BB5A7 /* class_audio_effect.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_audio_effect.png; sourceTree = "<group>"; }; + 24A2FEED0F90D1DC003BB5A7 /* class_audio_effect_x-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "class_audio_effect_x-members.html"; sourceTree = "<group>"; }; + 24A2FEEE0F90D1DC003BB5A7 /* class_audio_effect_x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = class_audio_effect_x.html; sourceTree = "<group>"; }; + 24A2FEEF0F90D1DC003BB5A7 /* class_audio_effect_x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_audio_effect_x.png; sourceTree = "<group>"; }; + 24A2FEF00F90D1DC003BB5A7 /* ControlChanged.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = ControlChanged.gif; sourceTree = "<group>"; }; + 24A2FEF10F90D1DC003BB5A7 /* deprecated.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = deprecated.html; sourceTree = "<group>"; }; + 24A2FEF20F90D1DC003BB5A7 /* dir_2d3252dd12c84c66c1d25b26bb45a1f5.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = dir_2d3252dd12c84c66c1d25b26bb45a1f5.html; sourceTree = "<group>"; }; + 24A2FEF30F90D1DC003BB5A7 /* dir_77c628dfee72e555f82d5ef53b733f38.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = dir_77c628dfee72e555f82d5ef53b733f38.html; sourceTree = "<group>"; }; + 24A2FEF40F90D1DC003BB5A7 /* dir_f81105d3b854bea570aaf3bae5cb64c1.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = dir_f81105d3b854bea570aaf3bae5cb64c1.html; sourceTree = "<group>"; }; + 24A2FEF50F90D1DC003BB5A7 /* dir_fa0454ab79b4262333bf837ea3d765e9.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = dir_fa0454ab79b4262333bf837ea3d765e9.html; sourceTree = "<group>"; }; + 24A2FEF60F90D1DC003BB5A7 /* dirs.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = dirs.html; sourceTree = "<group>"; }; + 24A2FEF70F90D1DC003BB5A7 /* doc_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = doc_8h.html; sourceTree = "<group>"; }; + 24A2FEF80F90D1DC003BB5A7 /* doxygen.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = doxygen.css; sourceTree = "<group>"; }; + 24A2FEF90F90D1DC003BB5A7 /* doxygen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = doxygen.png; sourceTree = "<group>"; }; + 24A2FEFA0F90D1DC003BB5A7 /* files.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = files.html; sourceTree = "<group>"; }; + 24A2FEFB0F90D1DC003BB5A7 /* ftv2blank.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2blank.png; sourceTree = "<group>"; }; + 24A2FEFC0F90D1DC003BB5A7 /* ftv2doc.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2doc.png; sourceTree = "<group>"; }; + 24A2FEFD0F90D1DC003BB5A7 /* ftv2folderclosed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2folderclosed.png; sourceTree = "<group>"; }; + 24A2FEFE0F90D1DC003BB5A7 /* ftv2folderopen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2folderopen.png; sourceTree = "<group>"; }; + 24A2FEFF0F90D1DC003BB5A7 /* ftv2lastnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2lastnode.png; sourceTree = "<group>"; }; + 24A2FF000F90D1DC003BB5A7 /* ftv2link.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2link.png; sourceTree = "<group>"; }; + 24A2FF010F90D1DC003BB5A7 /* ftv2mlastnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2mlastnode.png; sourceTree = "<group>"; }; + 24A2FF020F90D1DC003BB5A7 /* ftv2mnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2mnode.png; sourceTree = "<group>"; }; + 24A2FF030F90D1DC003BB5A7 /* ftv2node.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2node.png; sourceTree = "<group>"; }; + 24A2FF040F90D1DC003BB5A7 /* ftv2plastnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2plastnode.png; sourceTree = "<group>"; }; + 24A2FF050F90D1DC003BB5A7 /* ftv2pnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2pnode.png; sourceTree = "<group>"; }; + 24A2FF060F90D1DC003BB5A7 /* ftv2vertline.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2vertline.png; sourceTree = "<group>"; }; + 24A2FF070F90D1DC003BB5A7 /* functions.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions.html; sourceTree = "<group>"; }; + 24A2FF080F90D1DC003BB5A7 /* functions_0x62.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x62.html; sourceTree = "<group>"; }; + 24A2FF090F90D1DC003BB5A7 /* functions_0x63.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x63.html; sourceTree = "<group>"; }; + 24A2FF0A0F90D1DC003BB5A7 /* functions_0x64.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x64.html; sourceTree = "<group>"; }; + 24A2FF0B0F90D1DC003BB5A7 /* functions_0x65.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x65.html; sourceTree = "<group>"; }; + 24A2FF0C0F90D1DC003BB5A7 /* functions_0x66.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x66.html; sourceTree = "<group>"; }; + 24A2FF0D0F90D1DC003BB5A7 /* functions_0x67.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x67.html; sourceTree = "<group>"; }; + 24A2FF0E0F90D1DC003BB5A7 /* functions_0x68.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x68.html; sourceTree = "<group>"; }; + 24A2FF0F0F90D1DC003BB5A7 /* functions_0x69.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x69.html; sourceTree = "<group>"; }; + 24A2FF100F90D1DC003BB5A7 /* functions_0x6b.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x6b.html; sourceTree = "<group>"; }; + 24A2FF110F90D1DC003BB5A7 /* functions_0x6c.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x6c.html; sourceTree = "<group>"; }; + 24A2FF120F90D1DC003BB5A7 /* functions_0x6d.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x6d.html; sourceTree = "<group>"; }; + 24A2FF130F90D1DC003BB5A7 /* functions_0x6e.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x6e.html; sourceTree = "<group>"; }; + 24A2FF140F90D1DC003BB5A7 /* functions_0x6f.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x6f.html; sourceTree = "<group>"; }; + 24A2FF150F90D1DC003BB5A7 /* functions_0x70.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x70.html; sourceTree = "<group>"; }; + 24A2FF160F90D1DC003BB5A7 /* functions_0x72.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x72.html; sourceTree = "<group>"; }; + 24A2FF170F90D1DC003BB5A7 /* functions_0x73.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x73.html; sourceTree = "<group>"; }; + 24A2FF180F90D1DC003BB5A7 /* functions_0x74.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x74.html; sourceTree = "<group>"; }; + 24A2FF190F90D1DC003BB5A7 /* functions_0x75.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x75.html; sourceTree = "<group>"; }; + 24A2FF1A0F90D1DC003BB5A7 /* functions_0x76.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x76.html; sourceTree = "<group>"; }; + 24A2FF1B0F90D1DC003BB5A7 /* functions_0x77.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x77.html; sourceTree = "<group>"; }; + 24A2FF1C0F90D1DC003BB5A7 /* functions_0x78.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x78.html; sourceTree = "<group>"; }; + 24A2FF1D0F90D1DC003BB5A7 /* functions_0x79.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x79.html; sourceTree = "<group>"; }; + 24A2FF1E0F90D1DC003BB5A7 /* functions_0x7e.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x7e.html; sourceTree = "<group>"; }; + 24A2FF1F0F90D1DC003BB5A7 /* functions_func.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_func.html; sourceTree = "<group>"; }; + 24A2FF200F90D1DC003BB5A7 /* functions_vars.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_vars.html; sourceTree = "<group>"; }; + 24A2FF210F90D1DC003BB5A7 /* globals.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals.html; sourceTree = "<group>"; }; + 24A2FF220F90D1DC003BB5A7 /* globals_0x62.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x62.html; sourceTree = "<group>"; }; + 24A2FF230F90D1DC003BB5A7 /* globals_0x63.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x63.html; sourceTree = "<group>"; }; + 24A2FF240F90D1DC003BB5A7 /* globals_0x64.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x64.html; sourceTree = "<group>"; }; + 24A2FF250F90D1DC003BB5A7 /* globals_0x65.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x65.html; sourceTree = "<group>"; }; + 24A2FF260F90D1DC003BB5A7 /* globals_0x66.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x66.html; sourceTree = "<group>"; }; + 24A2FF270F90D1DC003BB5A7 /* globals_0x6b.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x6b.html; sourceTree = "<group>"; }; + 24A2FF280F90D1DC003BB5A7 /* globals_0x6d.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x6d.html; sourceTree = "<group>"; }; + 24A2FF290F90D1DC003BB5A7 /* globals_0x74.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x74.html; sourceTree = "<group>"; }; + 24A2FF2A0F90D1DC003BB5A7 /* globals_0x76.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x76.html; sourceTree = "<group>"; }; + 24A2FF2B0F90D1DC003BB5A7 /* globals_defs.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_defs.html; sourceTree = "<group>"; }; + 24A2FF2C0F90D1DC003BB5A7 /* globals_enum.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_enum.html; sourceTree = "<group>"; }; + 24A2FF2D0F90D1DC003BB5A7 /* globals_eval.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_eval.html; sourceTree = "<group>"; }; + 24A2FF2E0F90D1DC003BB5A7 /* globals_eval_0x65.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_eval_0x65.html; sourceTree = "<group>"; }; + 24A2FF2F0F90D1DC003BB5A7 /* globals_eval_0x6b.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_eval_0x6b.html; sourceTree = "<group>"; }; + 24A2FF300F90D1DC003BB5A7 /* globals_eval_0x6d.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_eval_0x6d.html; sourceTree = "<group>"; }; + 24A2FF310F90D1DC003BB5A7 /* globals_eval_0x76.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_eval_0x76.html; sourceTree = "<group>"; }; + 24A2FF320F90D1DC003BB5A7 /* globals_func.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_func.html; sourceTree = "<group>"; }; + 24A2FF330F90D1DC003BB5A7 /* globals_type.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_type.html; sourceTree = "<group>"; }; + 24A2FF340F90D1DC003BB5A7 /* globals_vars.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_vars.html; sourceTree = "<group>"; }; + 24A2FF350F90D1DC003BB5A7 /* hierarchy.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = hierarchy.html; sourceTree = "<group>"; }; + 24A2FF360F90D1DC003BB5A7 /* history.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = history.html; sourceTree = "<group>"; }; + 24A2FF370F90D1DC003BB5A7 /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index.html; sourceTree = "<group>"; }; + 24A2FF380F90D1DC003BB5A7 /* Initialisation.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = Initialisation.gif; sourceTree = "<group>"; }; + 24A2FF390F90D1DC003BB5A7 /* intro.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = intro.html; sourceTree = "<group>"; }; + 24A2FF3A0F90D1DC003BB5A7 /* IOchange.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = IOchange.gif; sourceTree = "<group>"; }; + 24A2FF3B0F90D1DC003BB5A7 /* license.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = license.html; sourceTree = "<group>"; }; + 24A2FF3C0F90D1DC003BB5A7 /* maceditor.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = maceditor.html; sourceTree = "<group>"; }; + 24A2FF3D0F90D1DC003BB5A7 /* main.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = main.html; sourceTree = "<group>"; }; + 24A2FF3E0F90D1DC003BB5A7 /* namespace_host_can_dos.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = namespace_host_can_dos.html; sourceTree = "<group>"; }; + 24A2FF3F0F90D1DC003BB5A7 /* namespace_plug_can_dos.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = namespace_plug_can_dos.html; sourceTree = "<group>"; }; + 24A2FF400F90D1DC003BB5A7 /* namespacemembers.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = namespacemembers.html; sourceTree = "<group>"; }; + 24A2FF410F90D1DC003BB5A7 /* namespacemembers_vars.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = namespacemembers_vars.html; sourceTree = "<group>"; }; + 24A2FF420F90D1DC003BB5A7 /* namespaces.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = namespaces.html; sourceTree = "<group>"; }; + 24A2FF430F90D1DC003BB5A7 /* Offlineprocessing.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = Offlineprocessing.gif; sourceTree = "<group>"; }; + 24A2FF440F90D1DC003BB5A7 /* others.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = others.html; sourceTree = "<group>"; }; + 24A2FF450F90D1DC003BB5A7 /* pages.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = pages.html; sourceTree = "<group>"; }; + 24A2FF460F90D1DC003BB5A7 /* Sampleratechange.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = Sampleratechange.gif; sourceTree = "<group>"; }; + 24A2FF470F90D1DC003BB5A7 /* sequences.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = sequences.html; sourceTree = "<group>"; }; + 24A2FF480F90D1DC003BB5A7 /* SpeakerarrangementnegotiationforVSTfx.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = SpeakerarrangementnegotiationforVSTfx.gif; sourceTree = "<group>"; }; + 24A2FF490F90D1DC003BB5A7 /* struct_a_effect-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_a_effect-members.html"; sourceTree = "<group>"; }; + 24A2FF4A0F90D1DC003BB5A7 /* struct_a_effect.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_a_effect.html; sourceTree = "<group>"; }; + 24A2FF4B0F90D1DC003BB5A7 /* struct_e_rect-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_e_rect-members.html"; sourceTree = "<group>"; }; + 24A2FF4C0F90D1DC003BB5A7 /* struct_e_rect.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_e_rect.html; sourceTree = "<group>"; }; + 24A2FF4D0F90D1DC003BB5A7 /* struct_midi_key_name-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_midi_key_name-members.html"; sourceTree = "<group>"; }; + 24A2FF4E0F90D1DC003BB5A7 /* struct_midi_key_name.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_midi_key_name.html; sourceTree = "<group>"; }; + 24A2FF4F0F90D1DC003BB5A7 /* struct_midi_program_category-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_midi_program_category-members.html"; sourceTree = "<group>"; }; + 24A2FF500F90D1DC003BB5A7 /* struct_midi_program_category.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_midi_program_category.html; sourceTree = "<group>"; }; + 24A2FF510F90D1DC003BB5A7 /* struct_midi_program_name-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_midi_program_name-members.html"; sourceTree = "<group>"; }; + 24A2FF520F90D1DC003BB5A7 /* struct_midi_program_name.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_midi_program_name.html; sourceTree = "<group>"; }; + 24A2FF530F90D1DC003BB5A7 /* struct_vst_audio_file-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_audio_file-members.html"; sourceTree = "<group>"; }; + 24A2FF540F90D1DC003BB5A7 /* struct_vst_audio_file.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_audio_file.html; sourceTree = "<group>"; }; + 24A2FF550F90D1DC003BB5A7 /* struct_vst_audio_file_marker-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_audio_file_marker-members.html"; sourceTree = "<group>"; }; + 24A2FF560F90D1DC003BB5A7 /* struct_vst_audio_file_marker.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_audio_file_marker.html; sourceTree = "<group>"; }; + 24A2FF570F90D1DC003BB5A7 /* struct_vst_event-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_event-members.html"; sourceTree = "<group>"; }; + 24A2FF580F90D1DC003BB5A7 /* struct_vst_event.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_event.html; sourceTree = "<group>"; }; + 24A2FF590F90D1DD003BB5A7 /* struct_vst_events-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_events-members.html"; sourceTree = "<group>"; }; + 24A2FF5A0F90D1DD003BB5A7 /* struct_vst_events.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_events.html; sourceTree = "<group>"; }; + 24A2FF5B0F90D1DD003BB5A7 /* struct_vst_file_select-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_file_select-members.html"; sourceTree = "<group>"; }; + 24A2FF5C0F90D1DD003BB5A7 /* struct_vst_file_select.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_file_select.html; sourceTree = "<group>"; }; + 24A2FF5D0F90D1DD003BB5A7 /* struct_vst_file_type-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_file_type-members.html"; sourceTree = "<group>"; }; + 24A2FF5E0F90D1DD003BB5A7 /* struct_vst_file_type.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_file_type.html; sourceTree = "<group>"; }; + 24A2FF5F0F90D1DD003BB5A7 /* struct_vst_key_code-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_key_code-members.html"; sourceTree = "<group>"; }; + 24A2FF600F90D1DD003BB5A7 /* struct_vst_key_code.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_key_code.html; sourceTree = "<group>"; }; + 24A2FF610F90D1DD003BB5A7 /* struct_vst_midi_event-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_midi_event-members.html"; sourceTree = "<group>"; }; + 24A2FF620F90D1DD003BB5A7 /* struct_vst_midi_event.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_midi_event.html; sourceTree = "<group>"; }; + 24A2FF630F90D1DD003BB5A7 /* struct_vst_midi_sysex_event-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_midi_sysex_event-members.html"; sourceTree = "<group>"; }; + 24A2FF640F90D1DD003BB5A7 /* struct_vst_midi_sysex_event.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_midi_sysex_event.html; sourceTree = "<group>"; }; + 24A2FF650F90D1DD003BB5A7 /* struct_vst_offline_task-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_offline_task-members.html"; sourceTree = "<group>"; }; + 24A2FF660F90D1DD003BB5A7 /* struct_vst_offline_task.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_offline_task.html; sourceTree = "<group>"; }; + 24A2FF670F90D1DD003BB5A7 /* struct_vst_parameter_properties-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_parameter_properties-members.html"; sourceTree = "<group>"; }; + 24A2FF680F90D1DD003BB5A7 /* struct_vst_parameter_properties.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_parameter_properties.html; sourceTree = "<group>"; }; + 24A2FF690F90D1DD003BB5A7 /* struct_vst_patch_chunk_info-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_patch_chunk_info-members.html"; sourceTree = "<group>"; }; + 24A2FF6A0F90D1DD003BB5A7 /* struct_vst_patch_chunk_info.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_patch_chunk_info.html; sourceTree = "<group>"; }; + 24A2FF6B0F90D1DD003BB5A7 /* struct_vst_pin_properties-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_pin_properties-members.html"; sourceTree = "<group>"; }; + 24A2FF6C0F90D1DD003BB5A7 /* struct_vst_pin_properties.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_pin_properties.html; sourceTree = "<group>"; }; + 24A2FF6D0F90D1DD003BB5A7 /* struct_vst_speaker_arrangement-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_speaker_arrangement-members.html"; sourceTree = "<group>"; }; + 24A2FF6E0F90D1DD003BB5A7 /* struct_vst_speaker_arrangement.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_speaker_arrangement.html; sourceTree = "<group>"; }; + 24A2FF6F0F90D1DD003BB5A7 /* struct_vst_speaker_properties-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_speaker_properties-members.html"; sourceTree = "<group>"; }; + 24A2FF700F90D1DD003BB5A7 /* struct_vst_speaker_properties.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_speaker_properties.html; sourceTree = "<group>"; }; + 24A2FF710F90D1DD003BB5A7 /* struct_vst_time_info-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_time_info-members.html"; sourceTree = "<group>"; }; + 24A2FF720F90D1DD003BB5A7 /* struct_vst_time_info.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_time_info.html; sourceTree = "<group>"; }; + 24A2FF730F90D1DD003BB5A7 /* struct_vst_variable_io-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_variable_io-members.html"; sourceTree = "<group>"; }; + 24A2FF740F90D1DD003BB5A7 /* struct_vst_variable_io.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_variable_io.html; sourceTree = "<group>"; }; + 24A2FF750F90D1DD003BB5A7 /* struct_vst_window-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_window-members.html"; sourceTree = "<group>"; }; + 24A2FF760F90D1DD003BB5A7 /* struct_vst_window.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_window.html; sourceTree = "<group>"; }; + 24A2FF770F90D1DD003BB5A7 /* structfx_bank-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "structfx_bank-members.html"; sourceTree = "<group>"; }; + 24A2FF780F90D1DD003BB5A7 /* structfx_bank.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = structfx_bank.html; sourceTree = "<group>"; }; + 24A2FF790F90D1DD003BB5A7 /* structfx_program-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "structfx_program-members.html"; sourceTree = "<group>"; }; + 24A2FF7A0F90D1DD003BB5A7 /* structfx_program.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = structfx_program.html; sourceTree = "<group>"; }; + 24A2FF7B0F90D1DD003BB5A7 /* tab_b.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = tab_b.gif; sourceTree = "<group>"; }; + 24A2FF7C0F90D1DD003BB5A7 /* tab_l.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = tab_l.gif; sourceTree = "<group>"; }; + 24A2FF7D0F90D1DD003BB5A7 /* tab_r.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = tab_r.gif; sourceTree = "<group>"; }; + 24A2FF7E0F90D1DD003BB5A7 /* tabs.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = tabs.css; sourceTree = "<group>"; }; + 24A2FF7F0F90D1DD003BB5A7 /* Termination.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = Termination.gif; sourceTree = "<group>"; }; + 24A2FF800F90D1DD003BB5A7 /* thanks.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = thanks.html; sourceTree = "<group>"; }; + 24A2FF810F90D1DD003BB5A7 /* tree.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = tree.html; sourceTree = "<group>"; }; + 24A2FF820F90D1DD003BB5A7 /* TurnOff.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = TurnOff.gif; sourceTree = "<group>"; }; + 24A2FF830F90D1DD003BB5A7 /* TurnOn.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = TurnOn.gif; sourceTree = "<group>"; }; + 24A2FF840F90D1DD003BB5A7 /* vstfxstore_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = vstfxstore_8h.html; sourceTree = "<group>"; }; + 24A2FF850F90D1DD003BB5A7 /* vstoffline.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = vstoffline.html; sourceTree = "<group>"; }; + 24A2FF860F90D1DD003BB5A7 /* vstparamstruct.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = vstparamstruct.html; sourceTree = "<group>"; }; + 24A2FF870F90D1DD003BB5A7 /* vstpluglogo.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = vstpluglogo.jpg; sourceTree = "<group>"; }; + 24A2FF880F90D1DD003BB5A7 /* vstplugmain_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = vstplugmain_8cpp.html; sourceTree = "<group>"; }; + 24A2FF890F90D1DD003BB5A7 /* whatsnew.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = whatsnew.html; sourceTree = "<group>"; }; + 24A2FF8A0F90D1DD003BB5A7 /* sdk.menu.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = sdk.menu.html; sourceTree = "<group>"; }; + 24A2FF8B0F90D1DD003BB5A7 /* sdk.overview.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = sdk.overview.html; sourceTree = "<group>"; }; + 24A2FF8C0F90D1DD003BB5A7 /* sdkdoc.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = sdkdoc.css; sourceTree = "<group>"; }; + 24A2FF8D0F90D1DD003BB5A7 /* VST Licensing Agreement.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = "VST Licensing Agreement.rtf"; sourceTree = "<group>"; }; + 24A2FF8E0F90D1DD003BB5A7 /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index.html; sourceTree = "<group>"; }; + 24A2FF910F90D1DD003BB5A7 /* aeffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aeffect.h; sourceTree = "<group>"; }; + 24A2FF920F90D1DD003BB5A7 /* aeffectx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aeffectx.h; sourceTree = "<group>"; }; + 24A2FF930F90D1DD003BB5A7 /* vstfxstore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstfxstore.h; sourceTree = "<group>"; }; + 24A2FF980F90D1DD003BB5A7 /* adelay.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = adelay.cpp; sourceTree = "<group>"; }; + 24A2FF990F90D1DD003BB5A7 /* adelay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = adelay.h; sourceTree = "<group>"; }; + 24A2FF9A0F90D1DD003BB5A7 /* adelaymain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = adelaymain.cpp; sourceTree = "<group>"; }; + 24A2FF9D0F90D1DD003BB5A7 /* bmp00128.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp00128.bmp; sourceTree = "<group>"; }; + 24A2FF9E0F90D1DD003BB5A7 /* bmp00129.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp00129.bmp; sourceTree = "<group>"; }; + 24A2FF9F0F90D1DD003BB5A7 /* bmp00130.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp00130.bmp; sourceTree = "<group>"; }; + 24A2FFA00F90D1DD003BB5A7 /* surrounddelay.rc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = surrounddelay.rc; sourceTree = "<group>"; }; + 24A2FFA10F90D1DD003BB5A7 /* sdeditor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sdeditor.cpp; sourceTree = "<group>"; }; + 24A2FFA20F90D1DD003BB5A7 /* sdeditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sdeditor.h; sourceTree = "<group>"; }; + 24A2FFA30F90D1DD003BB5A7 /* surrounddelay.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = surrounddelay.cpp; sourceTree = "<group>"; }; + 24A2FFA40F90D1DD003BB5A7 /* surrounddelay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = surrounddelay.h; sourceTree = "<group>"; }; + 24A2FFA60F90D1DD003BB5A7 /* adelay.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = adelay.vcproj; sourceTree = "<group>"; }; + 24A2FFA70F90D1DD003BB5A7 /* surrounddelay.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = surrounddelay.vcproj; sourceTree = "<group>"; }; + 24A2FFAA0F90D1DD003BB5A7 /* again.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = again.cpp; sourceTree = "<group>"; }; + 24A2FFAB0F90D1DD003BB5A7 /* again.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = again.h; sourceTree = "<group>"; }; + 24A2FFAD0F90D1DD003BB5A7 /* again.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = again.vcproj; sourceTree = "<group>"; }; + 24A2FFAF0F90D1DD003BB5A7 /* minihost-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "minihost-Info.plist"; sourceTree = "<group>"; }; + 24A2FFB00F90D1DD003BB5A7 /* vst 2.4 examples.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = "vst 2.4 examples.xcodeproj"; sourceTree = "<group>"; }; + 24A2FFB30F90D1DD003BB5A7 /* vst2.4Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = vst2.4Info.plist; sourceTree = "<group>"; }; + 24A2FFB60F90D1DD003BB5A7 /* minieditor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = minieditor.cpp; sourceTree = "<group>"; }; + 24A2FFB70F90D1DD003BB5A7 /* minihost.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = minihost.cpp; sourceTree = "<group>"; }; + 24A2FFB90F90D1DD003BB5A7 /* minihost.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = minihost.vcproj; sourceTree = "<group>"; }; + 24A2FFBC0F90D1DD003BB5A7 /* vstxsynth.rc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = vstxsynth.rc; sourceTree = "<group>"; }; + 24A2FFBD0F90D1DD003BB5A7 /* vstxsynth.vstxml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = vstxsynth.vstxml; sourceTree = "<group>"; }; + 24A2FFBF0F90D1DD003BB5A7 /* gmnames.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gmnames.h; sourceTree = "<group>"; }; + 24A2FFC00F90D1DD003BB5A7 /* vstxsynth.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vstxsynth.cpp; sourceTree = "<group>"; }; + 24A2FFC10F90D1DD003BB5A7 /* vstxsynth.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstxsynth.h; sourceTree = "<group>"; }; + 24A2FFC20F90D1DD003BB5A7 /* vstxsynthproc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vstxsynthproc.cpp; sourceTree = "<group>"; }; + 24A2FFC40F90D1DD003BB5A7 /* vstxsynth.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = vstxsynth.vcproj; sourceTree = "<group>"; }; + 24A2FFC60F90D1DD003BB5A7 /* samples.sln */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = samples.sln; sourceTree = "<group>"; }; + 24A2FFC70F90D1DD003BB5A7 /* vstplug.def */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = vstplug.def; sourceTree = "<group>"; }; + 24A2FFC90F90D1DD003BB5A7 /* adelay.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = adelay.vcproj; sourceTree = "<group>"; }; + 24A2FFCA0F90D1DD003BB5A7 /* again.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = again.vcproj; sourceTree = "<group>"; }; + 24A2FFCB0F90D1DD003BB5A7 /* minihost.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = minihost.vcproj; sourceTree = "<group>"; }; + 24A2FFCC0F90D1DD003BB5A7 /* samples.sln */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = samples.sln; sourceTree = "<group>"; }; + 24A2FFCD0F90D1DD003BB5A7 /* surrounddelay.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = surrounddelay.vcproj; sourceTree = "<group>"; }; + 24A2FFCE0F90D1DD003BB5A7 /* vstxsynth.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = vstxsynth.vcproj; sourceTree = "<group>"; }; + 24A2FFD00F90D1DD003BB5A7 /* adelay.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = adelay.dsp; sourceTree = "<group>"; }; + 24A2FFD10F90D1DD003BB5A7 /* again.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = again.dsp; sourceTree = "<group>"; }; + 24A2FFD20F90D1DD003BB5A7 /* minihost.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = minihost.dsp; sourceTree = "<group>"; }; + 24A2FFD30F90D1DD003BB5A7 /* samples.dsw */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = samples.dsw; sourceTree = "<group>"; }; + 24A2FFD40F90D1DD003BB5A7 /* surrounddelay.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = surrounddelay.dsp; sourceTree = "<group>"; }; + 24A2FFD50F90D1DD003BB5A7 /* vstxsynth.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = vstxsynth.dsp; sourceTree = "<group>"; }; + 24A2FFD80F90D1DD003BB5A7 /* aeffeditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aeffeditor.h; sourceTree = "<group>"; }; + 24A2FFD90F90D1DD003BB5A7 /* audioeffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audioeffect.cpp; sourceTree = "<group>"; }; + 24A2FFDA0F90D1DD003BB5A7 /* audioeffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioeffect.h; sourceTree = "<group>"; }; + 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audioeffectx.cpp; sourceTree = "<group>"; }; + 24A2FFDC0F90D1DD003BB5A7 /* audioeffectx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioeffectx.h; sourceTree = "<group>"; }; + 24A2FFDD0F90D1DD003BB5A7 /* vstplugmain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vstplugmain.cpp; sourceTree = "<group>"; }; + 24A2FFE10F90D1DD003BB5A7 /* audiounit.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = audiounit.exp; sourceTree = "<group>"; }; + 24A2FFE20F90D1DD003BB5A7 /* cw_vst_prefix.pch++ */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = "cw_vst_prefix.pch++"; sourceTree = "<group>"; }; + 24A2FFE30F90D1DD003BB5A7 /* drawtest.cw9prj */ = {isa = PBXFileReference; lastKnownFileType = file; path = drawtest.cw9prj; sourceTree = "<group>"; }; + 24A2FFE40F90D1DD003BB5A7 /* drawtest.plc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = drawtest.plc; sourceTree = "<group>"; }; + 24A2FFE50F90D1DD003BB5A7 /* drawtest.xcode */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = drawtest.xcode; sourceTree = "<group>"; }; + 24A2FFE80F90D1DD003BB5A7 /* drawtest.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = drawtest.xcodeproj; sourceTree = "<group>"; }; + 24A2FFEB0F90D1DD003BB5A7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; + 24A2FFEC0F90D1DD003BB5A7 /* xcode_au_prefix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xcode_au_prefix.h; sourceTree = "<group>"; }; + 24A2FFED0F90D1DD003BB5A7 /* xcode_vst_prefix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xcode_vst_prefix.h; sourceTree = "<group>"; }; + 24A2FFEF0F90D1DD003BB5A7 /* audiounit.r */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.rez; path = audiounit.r; sourceTree = "<group>"; }; + 24A2FFF00F90D1DD003BB5A7 /* bmp00001.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bmp00001.png; sourceTree = "<group>"; }; + 24A2FFF10F90D1DD003BB5A7 /* bmp00100.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bmp00100.png; sourceTree = "<group>"; }; + 24A2FFF20F90D1DD003BB5A7 /* bmp01000.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bmp01000.png; sourceTree = "<group>"; }; + 24A2FFF30F90D1DD003BB5A7 /* bmp10001.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10001.bmp; sourceTree = "<group>"; }; + 24A2FFF40F90D1DD003BB5A7 /* bmp10002.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10002.bmp; sourceTree = "<group>"; }; + 24A2FFF50F90D1DD003BB5A7 /* bmp10003.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10003.bmp; sourceTree = "<group>"; }; + 24A2FFF60F90D1DD003BB5A7 /* bmp10004.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10004.bmp; sourceTree = "<group>"; }; + 24A2FFF70F90D1DD003BB5A7 /* bmp10005.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10005.bmp; sourceTree = "<group>"; }; + 24A2FFF80F90D1DD003BB5A7 /* bmp10006.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10006.bmp; sourceTree = "<group>"; }; + 24A2FFF90F90D1DD003BB5A7 /* bmp10007.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10007.bmp; sourceTree = "<group>"; }; + 24A2FFFA0F90D1DD003BB5A7 /* bmp10008.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10008.bmp; sourceTree = "<group>"; }; + 24A2FFFB0F90D1DD003BB5A7 /* bmp10009.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10009.bmp; sourceTree = "<group>"; }; + 24A2FFFC0F90D1DD003BB5A7 /* bmp10010.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10010.bmp; sourceTree = "<group>"; }; + 24A2FFFD0F90D1DD003BB5A7 /* bmp10011.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10011.bmp; sourceTree = "<group>"; }; + 24A2FFFE0F90D1DD003BB5A7 /* bmp10012.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10012.bmp; sourceTree = "<group>"; }; + 24A2FFFF0F90D1DD003BB5A7 /* bmp10013.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10013.bmp; sourceTree = "<group>"; }; + 24CFB70307E7A0220081BD57 /* PkgInfo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = PkgInfo; path = mac/PkgInfo; sourceTree = "<group>"; }; + 24D8286F09A914000093AEF8 /* DitherFloatProc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DitherFloatProc.cpp; path = source/DitherFloatProc.cpp; sourceTree = "<group>"; }; + 24D8287E09A9164A0093AEF8 /* xcode_vst_prefix.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = xcode_vst_prefix.h; path = mac/xcode_vst_prefix.h; sourceTree = SOURCE_ROOT; }; + 8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = mac/Info.plist; sourceTree = "<group>"; }; +/* End PBXFileReference section */ + +/* Begin PBXGroup section */ + 089C166AFE841209C02AAC07 /* FM-Chopper */ = { + isa = PBXGroup; + children = ( + 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */, + 19C28FB4FE9D528D11CA2CBB /* Products */, + 089C167CFE841241C02AAC07 /* Resources */, + 08FB77ADFE841716C02AAC07 /* Source */, + 24A2FEBB0F90D1DB003BB5A7 /* vstsdk2.4 */, + ); + name = "FM-Chopper"; + sourceTree = "<group>"; + }; + 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + 2434720A098313350063BBF1 /* QuickTime.framework */, + 08EA7FFBFE8413EDC02AAC07 /* Carbon.framework */, + ); + name = "External Frameworks and Libraries"; + sourceTree = "<group>"; + }; + 089C167CFE841241C02AAC07 /* Resources */ = { + isa = PBXGroup; + children = ( + 24D8287E09A9164A0093AEF8 /* xcode_vst_prefix.h */, + 24CFB70307E7A0220081BD57 /* PkgInfo */, + 8D01CCD10486CAD60068D4B7 /* Info.plist */, + ); + name = Resources; + sourceTree = "<group>"; + }; + 08FB77ADFE841716C02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + 2407DEB6089929BA00EB68BF /* DitherFloat.cpp */, + 24D8286F09A914000093AEF8 /* DitherFloatProc.cpp */, + 245463B80991757100464AD3 /* DitherFloat.h */, + ); + name = Source; + sourceTree = "<group>"; + }; + 19C28FB4FE9D528D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 2407DE920899296600EB68BF /* DitherFloat.vst */, + ); + name = Products; + sourceTree = "<group>"; + }; + 24A200030F90D1DD003BB5A7 /* source */ = { + isa = PBXGroup; + children = ( + 24A200040F90D1DD003BB5A7 /* controlsgui.cpp */, + 24A200050F90D1DD003BB5A7 /* controlsgui.h */, + 24A200060F90D1DD003BB5A7 /* pdrawtesteditor.cpp */, + 24A200070F90D1DD003BB5A7 /* pdrawtesteditor.h */, + 24A200080F90D1DD003BB5A7 /* pdrawtesteffect.cpp */, + 24A200090F90D1DD003BB5A7 /* pdrawtesteffect.h */, + 24A2000A0F90D1DD003BB5A7 /* pdrawtestmain.cpp */, + 24A2000B0F90D1DD003BB5A7 /* pdrawtestview.cpp */, + 24A2000C0F90D1DD003BB5A7 /* pdrawtestview.h */, + 24A2000D0F90D1DD003BB5A7 /* pprimitivesviews.cpp */, + 24A2000E0F90D1DD003BB5A7 /* pprimitivesviews.h */, + ); + name = source; + path = /vstsdk2.4/vstgui.sf/drawtest/source; + sourceTree = "<absolute>"; + }; + 24A2000F0F90D1DD003BB5A7 /* win */ = { + isa = PBXGroup; + children = ( + 24A200100F90D1DD003BB5A7 /* drawtest.def */, + 24A200110F90D1DD003BB5A7 /* drawtest.rc */, + 24A200120F90D1DD003BB5A7 /* drawtest.vcproj */, + ); + name = win; + path = /vstsdk2.4/vstgui.sf/drawtest/win; + sourceTree = "<absolute>"; + }; + 24A200130F90D1DD003BB5A7 /* win.vc6 */ = { + isa = PBXGroup; + children = ( + 24A200140F90D1DD003BB5A7 /* drawtest.dsp */, + 24A200150F90D1DD003BB5A7 /* drawtest.dsw */, + ); + name = win.vc6; + path = /vstsdk2.4/vstgui.sf/drawtest/win.vc6; + sourceTree = "<absolute>"; + }; + 24A200160F90D1DD003BB5A7 /* vstgui */ = { + isa = PBXGroup; + children = ( + 24A200170F90D1DD003BB5A7 /* aeffguieditor.cpp */, + 24A200180F90D1DD003BB5A7 /* aeffguieditor.h */, + 24A200190F90D1DD003BB5A7 /* cfileselector.cpp */, + 24A2001A0F90D1DD003BB5A7 /* cfileselector.h */, + 24A2001B0F90D1DD003BB5A7 /* Changelog */, + 24A2001C0F90D1DD003BB5A7 /* cscrollview.cpp */, + 24A2001D0F90D1DD003BB5A7 /* cscrollview.h */, + 24A2001E0F90D1DD003BB5A7 /* ctabview.cpp */, + 24A2001F0F90D1DD003BB5A7 /* ctabview.h */, + 24A200200F90D1DD003BB5A7 /* Documentation */, + 24A201460F90D1DE003BB5A7 /* plugguieditor.cpp */, + 24A201470F90D1DE003BB5A7 /* plugguieditor.h */, + 24A201480F90D1DE003BB5A7 /* vstcontrols.cpp */, + 24A201490F90D1DE003BB5A7 /* vstcontrols.h */, + 24A2014A0F90D1DE003BB5A7 /* vstgui.cpp */, + 24A2014B0F90D1DE003BB5A7 /* vstgui.h */, + 24A2014C0F90D1DE003BB5A7 /* vstkeycode.h */, + 24A2014D0F90D1DE003BB5A7 /* vstplugscarbon.h */, + 24A2014E0F90D1DE003BB5A7 /* vstplugsmac.h */, + 24A2014F0F90D1DE003BB5A7 /* vstplugsmacho.h */, + 24A201500F90D1DE003BB5A7 /* vstplugsquartz.h */, + ); + name = vstgui; + path = /vstsdk2.4/vstgui.sf/vstgui; + sourceTree = "<absolute>"; + }; + 24A200200F90D1DD003BB5A7 /* Documentation */ = { + isa = PBXGroup; + children = ( + 24A200210F90D1DD003BB5A7 /* html */, + 24A201440F90D1DE003BB5A7 /* index.html */, + 24A201450F90D1DE003BB5A7 /* Migrating from 2.3.rtf */, + ); + name = Documentation; + path = /vstsdk2.4/vstgui.sf/vstgui/Documentation; + sourceTree = "<absolute>"; + }; + 24A200210F90D1DD003BB5A7 /* html */ = { + isa = PBXGroup; + children = ( + 24A200220F90D1DD003BB5A7 /* aeffguieditor_8cpp.html */, + 24A200230F90D1DD003BB5A7 /* aeffguieditor_8h.html */, + 24A200240F90D1DD003BB5A7 /* annotated.html */, + 24A200250F90D1DD003BB5A7 /* cfileselector_8cpp.html */, + 24A200260F90D1DD003BB5A7 /* cfileselector_8h.html */, + 24A200270F90D1DD003BB5A7 /* class_a_eff_g_u_i_editor-members.html */, + 24A200280F90D1DD003BB5A7 /* class_a_eff_g_u_i_editor.html */, + 24A200290F90D1DD003BB5A7 /* class_c_anim_knob-members.html */, + 24A2002A0F90D1DD003BB5A7 /* class_c_anim_knob.html */, + 24A2002B0F90D1DD003BB5A7 /* class_c_anim_knob.png */, + 24A2002C0F90D1DD003BB5A7 /* class_c_attribute_list_entry-members.html */, + 24A2002D0F90D1DD003BB5A7 /* class_c_attribute_list_entry.html */, + 24A2002E0F90D1DD003BB5A7 /* class_c_auto_animation-members.html */, + 24A2002F0F90D1DD003BB5A7 /* class_c_auto_animation.html */, + 24A200300F90D1DD003BB5A7 /* class_c_auto_animation.png */, + 24A200310F90D1DD003BB5A7 /* class_c_bitmap-members.html */, + 24A200320F90D1DD003BB5A7 /* class_c_bitmap.html */, + 24A200330F90D1DD003BB5A7 /* class_c_bitmap.png */, + 24A200340F90D1DD003BB5A7 /* class_c_c_view-members.html */, + 24A200350F90D1DD003BB5A7 /* class_c_c_view.html */, + 24A200360F90D1DD003BB5A7 /* class_c_control-members.html */, + 24A200370F90D1DD003BB5A7 /* class_c_control.html */, + 24A200380F90D1DD003BB5A7 /* class_c_control.png */, + 24A200390F90D1DD003BB5A7 /* class_c_control_listener-members.html */, + 24A2003A0F90D1DD003BB5A7 /* class_c_control_listener.html */, + 24A2003B0F90D1DD003BB5A7 /* class_c_control_listener.png */, + 24A2003C0F90D1DD003BB5A7 /* class_c_drag_container-members.html */, + 24A2003D0F90D1DD003BB5A7 /* class_c_drag_container.html */, + 24A2003E0F90D1DD003BB5A7 /* class_c_drag_container.png */, + 24A2003F0F90D1DD003BB5A7 /* class_c_draw_context-members.html */, + 24A200400F90D1DD003BB5A7 /* class_c_draw_context.html */, + 24A200410F90D1DD003BB5A7 /* class_c_draw_context.png */, + 24A200420F90D1DD003BB5A7 /* class_c_file_selector-members.html */, + 24A200430F90D1DD003BB5A7 /* class_c_file_selector.html */, + 24A200440F90D1DD003BB5A7 /* class_c_frame-members.html */, + 24A200450F90D1DD003BB5A7 /* class_c_frame.html */, + 24A200460F90D1DD003BB5A7 /* class_c_frame.png */, + 24A200470F90D1DD003BB5A7 /* class_c_horizontal_slider-members.html */, + 24A200480F90D1DD003BB5A7 /* class_c_horizontal_slider.html */, + 24A200490F90D1DD003BB5A7 /* class_c_horizontal_slider.png */, + 24A2004A0F90D1DD003BB5A7 /* class_c_horizontal_switch-members.html */, + 24A2004B0F90D1DD003BB5A7 /* class_c_horizontal_switch.html */, + 24A2004C0F90D1DD003BB5A7 /* class_c_horizontal_switch.png */, + 24A2004D0F90D1DD003BB5A7 /* class_c_kick_button-members.html */, + 24A2004E0F90D1DD003BB5A7 /* class_c_kick_button.html */, + 24A2004F0F90D1DD003BB5A7 /* class_c_kick_button.png */, + 24A200500F90D1DD003BB5A7 /* class_c_knob-members.html */, + 24A200510F90D1DD003BB5A7 /* class_c_knob.html */, + 24A200520F90D1DD003BB5A7 /* class_c_knob.png */, + 24A200530F90D1DD003BB5A7 /* class_c_movie_bitmap-members.html */, + 24A200540F90D1DD003BB5A7 /* class_c_movie_bitmap.html */, + 24A200550F90D1DD003BB5A7 /* class_c_movie_bitmap.png */, + 24A200560F90D1DD003BB5A7 /* class_c_movie_button-members.html */, + 24A200570F90D1DD003BB5A7 /* class_c_movie_button.html */, + 24A200580F90D1DD003BB5A7 /* class_c_movie_button.png */, + 24A200590F90D1DD003BB5A7 /* class_c_offscreen_context-members.html */, + 24A2005A0F90D1DD003BB5A7 /* class_c_offscreen_context.html */, + 24A2005B0F90D1DD003BB5A7 /* class_c_offscreen_context.png */, + 24A2005C0F90D1DD003BB5A7 /* class_c_on_off_button-members.html */, + 24A2005D0F90D1DD003BB5A7 /* class_c_on_off_button.html */, + 24A2005E0F90D1DD003BB5A7 /* class_c_on_off_button.png */, + 24A2005F0F90D1DD003BB5A7 /* class_c_option_menu-members.html */, + 24A200600F90D1DD003BB5A7 /* class_c_option_menu.html */, + 24A200610F90D1DD003BB5A7 /* class_c_option_menu.png */, + 24A200620F90D1DD003BB5A7 /* class_c_option_menu_scheme-members.html */, + 24A200630F90D1DD003BB5A7 /* class_c_option_menu_scheme.html */, + 24A200640F90D1DD003BB5A7 /* class_c_option_menu_scheme.png */, + 24A200650F90D1DD003BB5A7 /* class_c_param_display-members.html */, + 24A200660F90D1DD003BB5A7 /* class_c_param_display.html */, + 24A200670F90D1DD003BB5A7 /* class_c_param_display.png */, + 24A200680F90D1DD003BB5A7 /* class_c_reference_counter-members.html */, + 24A200690F90D1DD003BB5A7 /* class_c_reference_counter.html */, + 24A2006A0F90D1DD003BB5A7 /* class_c_reference_counter.png */, + 24A2006B0F90D1DD003BB5A7 /* class_c_rocker_switch-members.html */, + 24A2006C0F90D1DD003BB5A7 /* class_c_rocker_switch.html */, + 24A2006D0F90D1DD003BB5A7 /* class_c_rocker_switch.png */, + 24A2006E0F90D1DD003BB5A7 /* class_c_scroll_container-members.html */, + 24A2006F0F90D1DD003BB5A7 /* class_c_scroll_container.html */, + 24A200700F90D1DD003BB5A7 /* class_c_scroll_container.png */, + 24A200710F90D1DD003BB5A7 /* class_c_scroll_view-members.html */, + 24A200720F90D1DD003BB5A7 /* class_c_scroll_view.html */, + 24A200730F90D1DD003BB5A7 /* class_c_scroll_view.png */, + 24A200740F90D1DD003BB5A7 /* class_c_scrollbar-members.html */, + 24A200750F90D1DD003BB5A7 /* class_c_scrollbar.html */, + 24A200760F90D1DD003BB5A7 /* class_c_scrollbar.png */, + 24A200770F90D1DD003BB5A7 /* class_c_slider-members.html */, + 24A200780F90D1DD003BB5A7 /* class_c_slider.html */, + 24A200790F90D1DD003BB5A7 /* class_c_slider.png */, + 24A2007A0F90D1DD003BB5A7 /* class_c_special_digit-members.html */, + 24A2007B0F90D1DD003BB5A7 /* class_c_special_digit.html */, + 24A2007C0F90D1DD003BB5A7 /* class_c_special_digit.png */, + 24A2007D0F90D1DD003BB5A7 /* class_c_splash_screen-members.html */, + 24A2007E0F90D1DD003BB5A7 /* class_c_splash_screen.html */, + 24A2007F0F90D1DD003BB5A7 /* class_c_splash_screen.png */, + 24A200800F90D1DD003BB5A7 /* class_c_splash_screen_view-members.html */, + 24A200810F90D1DD003BB5A7 /* class_c_splash_screen_view.html */, + 24A200820F90D1DD003BB5A7 /* class_c_splash_screen_view.png */, + 24A200830F90D1DD003BB5A7 /* class_c_tab_button-members.html */, + 24A200840F90D1DD003BB5A7 /* class_c_tab_button.html */, + 24A200850F90D1DD003BB5A7 /* class_c_tab_button.png */, + 24A200860F90D1DD003BB5A7 /* class_c_tab_child_view-members.html */, + 24A200870F90D1DD003BB5A7 /* class_c_tab_child_view.html */, + 24A200880F90D1DD003BB5A7 /* class_c_tab_child_view.png */, + 24A200890F90D1DD003BB5A7 /* class_c_tab_view-members.html */, + 24A2008A0F90D1DD003BB5A7 /* class_c_tab_view.html */, + 24A2008B0F90D1DD003BB5A7 /* class_c_tab_view.png */, + 24A2008C0F90D1DD003BB5A7 /* class_c_text_edit-members.html */, + 24A2008D0F90D1DD003BB5A7 /* class_c_text_edit.html */, + 24A2008E0F90D1DD003BB5A7 /* class_c_text_edit.png */, + 24A2008F0F90D1DD003BB5A7 /* class_c_text_label-members.html */, + 24A200900F90D1DD003BB5A7 /* class_c_text_label.html */, + 24A200910F90D1DD003BB5A7 /* class_c_text_label.png */, + 24A200920F90D1DD003BB5A7 /* class_c_vertical_slider-members.html */, + 24A200930F90D1DD003BB5A7 /* class_c_vertical_slider.html */, + 24A200940F90D1DD003BB5A7 /* class_c_vertical_slider.png */, + 24A200950F90D1DD003BB5A7 /* class_c_vertical_switch-members.html */, + 24A200960F90D1DD003BB5A7 /* class_c_vertical_switch.html */, + 24A200970F90D1DD003BB5A7 /* class_c_vertical_switch.png */, + 24A200980F90D1DD003BB5A7 /* class_c_view-members.html */, + 24A200990F90D1DD003BB5A7 /* class_c_view.html */, + 24A2009A0F90D1DD003BB5A7 /* class_c_view.png */, + 24A2009B0F90D1DD003BB5A7 /* class_c_view_container-members.html */, + 24A2009C0F90D1DD003BB5A7 /* class_c_view_container.html */, + 24A2009D0F90D1DD003BB5A7 /* class_c_view_container.png */, + 24A2009E0F90D1DD003BB5A7 /* class_c_vu_meter-members.html */, + 24A2009F0F90D1DD003BB5A7 /* class_c_vu_meter.html */, + 24A200A00F90D1DD003BB5A7 /* class_c_vu_meter.png */, + 24A200A10F90D1DD003BB5A7 /* class_i_scrollbar_drawer-members.html */, + 24A200A20F90D1DD003BB5A7 /* class_i_scrollbar_drawer.html */, + 24A200A30F90D1DD003BB5A7 /* class_plugin_g_u_i_editor-members.html */, + 24A200A40F90D1DD003BB5A7 /* class_plugin_g_u_i_editor.html */, + 24A200A50F90D1DD003BB5A7 /* cscrollview_8cpp.html */, + 24A200A60F90D1DD003BB5A7 /* cscrollview_8h.html */, + 24A200A70F90D1DD003BB5A7 /* ctabview_8cpp.html */, + 24A200A80F90D1DD003BB5A7 /* ctabview_8h.html */, + 24A200A90F90D1DD003BB5A7 /* deprecated.html */, + 24A200AA0F90D1DD003BB5A7 /* doc_8h.html */, + 24A200AB0F90D1DD003BB5A7 /* doxygen.css */, + 24A200AC0F90D1DD003BB5A7 /* doxygen.png */, + 24A200AD0F90D1DD003BB5A7 /* files.html */, + 24A200AE0F90D1DD003BB5A7 /* ftv2blank.png */, + 24A200AF0F90D1DD003BB5A7 /* ftv2doc.png */, + 24A200B00F90D1DD003BB5A7 /* ftv2folderclosed.png */, + 24A200B10F90D1DE003BB5A7 /* ftv2folderopen.png */, + 24A200B20F90D1DE003BB5A7 /* ftv2lastnode.png */, + 24A200B30F90D1DE003BB5A7 /* ftv2link.png */, + 24A200B40F90D1DE003BB5A7 /* ftv2mlastnode.png */, + 24A200B50F90D1DE003BB5A7 /* ftv2mnode.png */, + 24A200B60F90D1DE003BB5A7 /* ftv2node.png */, + 24A200B70F90D1DE003BB5A7 /* ftv2plastnode.png */, + 24A200B80F90D1DE003BB5A7 /* ftv2pnode.png */, + 24A200B90F90D1DE003BB5A7 /* ftv2vertline.png */, + 24A200BA0F90D1DE003BB5A7 /* functions.html */, + 24A200BB0F90D1DE003BB5A7 /* functions_0x62.html */, + 24A200BC0F90D1DE003BB5A7 /* functions_0x63.html */, + 24A200BD0F90D1DE003BB5A7 /* functions_0x64.html */, + 24A200BE0F90D1DE003BB5A7 /* functions_0x65.html */, + 24A200BF0F90D1DE003BB5A7 /* functions_0x66.html */, + 24A200C00F90D1DE003BB5A7 /* functions_0x67.html */, + 24A200C10F90D1DE003BB5A7 /* functions_0x68.html */, + 24A200C20F90D1DE003BB5A7 /* functions_0x69.html */, + 24A200C30F90D1DE003BB5A7 /* functions_0x6b.html */, + 24A200C40F90D1DE003BB5A7 /* functions_0x6c.html */, + 24A200C50F90D1DE003BB5A7 /* functions_0x6d.html */, + 24A200C60F90D1DE003BB5A7 /* functions_0x6e.html */, + 24A200C70F90D1DE003BB5A7 /* functions_0x6f.html */, + 24A200C80F90D1DE003BB5A7 /* functions_0x70.html */, + 24A200C90F90D1DE003BB5A7 /* functions_0x72.html */, + 24A200CA0F90D1DE003BB5A7 /* functions_0x73.html */, + 24A200CB0F90D1DE003BB5A7 /* functions_0x74.html */, + 24A200CC0F90D1DE003BB5A7 /* functions_0x75.html */, + 24A200CD0F90D1DE003BB5A7 /* functions_0x76.html */, + 24A200CE0F90D1DE003BB5A7 /* functions_0x77.html */, + 24A200CF0F90D1DE003BB5A7 /* functions_0x78.html */, + 24A200D00F90D1DE003BB5A7 /* functions_0x79.html */, + 24A200D10F90D1DE003BB5A7 /* functions_0x7a.html */, + 24A200D20F90D1DE003BB5A7 /* functions_0x7e.html */, + 24A200D30F90D1DE003BB5A7 /* functions_eval.html */, + 24A200D40F90D1DE003BB5A7 /* functions_func.html */, + 24A200D50F90D1DE003BB5A7 /* functions_func_0x62.html */, + 24A200D60F90D1DE003BB5A7 /* functions_func_0x63.html */, + 24A200D70F90D1DE003BB5A7 /* functions_func_0x64.html */, + 24A200D80F90D1DE003BB5A7 /* functions_func_0x65.html */, + 24A200D90F90D1DE003BB5A7 /* functions_func_0x66.html */, + 24A200DA0F90D1DE003BB5A7 /* functions_func_0x67.html */, + 24A200DB0F90D1DE003BB5A7 /* functions_func_0x68.html */, + 24A200DC0F90D1DE003BB5A7 /* functions_func_0x69.html */, + 24A200DD0F90D1DE003BB5A7 /* functions_func_0x6c.html */, + 24A200DE0F90D1DE003BB5A7 /* functions_func_0x6d.html */, + 24A200DF0F90D1DE003BB5A7 /* functions_func_0x6e.html */, + 24A200E00F90D1DE003BB5A7 /* functions_func_0x6f.html */, + 24A200E10F90D1DE003BB5A7 /* functions_func_0x70.html */, + 24A200E20F90D1DE003BB5A7 /* functions_func_0x72.html */, + 24A200E30F90D1DE003BB5A7 /* functions_func_0x73.html */, + 24A200E40F90D1DE003BB5A7 /* functions_func_0x74.html */, + 24A200E50F90D1DE003BB5A7 /* functions_func_0x75.html */, + 24A200E60F90D1DE003BB5A7 /* functions_func_0x76.html */, + 24A200E70F90D1DE003BB5A7 /* functions_func_0x77.html */, + 24A200E80F90D1DE003BB5A7 /* functions_func_0x7e.html */, + 24A200E90F90D1DE003BB5A7 /* functions_rela.html */, + 24A200EA0F90D1DE003BB5A7 /* functions_vars.html */, + 24A200EB0F90D1DE003BB5A7 /* functions_vars_0x62.html */, + 24A200EC0F90D1DE003BB5A7 /* functions_vars_0x63.html */, + 24A200ED0F90D1DE003BB5A7 /* functions_vars_0x64.html */, + 24A200EE0F90D1DE003BB5A7 /* functions_vars_0x65.html */, + 24A200EF0F90D1DE003BB5A7 /* functions_vars_0x66.html */, + 24A200F00F90D1DE003BB5A7 /* functions_vars_0x67.html */, + 24A200F10F90D1DE003BB5A7 /* functions_vars_0x68.html */, + 24A200F20F90D1DE003BB5A7 /* functions_vars_0x69.html */, + 24A200F30F90D1DE003BB5A7 /* functions_vars_0x6b.html */, + 24A200F40F90D1DE003BB5A7 /* functions_vars_0x6c.html */, + 24A200F50F90D1DE003BB5A7 /* functions_vars_0x6d.html */, + 24A200F60F90D1DE003BB5A7 /* functions_vars_0x6e.html */, + 24A200F70F90D1DE003BB5A7 /* functions_vars_0x6f.html */, + 24A200F80F90D1DE003BB5A7 /* functions_vars_0x70.html */, + 24A200F90F90D1DE003BB5A7 /* functions_vars_0x72.html */, + 24A200FA0F90D1DE003BB5A7 /* functions_vars_0x73.html */, + 24A200FB0F90D1DE003BB5A7 /* functions_vars_0x74.html */, + 24A200FC0F90D1DE003BB5A7 /* functions_vars_0x75.html */, + 24A200FD0F90D1DE003BB5A7 /* functions_vars_0x76.html */, + 24A200FE0F90D1DE003BB5A7 /* functions_vars_0x77.html */, + 24A200FF0F90D1DE003BB5A7 /* functions_vars_0x78.html */, + 24A201000F90D1DE003BB5A7 /* functions_vars_0x79.html */, + 24A201010F90D1DE003BB5A7 /* functions_vars_0x7a.html */, + 24A201020F90D1DE003BB5A7 /* globals.html */, + 24A201030F90D1DE003BB5A7 /* globals_0x61.html */, + 24A201040F90D1DE003BB5A7 /* globals_0x62.html */, + 24A201050F90D1DE003BB5A7 /* globals_0x63.html */, + 24A201060F90D1DE003BB5A7 /* globals_0x65.html */, + 24A201070F90D1DE003BB5A7 /* globals_0x66.html */, + 24A201080F90D1DE003BB5A7 /* globals_0x67.html */, + 24A201090F90D1DE003BB5A7 /* globals_0x6b.html */, + 24A2010A0F90D1DE003BB5A7 /* globals_0x6d.html */, + 24A2010B0F90D1DE003BB5A7 /* globals_0x6e.html */, + 24A2010C0F90D1DE003BB5A7 /* globals_0x6f.html */, + 24A2010D0F90D1DE003BB5A7 /* globals_0x71.html */, + 24A2010E0F90D1DE003BB5A7 /* globals_0x72.html */, + 24A2010F0F90D1DE003BB5A7 /* globals_0x73.html */, + 24A201100F90D1DE003BB5A7 /* globals_0x74.html */, + 24A201110F90D1DE003BB5A7 /* globals_0x75.html */, + 24A201120F90D1DE003BB5A7 /* globals_0x76.html */, + 24A201130F90D1DE003BB5A7 /* globals_0x77.html */, + 24A201140F90D1DE003BB5A7 /* globals_defs.html */, + 24A201150F90D1DE003BB5A7 /* globals_enum.html */, + 24A201160F90D1DE003BB5A7 /* globals_eval.html */, + 24A201170F90D1DE003BB5A7 /* globals_type.html */, + 24A201180F90D1DE003BB5A7 /* globals_vars.html */, + 24A201190F90D1DE003BB5A7 /* hierarchy.html */, + 24A2011A0F90D1DE003BB5A7 /* index.html */, + 24A2011B0F90D1DE003BB5A7 /* intro.html */, + 24A2011C0F90D1DE003BB5A7 /* license.html */, + 24A2011D0F90D1DE003BB5A7 /* maceditor.html */, + 24A2011E0F90D1DE003BB5A7 /* main.html */, + 24A2011F0F90D1DE003BB5A7 /* others.html */, + 24A201200F90D1DE003BB5A7 /* pages.html */, + 24A201210F90D1DE003BB5A7 /* plugguieditor_8cpp.html */, + 24A201220F90D1DE003BB5A7 /* plugguieditor_8h.html */, + 24A201230F90D1DE003BB5A7 /* sequences.html */, + 24A201240F90D1DE003BB5A7 /* struct_c_color-members.html */, + 24A201250F90D1DE003BB5A7 /* struct_c_color.html */, + 24A201260F90D1DE003BB5A7 /* struct_c_point-members.html */, + 24A201270F90D1DE003BB5A7 /* struct_c_point.html */, + 24A201280F90D1DE003BB5A7 /* struct_c_rect-members.html */, + 24A201290F90D1DE003BB5A7 /* struct_c_rect.html */, + 24A2012A0F90D1DE003BB5A7 /* struct_e_rect-members.html */, + 24A2012B0F90D1DE003BB5A7 /* struct_e_rect.html */, + 24A2012C0F90D1DE003BB5A7 /* struct_vst_file_select-members.html */, + 24A2012D0F90D1DE003BB5A7 /* struct_vst_file_select.html */, + 24A2012E0F90D1DE003BB5A7 /* struct_vst_file_type-members.html */, + 24A2012F0F90D1DE003BB5A7 /* struct_vst_file_type.html */, + 24A201300F90D1DE003BB5A7 /* struct_vst_key_code-members.html */, + 24A201310F90D1DE003BB5A7 /* struct_vst_key_code.html */, + 24A201320F90D1DE003BB5A7 /* tab_b.gif */, + 24A201330F90D1DE003BB5A7 /* tab_l.gif */, + 24A201340F90D1DE003BB5A7 /* tab_r.gif */, + 24A201350F90D1DE003BB5A7 /* tabs.css */, + 24A201360F90D1DE003BB5A7 /* thanks.html */, + 24A201370F90D1DE003BB5A7 /* tree.html */, + 24A201380F90D1DE003BB5A7 /* vstcontrols_8cpp.html */, + 24A201390F90D1DE003BB5A7 /* vstcontrols_8h.html */, + 24A2013A0F90D1DE003BB5A7 /* vstgui_8cpp.html */, + 24A2013B0F90D1DE003BB5A7 /* vstgui_8h.html */, + 24A2013C0F90D1DE003BB5A7 /* vstkeycode_8h.html */, + 24A2013D0F90D1DE003BB5A7 /* vstoffline.html */, + 24A2013E0F90D1DE003BB5A7 /* vstparamstruct.html */, + 24A2013F0F90D1DE003BB5A7 /* vstplugscarbon_8h.html */, + 24A201400F90D1DE003BB5A7 /* vstplugsmac_8h.html */, + 24A201410F90D1DE003BB5A7 /* vstplugsmacho_8h.html */, + 24A201420F90D1DE003BB5A7 /* vstplugsquartz_8h.html */, + 24A201430F90D1DE003BB5A7 /* whatsnew.html */, + ); + name = html; + path = /vstsdk2.4/vstgui.sf/vstgui/Documentation/html; + sourceTree = "<absolute>"; + }; + 24A203CE0F90D272003BB5A7 /* Products */ = { + isa = PBXGroup; + children = ( + 24A203D70F90D272003BB5A7 /* again.vst */, + 24A203D90F90D272003BB5A7 /* adelay.vst */, + 24A203DB0F90D272003BB5A7 /* vstxsynth.vst */, + 24A203DD0F90D272003BB5A7 /* surrounddelay.vst */, + 24A203DF0F90D272003BB5A7 /* minihost.app */, + ); + name = Products; + sourceTree = "<group>"; + }; + 24A203E00F90D272003BB5A7 /* Products */ = { + isa = PBXGroup; + children = ( + 24A203E50F90D272003BB5A7 /* drawtest.component */, + 24A203E70F90D272003BB5A7 /* drawtest.vst */, + ); + name = Products; + sourceTree = "<group>"; + }; + 24A203E80F90D272003BB5A7 /* Products */ = { + isa = PBXGroup; + children = ( + 24A203ED0F90D272003BB5A7 /* drawtest.component */, + 24A203EF0F90D272003BB5A7 /* drawtest.vst */, + ); + name = Products; + sourceTree = "<group>"; + }; + 24A2FEBB0F90D1DB003BB5A7 /* vstsdk2.4 */ = { + isa = PBXGroup; + children = ( + 24A2FEBC0F90D1DC003BB5A7 /* artwork */, + 24A2FEC20F90D1DC003BB5A7 /* bin */, + 24A2FED80F90D1DC003BB5A7 /* doc */, + 24A2FF8E0F90D1DD003BB5A7 /* index.html */, + 24A2FF8F0F90D1DD003BB5A7 /* pluginterfaces */, + 24A2FF940F90D1DD003BB5A7 /* public.sdk */, + 24A2FFDE0F90D1DD003BB5A7 /* vstgui.sf */, + ); + name = vstsdk2.4; + path = /vstsdk2.4; + sourceTree = "<absolute>"; + }; + 24A2FEBC0F90D1DC003BB5A7 /* artwork */ = { + isa = PBXGroup; + children = ( + 24A2FEBD0F90D1DC003BB5A7 /* Thumbs.db */, + 24A2FEBE0F90D1DC003BB5A7 /* VST_Logo_Usage_Guideline.pdf */, + 24A2FEBF0F90D1DC003BB5A7 /* VSTLogoAlpha.png */, + 24A2FEC00F90D1DC003BB5A7 /* VSTLogoBlack.jpg */, + 24A2FEC10F90D1DC003BB5A7 /* VSTLogoWhite.jpg */, + ); + name = artwork; + path = /vstsdk2.4/artwork; + sourceTree = "<absolute>"; + }; + 24A2FEC20F90D1DC003BB5A7 /* bin */ = { + isa = PBXGroup; + children = ( + 24A2FEC30F90D1DC003BB5A7 /* mac */, + 24A2FED50F90D1DC003BB5A7 /* win */, + ); + name = bin; + path = /vstsdk2.4/bin; + sourceTree = "<absolute>"; + }; + 24A2FEC30F90D1DC003BB5A7 /* mac */ = { + isa = PBXGroup; + children = ( + 24A2FEC40F90D1DC003BB5A7 /* VSTMonitor.vst */, + 24A2FED40F90D1DC003BB5A7 /* VSTParamTool.app */, + ); + name = mac; + path = /vstsdk2.4/bin/mac; + sourceTree = "<absolute>"; + }; + 24A2FEC40F90D1DC003BB5A7 /* VSTMonitor.vst */ = { + isa = PBXGroup; + children = ( + 24A2FEC50F90D1DC003BB5A7 /* Contents */, + ); + name = VSTMonitor.vst; + path = /vstsdk2.4/bin/mac/VSTMonitor.vst; + sourceTree = "<absolute>"; + }; + 24A2FEC50F90D1DC003BB5A7 /* Contents */ = { + isa = PBXGroup; + children = ( + 24A2FEC60F90D1DC003BB5A7 /* Info.plist */, + 24A2FEC70F90D1DC003BB5A7 /* MacOS */, + 24A2FEC90F90D1DC003BB5A7 /* PkgInfo */, + 24A2FECA0F90D1DC003BB5A7 /* Resources */, + ); + name = Contents; + path = /vstsdk2.4/bin/mac/VSTMonitor.vst/Contents; + sourceTree = "<absolute>"; + }; + 24A2FEC70F90D1DC003BB5A7 /* MacOS */ = { + isa = PBXGroup; + children = ( + 24A2FEC80F90D1DC003BB5A7 /* VSTMonitor */, + ); + name = MacOS; + path = /vstsdk2.4/bin/mac/VSTMonitor.vst/Contents/MacOS; + sourceTree = "<absolute>"; + }; + 24A2FECA0F90D1DC003BB5A7 /* Resources */ = { + isa = PBXGroup; + children = ( + 24A2FECB0F90D1DC003BB5A7 /* bmp50000.bmp */, + 24A2FECC0F90D1DC003BB5A7 /* bmp50001.bmp */, + 24A2FECD0F90D1DC003BB5A7 /* bmp50002.bmp */, + 24A2FECE0F90D1DC003BB5A7 /* bmp50003.bmp */, + 24A2FECF0F90D1DC003BB5A7 /* bmp50004.bmp */, + 24A2FED00F90D1DC003BB5A7 /* bmp50005.bmp */, + 24A2FED10F90D1DC003BB5A7 /* bmp50006.bmp */, + 24A2FED20F90D1DC003BB5A7 /* bmp50007.bmp */, + 24A2FED30F90D1DC003BB5A7 /* bmp50008.bmp */, + ); + name = Resources; + path = /vstsdk2.4/bin/mac/VSTMonitor.vst/Contents/Resources; + sourceTree = "<absolute>"; + }; + 24A2FED50F90D1DC003BB5A7 /* win */ = { + isa = PBXGroup; + children = ( + 24A2FED60F90D1DC003BB5A7 /* vstmonitor.dll */, + 24A2FED70F90D1DC003BB5A7 /* vstparamtool.exe */, + ); + name = win; + path = /vstsdk2.4/bin/win; + sourceTree = "<absolute>"; + }; + 24A2FED80F90D1DC003BB5A7 /* doc */ = { + isa = PBXGroup; + children = ( + 24A2FED90F90D1DC003BB5A7 /* gfx */, + 24A2FEDE0F90D1DC003BB5A7 /* html */, + 24A2FF8A0F90D1DD003BB5A7 /* sdk.menu.html */, + 24A2FF8B0F90D1DD003BB5A7 /* sdk.overview.html */, + 24A2FF8C0F90D1DD003BB5A7 /* sdkdoc.css */, + 24A2FF8D0F90D1DD003BB5A7 /* VST Licensing Agreement.rtf */, + ); + name = doc; + path = /vstsdk2.4/doc; + sourceTree = "<absolute>"; + }; + 24A2FED90F90D1DC003BB5A7 /* gfx */ = { + isa = PBXGroup; + children = ( + 24A2FEDA0F90D1DC003BB5A7 /* folder.gif */, + 24A2FEDB0F90D1DC003BB5A7 /* mac.gif */, + 24A2FEDC0F90D1DC003BB5A7 /* vstpluglogo_small.jpg */, + 24A2FEDD0F90D1DC003BB5A7 /* win.gif */, + ); + name = gfx; + path = /vstsdk2.4/doc/gfx; + sourceTree = "<absolute>"; + }; + 24A2FEDE0F90D1DC003BB5A7 /* html */ = { + isa = PBXGroup; + children = ( + 24A2FEDF0F90D1DC003BB5A7 /* aeffect_8h.html */, + 24A2FEE00F90D1DC003BB5A7 /* aeffectx_8h.html */, + 24A2FEE10F90D1DC003BB5A7 /* aeffeditor_8h.html */, + 24A2FEE20F90D1DC003BB5A7 /* annotated.html */, + 24A2FEE30F90D1DC003BB5A7 /* audioeffect_8cpp.html */, + 24A2FEE40F90D1DC003BB5A7 /* audioeffect_8h.html */, + 24A2FEE50F90D1DC003BB5A7 /* audioeffectx_8cpp.html */, + 24A2FEE60F90D1DC003BB5A7 /* audioeffectx_8h.html */, + 24A2FEE70F90D1DC003BB5A7 /* Blocksizechange.gif */, + 24A2FEE80F90D1DC003BB5A7 /* class_a_eff_editor-members.html */, + 24A2FEE90F90D1DC003BB5A7 /* class_a_eff_editor.html */, + 24A2FEEA0F90D1DC003BB5A7 /* class_audio_effect-members.html */, + 24A2FEEB0F90D1DC003BB5A7 /* class_audio_effect.html */, + 24A2FEEC0F90D1DC003BB5A7 /* class_audio_effect.png */, + 24A2FEED0F90D1DC003BB5A7 /* class_audio_effect_x-members.html */, + 24A2FEEE0F90D1DC003BB5A7 /* class_audio_effect_x.html */, + 24A2FEEF0F90D1DC003BB5A7 /* class_audio_effect_x.png */, + 24A2FEF00F90D1DC003BB5A7 /* ControlChanged.gif */, + 24A2FEF10F90D1DC003BB5A7 /* deprecated.html */, + 24A2FEF20F90D1DC003BB5A7 /* dir_2d3252dd12c84c66c1d25b26bb45a1f5.html */, + 24A2FEF30F90D1DC003BB5A7 /* dir_77c628dfee72e555f82d5ef53b733f38.html */, + 24A2FEF40F90D1DC003BB5A7 /* dir_f81105d3b854bea570aaf3bae5cb64c1.html */, + 24A2FEF50F90D1DC003BB5A7 /* dir_fa0454ab79b4262333bf837ea3d765e9.html */, + 24A2FEF60F90D1DC003BB5A7 /* dirs.html */, + 24A2FEF70F90D1DC003BB5A7 /* doc_8h.html */, + 24A2FEF80F90D1DC003BB5A7 /* doxygen.css */, + 24A2FEF90F90D1DC003BB5A7 /* doxygen.png */, + 24A2FEFA0F90D1DC003BB5A7 /* files.html */, + 24A2FEFB0F90D1DC003BB5A7 /* ftv2blank.png */, + 24A2FEFC0F90D1DC003BB5A7 /* ftv2doc.png */, + 24A2FEFD0F90D1DC003BB5A7 /* ftv2folderclosed.png */, + 24A2FEFE0F90D1DC003BB5A7 /* ftv2folderopen.png */, + 24A2FEFF0F90D1DC003BB5A7 /* ftv2lastnode.png */, + 24A2FF000F90D1DC003BB5A7 /* ftv2link.png */, + 24A2FF010F90D1DC003BB5A7 /* ftv2mlastnode.png */, + 24A2FF020F90D1DC003BB5A7 /* ftv2mnode.png */, + 24A2FF030F90D1DC003BB5A7 /* ftv2node.png */, + 24A2FF040F90D1DC003BB5A7 /* ftv2plastnode.png */, + 24A2FF050F90D1DC003BB5A7 /* ftv2pnode.png */, + 24A2FF060F90D1DC003BB5A7 /* ftv2vertline.png */, + 24A2FF070F90D1DC003BB5A7 /* functions.html */, + 24A2FF080F90D1DC003BB5A7 /* functions_0x62.html */, + 24A2FF090F90D1DC003BB5A7 /* functions_0x63.html */, + 24A2FF0A0F90D1DC003BB5A7 /* functions_0x64.html */, + 24A2FF0B0F90D1DC003BB5A7 /* functions_0x65.html */, + 24A2FF0C0F90D1DC003BB5A7 /* functions_0x66.html */, + 24A2FF0D0F90D1DC003BB5A7 /* functions_0x67.html */, + 24A2FF0E0F90D1DC003BB5A7 /* functions_0x68.html */, + 24A2FF0F0F90D1DC003BB5A7 /* functions_0x69.html */, + 24A2FF100F90D1DC003BB5A7 /* functions_0x6b.html */, + 24A2FF110F90D1DC003BB5A7 /* functions_0x6c.html */, + 24A2FF120F90D1DC003BB5A7 /* functions_0x6d.html */, + 24A2FF130F90D1DC003BB5A7 /* functions_0x6e.html */, + 24A2FF140F90D1DC003BB5A7 /* functions_0x6f.html */, + 24A2FF150F90D1DC003BB5A7 /* functions_0x70.html */, + 24A2FF160F90D1DC003BB5A7 /* functions_0x72.html */, + 24A2FF170F90D1DC003BB5A7 /* functions_0x73.html */, + 24A2FF180F90D1DC003BB5A7 /* functions_0x74.html */, + 24A2FF190F90D1DC003BB5A7 /* functions_0x75.html */, + 24A2FF1A0F90D1DC003BB5A7 /* functions_0x76.html */, + 24A2FF1B0F90D1DC003BB5A7 /* functions_0x77.html */, + 24A2FF1C0F90D1DC003BB5A7 /* functions_0x78.html */, + 24A2FF1D0F90D1DC003BB5A7 /* functions_0x79.html */, + 24A2FF1E0F90D1DC003BB5A7 /* functions_0x7e.html */, + 24A2FF1F0F90D1DC003BB5A7 /* functions_func.html */, + 24A2FF200F90D1DC003BB5A7 /* functions_vars.html */, + 24A2FF210F90D1DC003BB5A7 /* globals.html */, + 24A2FF220F90D1DC003BB5A7 /* globals_0x62.html */, + 24A2FF230F90D1DC003BB5A7 /* globals_0x63.html */, + 24A2FF240F90D1DC003BB5A7 /* globals_0x64.html */, + 24A2FF250F90D1DC003BB5A7 /* globals_0x65.html */, + 24A2FF260F90D1DC003BB5A7 /* globals_0x66.html */, + 24A2FF270F90D1DC003BB5A7 /* globals_0x6b.html */, + 24A2FF280F90D1DC003BB5A7 /* globals_0x6d.html */, + 24A2FF290F90D1DC003BB5A7 /* globals_0x74.html */, + 24A2FF2A0F90D1DC003BB5A7 /* globals_0x76.html */, + 24A2FF2B0F90D1DC003BB5A7 /* globals_defs.html */, + 24A2FF2C0F90D1DC003BB5A7 /* globals_enum.html */, + 24A2FF2D0F90D1DC003BB5A7 /* globals_eval.html */, + 24A2FF2E0F90D1DC003BB5A7 /* globals_eval_0x65.html */, + 24A2FF2F0F90D1DC003BB5A7 /* globals_eval_0x6b.html */, + 24A2FF300F90D1DC003BB5A7 /* globals_eval_0x6d.html */, + 24A2FF310F90D1DC003BB5A7 /* globals_eval_0x76.html */, + 24A2FF320F90D1DC003BB5A7 /* globals_func.html */, + 24A2FF330F90D1DC003BB5A7 /* globals_type.html */, + 24A2FF340F90D1DC003BB5A7 /* globals_vars.html */, + 24A2FF350F90D1DC003BB5A7 /* hierarchy.html */, + 24A2FF360F90D1DC003BB5A7 /* history.html */, + 24A2FF370F90D1DC003BB5A7 /* index.html */, + 24A2FF380F90D1DC003BB5A7 /* Initialisation.gif */, + 24A2FF390F90D1DC003BB5A7 /* intro.html */, + 24A2FF3A0F90D1DC003BB5A7 /* IOchange.gif */, + 24A2FF3B0F90D1DC003BB5A7 /* license.html */, + 24A2FF3C0F90D1DC003BB5A7 /* maceditor.html */, + 24A2FF3D0F90D1DC003BB5A7 /* main.html */, + 24A2FF3E0F90D1DC003BB5A7 /* namespace_host_can_dos.html */, + 24A2FF3F0F90D1DC003BB5A7 /* namespace_plug_can_dos.html */, + 24A2FF400F90D1DC003BB5A7 /* namespacemembers.html */, + 24A2FF410F90D1DC003BB5A7 /* namespacemembers_vars.html */, + 24A2FF420F90D1DC003BB5A7 /* namespaces.html */, + 24A2FF430F90D1DC003BB5A7 /* Offlineprocessing.gif */, + 24A2FF440F90D1DC003BB5A7 /* others.html */, + 24A2FF450F90D1DC003BB5A7 /* pages.html */, + 24A2FF460F90D1DC003BB5A7 /* Sampleratechange.gif */, + 24A2FF470F90D1DC003BB5A7 /* sequences.html */, + 24A2FF480F90D1DC003BB5A7 /* SpeakerarrangementnegotiationforVSTfx.gif */, + 24A2FF490F90D1DC003BB5A7 /* struct_a_effect-members.html */, + 24A2FF4A0F90D1DC003BB5A7 /* struct_a_effect.html */, + 24A2FF4B0F90D1DC003BB5A7 /* struct_e_rect-members.html */, + 24A2FF4C0F90D1DC003BB5A7 /* struct_e_rect.html */, + 24A2FF4D0F90D1DC003BB5A7 /* struct_midi_key_name-members.html */, + 24A2FF4E0F90D1DC003BB5A7 /* struct_midi_key_name.html */, + 24A2FF4F0F90D1DC003BB5A7 /* struct_midi_program_category-members.html */, + 24A2FF500F90D1DC003BB5A7 /* struct_midi_program_category.html */, + 24A2FF510F90D1DC003BB5A7 /* struct_midi_program_name-members.html */, + 24A2FF520F90D1DC003BB5A7 /* struct_midi_program_name.html */, + 24A2FF530F90D1DC003BB5A7 /* struct_vst_audio_file-members.html */, + 24A2FF540F90D1DC003BB5A7 /* struct_vst_audio_file.html */, + 24A2FF550F90D1DC003BB5A7 /* struct_vst_audio_file_marker-members.html */, + 24A2FF560F90D1DC003BB5A7 /* struct_vst_audio_file_marker.html */, + 24A2FF570F90D1DC003BB5A7 /* struct_vst_event-members.html */, + 24A2FF580F90D1DC003BB5A7 /* struct_vst_event.html */, + 24A2FF590F90D1DD003BB5A7 /* struct_vst_events-members.html */, + 24A2FF5A0F90D1DD003BB5A7 /* struct_vst_events.html */, + 24A2FF5B0F90D1DD003BB5A7 /* struct_vst_file_select-members.html */, + 24A2FF5C0F90D1DD003BB5A7 /* struct_vst_file_select.html */, + 24A2FF5D0F90D1DD003BB5A7 /* struct_vst_file_type-members.html */, + 24A2FF5E0F90D1DD003BB5A7 /* struct_vst_file_type.html */, + 24A2FF5F0F90D1DD003BB5A7 /* struct_vst_key_code-members.html */, + 24A2FF600F90D1DD003BB5A7 /* struct_vst_key_code.html */, + 24A2FF610F90D1DD003BB5A7 /* struct_vst_midi_event-members.html */, + 24A2FF620F90D1DD003BB5A7 /* struct_vst_midi_event.html */, + 24A2FF630F90D1DD003BB5A7 /* struct_vst_midi_sysex_event-members.html */, + 24A2FF640F90D1DD003BB5A7 /* struct_vst_midi_sysex_event.html */, + 24A2FF650F90D1DD003BB5A7 /* struct_vst_offline_task-members.html */, + 24A2FF660F90D1DD003BB5A7 /* struct_vst_offline_task.html */, + 24A2FF670F90D1DD003BB5A7 /* struct_vst_parameter_properties-members.html */, + 24A2FF680F90D1DD003BB5A7 /* struct_vst_parameter_properties.html */, + 24A2FF690F90D1DD003BB5A7 /* struct_vst_patch_chunk_info-members.html */, + 24A2FF6A0F90D1DD003BB5A7 /* struct_vst_patch_chunk_info.html */, + 24A2FF6B0F90D1DD003BB5A7 /* struct_vst_pin_properties-members.html */, + 24A2FF6C0F90D1DD003BB5A7 /* struct_vst_pin_properties.html */, + 24A2FF6D0F90D1DD003BB5A7 /* struct_vst_speaker_arrangement-members.html */, + 24A2FF6E0F90D1DD003BB5A7 /* struct_vst_speaker_arrangement.html */, + 24A2FF6F0F90D1DD003BB5A7 /* struct_vst_speaker_properties-members.html */, + 24A2FF700F90D1DD003BB5A7 /* struct_vst_speaker_properties.html */, + 24A2FF710F90D1DD003BB5A7 /* struct_vst_time_info-members.html */, + 24A2FF720F90D1DD003BB5A7 /* struct_vst_time_info.html */, + 24A2FF730F90D1DD003BB5A7 /* struct_vst_variable_io-members.html */, + 24A2FF740F90D1DD003BB5A7 /* struct_vst_variable_io.html */, + 24A2FF750F90D1DD003BB5A7 /* struct_vst_window-members.html */, + 24A2FF760F90D1DD003BB5A7 /* struct_vst_window.html */, + 24A2FF770F90D1DD003BB5A7 /* structfx_bank-members.html */, + 24A2FF780F90D1DD003BB5A7 /* structfx_bank.html */, + 24A2FF790F90D1DD003BB5A7 /* structfx_program-members.html */, + 24A2FF7A0F90D1DD003BB5A7 /* structfx_program.html */, + 24A2FF7B0F90D1DD003BB5A7 /* tab_b.gif */, + 24A2FF7C0F90D1DD003BB5A7 /* tab_l.gif */, + 24A2FF7D0F90D1DD003BB5A7 /* tab_r.gif */, + 24A2FF7E0F90D1DD003BB5A7 /* tabs.css */, + 24A2FF7F0F90D1DD003BB5A7 /* Termination.gif */, + 24A2FF800F90D1DD003BB5A7 /* thanks.html */, + 24A2FF810F90D1DD003BB5A7 /* tree.html */, + 24A2FF820F90D1DD003BB5A7 /* TurnOff.gif */, + 24A2FF830F90D1DD003BB5A7 /* TurnOn.gif */, + 24A2FF840F90D1DD003BB5A7 /* vstfxstore_8h.html */, + 24A2FF850F90D1DD003BB5A7 /* vstoffline.html */, + 24A2FF860F90D1DD003BB5A7 /* vstparamstruct.html */, + 24A2FF870F90D1DD003BB5A7 /* vstpluglogo.jpg */, + 24A2FF880F90D1DD003BB5A7 /* vstplugmain_8cpp.html */, + 24A2FF890F90D1DD003BB5A7 /* whatsnew.html */, + ); + name = html; + path = /vstsdk2.4/doc/html; + sourceTree = "<absolute>"; + }; + 24A2FF8F0F90D1DD003BB5A7 /* pluginterfaces */ = { + isa = PBXGroup; + children = ( + 24A2FF900F90D1DD003BB5A7 /* vst2.x */, + ); + name = pluginterfaces; + path = /vstsdk2.4/pluginterfaces; + sourceTree = "<absolute>"; + }; + 24A2FF900F90D1DD003BB5A7 /* vst2.x */ = { + isa = PBXGroup; + children = ( + 24A2FF910F90D1DD003BB5A7 /* aeffect.h */, + 24A2FF920F90D1DD003BB5A7 /* aeffectx.h */, + 24A2FF930F90D1DD003BB5A7 /* vstfxstore.h */, + ); + name = vst2.x; + path = /vstsdk2.4/pluginterfaces/vst2.x; + sourceTree = "<absolute>"; + }; + 24A2FF940F90D1DD003BB5A7 /* public.sdk */ = { + isa = PBXGroup; + children = ( + 24A2FF950F90D1DD003BB5A7 /* samples */, + 24A2FFD60F90D1DD003BB5A7 /* source */, + ); + name = public.sdk; + path = /vstsdk2.4/public.sdk; + sourceTree = "<absolute>"; + }; + 24A2FF950F90D1DD003BB5A7 /* samples */ = { + isa = PBXGroup; + children = ( + 24A2FF960F90D1DD003BB5A7 /* vst2.x */, + ); + name = samples; + path = /vstsdk2.4/public.sdk/samples; + sourceTree = "<absolute>"; + }; + 24A2FF960F90D1DD003BB5A7 /* vst2.x */ = { + isa = PBXGroup; + children = ( + 24A2FF970F90D1DD003BB5A7 /* adelay */, + 24A2FFA80F90D1DD003BB5A7 /* again */, + 24A2FFAE0F90D1DD003BB5A7 /* mac */, + 24A2FFB40F90D1DD003BB5A7 /* minihost */, + 24A2FFBA0F90D1DD003BB5A7 /* vstxsynth */, + 24A2FFC50F90D1DD003BB5A7 /* win */, + 24A2FFC80F90D1DD003BB5A7 /* win.vc2003 */, + 24A2FFCF0F90D1DD003BB5A7 /* win.vc6 */, + ); + name = vst2.x; + path = /vstsdk2.4/public.sdk/samples/vst2.x; + sourceTree = "<absolute>"; + }; + 24A2FF970F90D1DD003BB5A7 /* adelay */ = { + isa = PBXGroup; + children = ( + 24A2FF980F90D1DD003BB5A7 /* adelay.cpp */, + 24A2FF990F90D1DD003BB5A7 /* adelay.h */, + 24A2FF9A0F90D1DD003BB5A7 /* adelaymain.cpp */, + 24A2FF9B0F90D1DD003BB5A7 /* editor */, + 24A2FFA30F90D1DD003BB5A7 /* surrounddelay.cpp */, + 24A2FFA40F90D1DD003BB5A7 /* surrounddelay.h */, + 24A2FFA50F90D1DD003BB5A7 /* win */, + ); + name = adelay; + path = /vstsdk2.4/public.sdk/samples/vst2.x/adelay; + sourceTree = "<absolute>"; + }; + 24A2FF9B0F90D1DD003BB5A7 /* editor */ = { + isa = PBXGroup; + children = ( + 24A2FF9C0F90D1DD003BB5A7 /* resources */, + 24A2FFA10F90D1DD003BB5A7 /* sdeditor.cpp */, + 24A2FFA20F90D1DD003BB5A7 /* sdeditor.h */, + ); + name = editor; + path = /vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor; + sourceTree = "<absolute>"; + }; + 24A2FF9C0F90D1DD003BB5A7 /* resources */ = { + isa = PBXGroup; + children = ( + 24A2FF9D0F90D1DD003BB5A7 /* bmp00128.bmp */, + 24A2FF9E0F90D1DD003BB5A7 /* bmp00129.bmp */, + 24A2FF9F0F90D1DD003BB5A7 /* bmp00130.bmp */, + 24A2FFA00F90D1DD003BB5A7 /* surrounddelay.rc */, + ); + name = resources; + path = /vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/resources; + sourceTree = "<absolute>"; + }; + 24A2FFA50F90D1DD003BB5A7 /* win */ = { + isa = PBXGroup; + children = ( + 24A2FFA60F90D1DD003BB5A7 /* adelay.vcproj */, + 24A2FFA70F90D1DD003BB5A7 /* surrounddelay.vcproj */, + ); + name = win; + path = /vstsdk2.4/public.sdk/samples/vst2.x/adelay/win; + sourceTree = "<absolute>"; + }; + 24A2FFA80F90D1DD003BB5A7 /* again */ = { + isa = PBXGroup; + children = ( + 24A2FFA90F90D1DD003BB5A7 /* source */, + 24A2FFAC0F90D1DD003BB5A7 /* win */, + ); + name = again; + path = /vstsdk2.4/public.sdk/samples/vst2.x/again; + sourceTree = "<absolute>"; + }; + 24A2FFA90F90D1DD003BB5A7 /* source */ = { + isa = PBXGroup; + children = ( + 24A2FFAA0F90D1DD003BB5A7 /* again.cpp */, + 24A2FFAB0F90D1DD003BB5A7 /* again.h */, + ); + name = source; + path = /vstsdk2.4/public.sdk/samples/vst2.x/again/source; + sourceTree = "<absolute>"; + }; + 24A2FFAC0F90D1DD003BB5A7 /* win */ = { + isa = PBXGroup; + children = ( + 24A2FFAD0F90D1DD003BB5A7 /* again.vcproj */, + ); + name = win; + path = /vstsdk2.4/public.sdk/samples/vst2.x/again/win; + sourceTree = "<absolute>"; + }; + 24A2FFAE0F90D1DD003BB5A7 /* mac */ = { + isa = PBXGroup; + children = ( + 24A2FFAF0F90D1DD003BB5A7 /* minihost-Info.plist */, + 24A2FFB00F90D1DD003BB5A7 /* vst 2.4 examples.xcodeproj */, + 24A2FFB30F90D1DD003BB5A7 /* vst2.4Info.plist */, + ); + name = mac; + path = /vstsdk2.4/public.sdk/samples/vst2.x/mac; + sourceTree = "<absolute>"; + }; + 24A2FFB40F90D1DD003BB5A7 /* minihost */ = { + isa = PBXGroup; + children = ( + 24A2FFB50F90D1DD003BB5A7 /* source */, + 24A2FFB80F90D1DD003BB5A7 /* win */, + ); + name = minihost; + path = /vstsdk2.4/public.sdk/samples/vst2.x/minihost; + sourceTree = "<absolute>"; + }; + 24A2FFB50F90D1DD003BB5A7 /* source */ = { + isa = PBXGroup; + children = ( + 24A2FFB60F90D1DD003BB5A7 /* minieditor.cpp */, + 24A2FFB70F90D1DD003BB5A7 /* minihost.cpp */, + ); + name = source; + path = /vstsdk2.4/public.sdk/samples/vst2.x/minihost/source; + sourceTree = "<absolute>"; + }; + 24A2FFB80F90D1DD003BB5A7 /* win */ = { + isa = PBXGroup; + children = ( + 24A2FFB90F90D1DD003BB5A7 /* minihost.vcproj */, + ); + name = win; + path = /vstsdk2.4/public.sdk/samples/vst2.x/minihost/win; + sourceTree = "<absolute>"; + }; + 24A2FFBA0F90D1DD003BB5A7 /* vstxsynth */ = { + isa = PBXGroup; + children = ( + 24A2FFBB0F90D1DD003BB5A7 /* resource */, + 24A2FFBE0F90D1DD003BB5A7 /* source */, + 24A2FFC30F90D1DD003BB5A7 /* win */, + ); + name = vstxsynth; + path = /vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth; + sourceTree = "<absolute>"; + }; + 24A2FFBB0F90D1DD003BB5A7 /* resource */ = { + isa = PBXGroup; + children = ( + 24A2FFBC0F90D1DD003BB5A7 /* vstxsynth.rc */, + 24A2FFBD0F90D1DD003BB5A7 /* vstxsynth.vstxml */, + ); + name = resource; + path = /vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/resource; + sourceTree = "<absolute>"; + }; + 24A2FFBE0F90D1DD003BB5A7 /* source */ = { + isa = PBXGroup; + children = ( + 24A2FFBF0F90D1DD003BB5A7 /* gmnames.h */, + 24A2FFC00F90D1DD003BB5A7 /* vstxsynth.cpp */, + 24A2FFC10F90D1DD003BB5A7 /* vstxsynth.h */, + 24A2FFC20F90D1DD003BB5A7 /* vstxsynthproc.cpp */, + ); + name = source; + path = /vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/source; + sourceTree = "<absolute>"; + }; + 24A2FFC30F90D1DD003BB5A7 /* win */ = { + isa = PBXGroup; + children = ( + 24A2FFC40F90D1DD003BB5A7 /* vstxsynth.vcproj */, + ); + name = win; + path = /vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/win; + sourceTree = "<absolute>"; + }; + 24A2FFC50F90D1DD003BB5A7 /* win */ = { + isa = PBXGroup; + children = ( + 24A2FFC60F90D1DD003BB5A7 /* samples.sln */, + 24A2FFC70F90D1DD003BB5A7 /* vstplug.def */, + ); + name = win; + path = /vstsdk2.4/public.sdk/samples/vst2.x/win; + sourceTree = "<absolute>"; + }; + 24A2FFC80F90D1DD003BB5A7 /* win.vc2003 */ = { + isa = PBXGroup; + children = ( + 24A2FFC90F90D1DD003BB5A7 /* adelay.vcproj */, + 24A2FFCA0F90D1DD003BB5A7 /* again.vcproj */, + 24A2FFCB0F90D1DD003BB5A7 /* minihost.vcproj */, + 24A2FFCC0F90D1DD003BB5A7 /* samples.sln */, + 24A2FFCD0F90D1DD003BB5A7 /* surrounddelay.vcproj */, + 24A2FFCE0F90D1DD003BB5A7 /* vstxsynth.vcproj */, + ); + name = win.vc2003; + path = /vstsdk2.4/public.sdk/samples/vst2.x/win.vc2003; + sourceTree = "<absolute>"; + }; + 24A2FFCF0F90D1DD003BB5A7 /* win.vc6 */ = { + isa = PBXGroup; + children = ( + 24A2FFD00F90D1DD003BB5A7 /* adelay.dsp */, + 24A2FFD10F90D1DD003BB5A7 /* again.dsp */, + 24A2FFD20F90D1DD003BB5A7 /* minihost.dsp */, + 24A2FFD30F90D1DD003BB5A7 /* samples.dsw */, + 24A2FFD40F90D1DD003BB5A7 /* surrounddelay.dsp */, + 24A2FFD50F90D1DD003BB5A7 /* vstxsynth.dsp */, + ); + name = win.vc6; + path = /vstsdk2.4/public.sdk/samples/vst2.x/win.vc6; + sourceTree = "<absolute>"; + }; + 24A2FFD60F90D1DD003BB5A7 /* source */ = { + isa = PBXGroup; + children = ( + 24A2FFD70F90D1DD003BB5A7 /* vst2.x */, + ); + name = source; + path = /vstsdk2.4/public.sdk/source; + sourceTree = "<absolute>"; + }; + 24A2FFD70F90D1DD003BB5A7 /* vst2.x */ = { + isa = PBXGroup; + children = ( + 24A2FFD80F90D1DD003BB5A7 /* aeffeditor.h */, + 24A2FFD90F90D1DD003BB5A7 /* audioeffect.cpp */, + 24A2FFDA0F90D1DD003BB5A7 /* audioeffect.h */, + 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */, + 24A2FFDC0F90D1DD003BB5A7 /* audioeffectx.h */, + 24A2FFDD0F90D1DD003BB5A7 /* vstplugmain.cpp */, + ); + name = vst2.x; + path = /vstsdk2.4/public.sdk/source/vst2.x; + sourceTree = "<absolute>"; + }; + 24A2FFDE0F90D1DD003BB5A7 /* vstgui.sf */ = { + isa = PBXGroup; + children = ( + 24A2FFDF0F90D1DD003BB5A7 /* drawtest */, + 24A200160F90D1DD003BB5A7 /* vstgui */, + ); + name = vstgui.sf; + path = /vstsdk2.4/vstgui.sf; + sourceTree = "<absolute>"; + }; + 24A2FFDF0F90D1DD003BB5A7 /* drawtest */ = { + isa = PBXGroup; + children = ( + 24A2FFE00F90D1DD003BB5A7 /* mac */, + 24A2FFEE0F90D1DD003BB5A7 /* resources */, + 24A200030F90D1DD003BB5A7 /* source */, + 24A2000F0F90D1DD003BB5A7 /* win */, + 24A200130F90D1DD003BB5A7 /* win.vc6 */, + ); + name = drawtest; + path = /vstsdk2.4/vstgui.sf/drawtest; + sourceTree = "<absolute>"; + }; + 24A2FFE00F90D1DD003BB5A7 /* mac */ = { + isa = PBXGroup; + children = ( + 24A2FFE10F90D1DD003BB5A7 /* audiounit.exp */, + 24A2FFE20F90D1DD003BB5A7 /* cw_vst_prefix.pch++ */, + 24A2FFE30F90D1DD003BB5A7 /* drawtest.cw9prj */, + 24A2FFE40F90D1DD003BB5A7 /* drawtest.plc */, + 24A2FFE50F90D1DD003BB5A7 /* drawtest.xcode */, + 24A2FFE80F90D1DD003BB5A7 /* drawtest.xcodeproj */, + 24A2FFEB0F90D1DD003BB5A7 /* Info.plist */, + 24A2FFEC0F90D1DD003BB5A7 /* xcode_au_prefix.h */, + 24A2FFED0F90D1DD003BB5A7 /* xcode_vst_prefix.h */, + ); + name = mac; + path = /vstsdk2.4/vstgui.sf/drawtest/mac; + sourceTree = "<absolute>"; + }; + 24A2FFEE0F90D1DD003BB5A7 /* resources */ = { + isa = PBXGroup; + children = ( + 24A2FFEF0F90D1DD003BB5A7 /* audiounit.r */, + 24A2FFF00F90D1DD003BB5A7 /* bmp00001.png */, + 24A2FFF10F90D1DD003BB5A7 /* bmp00100.png */, + 24A2FFF20F90D1DD003BB5A7 /* bmp01000.png */, + 24A2FFF30F90D1DD003BB5A7 /* bmp10001.bmp */, + 24A2FFF40F90D1DD003BB5A7 /* bmp10002.bmp */, + 24A2FFF50F90D1DD003BB5A7 /* bmp10003.bmp */, + 24A2FFF60F90D1DD003BB5A7 /* bmp10004.bmp */, + 24A2FFF70F90D1DD003BB5A7 /* bmp10005.bmp */, + 24A2FFF80F90D1DD003BB5A7 /* bmp10006.bmp */, + 24A2FFF90F90D1DD003BB5A7 /* bmp10007.bmp */, + 24A2FFFA0F90D1DD003BB5A7 /* bmp10008.bmp */, + 24A2FFFB0F90D1DD003BB5A7 /* bmp10009.bmp */, + 24A2FFFC0F90D1DD003BB5A7 /* bmp10010.bmp */, + 24A2FFFD0F90D1DD003BB5A7 /* bmp10011.bmp */, + 24A2FFFE0F90D1DD003BB5A7 /* bmp10012.bmp */, + 24A2FFFF0F90D1DD003BB5A7 /* bmp10013.bmp */, + 24A200000F90D1DD003BB5A7 /* bmp10014.bmp */, + 24A200010F90D1DD003BB5A7 /* bmp10015.bmp */, + 24A200020F90D1DD003BB5A7 /* bmp10016.bmp */, + ); + name = resources; + path = /vstsdk2.4/vstgui.sf/drawtest/resources; + sourceTree = "<absolute>"; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 8D01CCC70486CAD60068D4B7 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 245463B90991757100464AD3 /* DitherFloat.h in Headers */, + 24D8287F09A9164A0093AEF8 /* xcode_vst_prefix.h in Headers */, + 24A202190F90D1DE003BB5A7 /* aeffect.h in Headers */, + 24A2021A0F90D1DE003BB5A7 /* aeffectx.h in Headers */, + 24A2021B0F90D1DE003BB5A7 /* vstfxstore.h in Headers */, + 24A2021D0F90D1DE003BB5A7 /* adelay.h in Headers */, + 24A202240F90D1DE003BB5A7 /* sdeditor.h in Headers */, + 24A202260F90D1DE003BB5A7 /* surrounddelay.h in Headers */, + 24A2022A0F90D1DE003BB5A7 /* again.h in Headers */, + 24A202330F90D1DE003BB5A7 /* gmnames.h in Headers */, + 24A202350F90D1DE003BB5A7 /* vstxsynth.h in Headers */, + 24A202460F90D1DE003BB5A7 /* aeffeditor.h in Headers */, + 24A202480F90D1DE003BB5A7 /* audioeffect.h in Headers */, + 24A2024A0F90D1DE003BB5A7 /* audioeffectx.h in Headers */, + 24A2024D0F90D1DE003BB5A7 /* cw_vst_prefix.pch++ in Headers */, + 24A202510F90D1DE003BB5A7 /* xcode_au_prefix.h in Headers */, + 24A202520F90D1DE003BB5A7 /* xcode_vst_prefix.h in Headers */, + 24A202680F90D1DE003BB5A7 /* controlsgui.h in Headers */, + 24A2026A0F90D1DE003BB5A7 /* pdrawtesteditor.h in Headers */, + 24A2026C0F90D1DE003BB5A7 /* pdrawtesteffect.h in Headers */, + 24A2026F0F90D1DE003BB5A7 /* pdrawtestview.h in Headers */, + 24A202710F90D1DE003BB5A7 /* pprimitivesviews.h in Headers */, + 24A202780F90D1DE003BB5A7 /* aeffguieditor.h in Headers */, + 24A2027A0F90D1DE003BB5A7 /* cfileselector.h in Headers */, + 24A2027D0F90D1DE003BB5A7 /* cscrollview.h in Headers */, + 24A2027F0F90D1DE003BB5A7 /* ctabview.h in Headers */, + 24A203A50F90D1DE003BB5A7 /* plugguieditor.h in Headers */, + 24A203A70F90D1DE003BB5A7 /* vstcontrols.h in Headers */, + 24A203A90F90D1DE003BB5A7 /* vstgui.h in Headers */, + 24A203AA0F90D1DE003BB5A7 /* vstkeycode.h in Headers */, + 24A203AB0F90D1DE003BB5A7 /* vstplugscarbon.h in Headers */, + 24A203AC0F90D1DE003BB5A7 /* vstplugsmac.h in Headers */, + 24A203AD0F90D1DE003BB5A7 /* vstplugsmacho.h in Headers */, + 24A203AE0F90D1DE003BB5A7 /* vstplugsquartz.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 8D01CCC60486CAD60068D4B7 /* DitherFloat */ = { + isa = PBXNativeTarget; + buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "DitherFloat" */; + buildPhases = ( + 8D01CCC70486CAD60068D4B7 /* Headers */, + 8D01CCC90486CAD60068D4B7 /* Resources */, + 8D01CCCB0486CAD60068D4B7 /* Sources */, + 8D01CCCF0486CAD60068D4B7 /* Rez */, + 24CFB70807E7A07C0081BD57 /* Copy PkgInfo */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = DitherFloat; + productInstallPath = "$(HOME)/Library/Bundles"; + productName = "FM-Chopper"; + productReference = 2407DE920899296600EB68BF /* DitherFloat.vst */; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 089C1669FE841209C02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 24BEAAF108919AE700E695F9 /* Build configuration list for PBXProject "DitherFloat" */; + compatibilityVersion = "Xcode 2.4"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 089C166AFE841209C02AAC07 /* FM-Chopper */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 24A203E00F90D272003BB5A7 /* Products */; + ProjectRef = 24A2FFE50F90D1DD003BB5A7 /* drawtest.xcode */; + }, + { + ProductGroup = 24A203E80F90D272003BB5A7 /* Products */; + ProjectRef = 24A2FFE80F90D1DD003BB5A7 /* drawtest.xcodeproj */; + }, + { + ProductGroup = 24A203CE0F90D272003BB5A7 /* Products */; + ProjectRef = 24A2FFB00F90D1DD003BB5A7 /* vst 2.4 examples.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 8D01CCC60486CAD60068D4B7 /* DitherFloat */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 24A203D70F90D272003BB5A7 /* again.vst */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = again.vst; + remoteRef = 24A203D60F90D272003BB5A7 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 24A203D90F90D272003BB5A7 /* adelay.vst */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = adelay.vst; + remoteRef = 24A203D80F90D272003BB5A7 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 24A203DB0F90D272003BB5A7 /* vstxsynth.vst */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = vstxsynth.vst; + remoteRef = 24A203DA0F90D272003BB5A7 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 24A203DD0F90D272003BB5A7 /* surrounddelay.vst */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = surrounddelay.vst; + remoteRef = 24A203DC0F90D272003BB5A7 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 24A203DF0F90D272003BB5A7 /* minihost.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = minihost.app; + remoteRef = 24A203DE0F90D272003BB5A7 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 24A203E50F90D272003BB5A7 /* drawtest.component */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = drawtest.component; + remoteRef = 24A203E40F90D272003BB5A7 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 24A203E70F90D272003BB5A7 /* drawtest.vst */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = drawtest.vst; + remoteRef = 24A203E60F90D272003BB5A7 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 24A203ED0F90D272003BB5A7 /* drawtest.component */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = drawtest.component; + remoteRef = 24A203EC0F90D272003BB5A7 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 24A203EF0F90D272003BB5A7 /* drawtest.vst */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = drawtest.vst; + remoteRef = 24A203EE0F90D272003BB5A7 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D01CCC90486CAD60068D4B7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 24CFB70407E7A0220081BD57 /* PkgInfo in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXRezBuildPhase section */ + 8D01CCCF0486CAD60068D4B7 /* Rez */ = { + isa = PBXRezBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXRezBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 24CFB70807E7A07C0081BD57 /* Copy PkgInfo */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Copy PkgInfo"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/bash; + shellScript = "cp mac/PkgInfo \"$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.vst/Contents/\""; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D01CCCB0486CAD60068D4B7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2407DEB9089929BA00EB68BF /* DitherFloat.cpp in Sources */, + 24D8287009A914000093AEF8 /* DitherFloatProc.cpp in Sources */, + 24A203CB0F90D251003BB5A7 /* audioeffect.cpp in Sources */, + 24A203CC0F90D251003BB5A7 /* audioeffectx.cpp in Sources */, + 24A203CD0F90D251003BB5A7 /* vstplugmain.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 24BEAAEE08919AE700E695F9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_TRIGRAPHS = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = ""; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO; + GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; + GCC_WARN_UNKNOWN_PRAGMAS = NO; + HEADER_SEARCH_PATHS = "/vstsdk2.4/**"; + INFOPLIST_FILE = ./mac/Info.plist; + LIBRARY_SEARCH_PATHS = ""; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = Gain; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + WRAPPER_EXTENSION = vst; + }; + name = Debug; + }; + 24BEAAEF08919AE700E695F9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ( + ppc, + i386, + x86_64, + ); + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_ENABLE_TRIGRAPHS = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G4; + GCC_OPTIMIZATION_LEVEL = s; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = ""; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO; + GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; + GCC_WARN_UNKNOWN_PRAGMAS = NO; + HEADER_SEARCH_PATHS = "/vstsdk2.4/**"; + INFOPLIST_FILE = ./mac/Info.plist; + LIBRARY_SEARCH_PATHS = ""; + MACOSX_DEPLOYMENT_TARGET = 10.4; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = DitherFloat; + SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; + SECTORDER_FLAGS = ""; + SKIP_INSTALL = NO; + STRIP_INSTALLED_PRODUCT = YES; + STRIP_STYLE = all; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + WRAPPER_EXTENSION = vst; + }; + name = Release; + }; + 24BEAAF208919AE700E695F9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH)"; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1"; + INFOPLIST_FILE = ""; + INFOPLIST_PREPROCESS = NO; + }; + name = Debug; + }; + 24BEAAF308919AE700E695F9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1)"; + ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "x86_64 i386 ppc"; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_MODEL_TUNING = G4; + GCC_OPTIMIZATION_LEVEL = s; + INFOPLIST_FILE = ""; + INFOPLIST_PREPROCESS = NO; + SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.6.sdk"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "DitherFloat" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 24BEAAEE08919AE700E695F9 /* Debug */, + 24BEAAEF08919AE700E695F9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 24BEAAF108919AE700E695F9 /* Build configuration list for PBXProject "DitherFloat" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 24BEAAF208919AE700E695F9 /* Debug */, + 24BEAAF308919AE700E695F9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; +/* End XCConfigurationList section */ + }; + rootObject = 089C1669FE841209C02AAC07 /* Project object */; +} diff --git a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100755 index 0000000..a80c038 --- /dev/null +++ b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Workspace + version = "1.0"> + <FileRef + location = "self:Sample.xcodeproj"> + </FileRef> +</Workspace> diff --git a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate Binary files differnew file mode 100755 index 0000000..5c38f94 --- /dev/null +++ b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate Binary files differnew file mode 100755 index 0000000..314de0f --- /dev/null +++ b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/spiadmin.mode1v3 new file mode 100755 index 0000000..c572326 --- /dev/null +++ b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/spiadmin.mode1v3 @@ -0,0 +1,1372 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>ActivePerspectiveName</key> + <string>Project</string> + <key>AllowedModules</key> + <array> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXSmartGroupTreeModule</string> + <key>Name</key> + <string>Groups and Files Outline View</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Name</key> + <string>Editor</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>XCTaskListModule</string> + <key>Name</key> + <string>Task List</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>XCDetailModule</string> + <key>Name</key> + <string>File and Smart Group Detail Viewer</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>1</string> + <key>Module</key> + <string>PBXBuildResultsModule</string> + <key>Name</key> + <string>Detailed Build Results Viewer</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>1</string> + <key>Module</key> + <string>PBXProjectFindModule</string> + <key>Name</key> + <string>Project Batch Find Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>XCProjectFormatConflictsModule</string> + <key>Name</key> + <string>Project Format Conflicts List</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXBookmarksModule</string> + <key>Name</key> + <string>Bookmarks Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXClassBrowserModule</string> + <key>Name</key> + <string>Class Browser</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXCVSModule</string> + <key>Name</key> + <string>Source Code Control Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXDebugBreakpointsModule</string> + <key>Name</key> + <string>Debug Breakpoints Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>XCDockableInspector</string> + <key>Name</key> + <string>Inspector</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXOpenQuicklyModule</string> + <key>Name</key> + <string>Open Quickly Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>1</string> + <key>Module</key> + <string>PBXDebugSessionModule</string> + <key>Name</key> + <string>Debugger</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>1</string> + <key>Module</key> + <string>PBXDebugCLIModule</string> + <key>Name</key> + <string>Debug Console</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>XCSnapshotModule</string> + <key>Name</key> + <string>Snapshots Tool</string> + </dict> + </array> + <key>BundlePath</key> + <string>/Xcode3/Library/PrivateFrameworks/DevToolsInterface.framework/Resources</string> + <key>Description</key> + <string>DefaultDescriptionKey</string> + <key>DockingSystemVisible</key> + <false/> + <key>Extension</key> + <string>mode1v3</string> + <key>FavBarConfig</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>91857D9F148EF61800AAA11B</string> + <key>XCBarModuleItemNames</key> + <dict/> + <key>XCBarModuleItems</key> + <array/> + </dict> + <key>FirstTimeWindowDisplayed</key> + <false/> + <key>Identifier</key> + <string>com.apple.perspectives.project.mode1v3</string> + <key>MajorVersion</key> + <integer>33</integer> + <key>MinorVersion</key> + <integer>0</integer> + <key>Name</key> + <string>Default</string> + <key>Notifications</key> + <array/> + <key>OpenEditors</key> + <array/> + <key>PerspectiveWidths</key> + <array> + <integer>-1</integer> + <integer>-1</integer> + </array> + <key>Perspectives</key> + <array> + <dict> + <key>ChosenToolbarItems</key> + <array> + <string>active-combo-popup</string> + <string>action</string> + <string>NSToolbarFlexibleSpaceItem</string> + <string>debugger-enable-breakpoints</string> + <string>build-and-go</string> + <string>com.apple.ide.PBXToolbarStopButton</string> + <string>get-info</string> + <string>NSToolbarFlexibleSpaceItem</string> + <string>com.apple.pbx.toolbar.searchfield</string> + </array> + <key>ControllerClassBaseName</key> + <string></string> + <key>IconName</key> + <string>WindowOfProjectWithEditor</string> + <key>Identifier</key> + <string>perspective.project</string> + <key>IsVertical</key> + <false/> + <key>Layout</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXBottomSmartGroupGIDs</key> + <array> + <string>1C37FBAC04509CD000000102</string> + <string>1C37FAAC04509CD000000102</string> + <string>1C37FABC05509CD000000102</string> + <string>1C37FABC05539CD112110102</string> + <string>E2644B35053B69B200211256</string> + <string>1C37FABC04509CD000100104</string> + <string>1CC0EA4004350EF90044410B</string> + <string>1CC0EA4004350EF90041110B</string> + </array> + <key>PBXProjectModuleGUID</key> + <string>1CE0B1FE06471DED0097A5F4</string> + <key>PBXProjectModuleLabel</key> + <string>Files</string> + <key>PBXProjectStructureProvided</key> + <string>yes</string> + <key>PBXSmartGroupTreeModuleColumnData</key> + <dict> + <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> + <array> + <real>186</real> + </array> + <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> + <array> + <string>MainColumn</string> + </array> + </dict> + <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> + <dict> + <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> + <array> + <string>089C166AFE841209C02AAC07</string> + <string>089C1671FE841209C02AAC07</string> + <string>19C28FB4FE9D528D11CA2CBB</string> + <string>089C167CFE841241C02AAC07</string> + <string>08FB77ADFE841716C02AAC07</string> + <string>1C37FBAC04509CD000000102</string> + <string>1C37FABC05509CD000000102</string> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> + <array> + <array> + <integer>11</integer> + <integer>10</integer> + <integer>0</integer> + </array> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> + <string>{{0, 0}, {186, 693}}</string> + </dict> + <key>PBXTopSmartGroupGIDs</key> + <array/> + <key>XCIncludePerspectivesSwitch</key> + <true/> + <key>XCSharingToken</key> + <string>com.apple.Xcode.GFSharingToken</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {203, 711}}</string> + <key>GroupTreeTableConfiguration</key> + <array> + <string>MainColumn</string> + <real>186</real> + </array> + <key>RubberWindowFrame</key> + <string>286 197 1261 752 0 0 1680 1028 </string> + </dict> + <key>Module</key> + <string>PBXSmartGroupTreeModule</string> + <key>Proportion</key> + <string>203pt</string> + </dict> + <dict> + <key>Dock</key> + <array> + <dict> + <key>BecomeActive</key> + <true/> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CE0B20306471E060097A5F4</string> + <key>PBXProjectModuleLabel</key> + <string>Gain.cpp</string> + <key>PBXSplitModuleInNavigatorKey</key> + <dict> + <key>Split0</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CE0B20406471E060097A5F4</string> + <key>PBXProjectModuleLabel</key> + <string>Gain.cpp</string> + <key>_historyCapacity</key> + <integer>0</integer> + <key>bookmark</key> + <string>911C2A9D1491A5F600A430AF</string> + <key>history</key> + <array> + <string>915DCCBB1491A5B8008574E6</string> + </array> + </dict> + <key>SplitCount</key> + <string>1</string> + </dict> + <key>StatusBarVisibility</key> + <true/> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {1053, 508}}</string> + <key>RubberWindowFrame</key> + <string>286 197 1261 752 0 0 1680 1028 </string> + </dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>508pt</string> + </dict> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CE0B20506471E060097A5F4</string> + <key>PBXProjectModuleLabel</key> + <string>Detail</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 513}, {1053, 198}}</string> + <key>RubberWindowFrame</key> + <string>286 197 1261 752 0 0 1680 1028 </string> + </dict> + <key>Module</key> + <string>XCDetailModule</string> + <key>Proportion</key> + <string>198pt</string> + </dict> + </array> + <key>Proportion</key> + <string>1053pt</string> + </dict> + </array> + <key>Name</key> + <string>Project</string> + <key>ServiceClasses</key> + <array> + <string>XCModuleDock</string> + <string>PBXSmartGroupTreeModule</string> + <string>XCModuleDock</string> + <string>PBXNavigatorGroup</string> + <string>XCDetailModule</string> + </array> + <key>TableOfContents</key> + <array> + <string>911C2A901491A5F600A430AF</string> + <string>1CE0B1FE06471DED0097A5F4</string> + <string>911C2A911491A5F600A430AF</string> + <string>1CE0B20306471E060097A5F4</string> + <string>1CE0B20506471E060097A5F4</string> + </array> + <key>ToolbarConfigUserDefaultsMinorVersion</key> + <string>2</string> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.defaultV3</string> + </dict> + <dict> + <key>ControllerClassBaseName</key> + <string></string> + <key>IconName</key> + <string>WindowOfProject</string> + <key>Identifier</key> + <string>perspective.morph</string> + <key>IsVertical</key> + <integer>0</integer> + <key>Layout</key> + <array> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>PBXBottomSmartGroupGIDs</key> + <array> + <string>1C37FBAC04509CD000000102</string> + <string>1C37FAAC04509CD000000102</string> + <string>1C08E77C0454961000C914BD</string> + <string>1C37FABC05509CD000000102</string> + <string>1C37FABC05539CD112110102</string> + <string>E2644B35053B69B200211256</string> + <string>1C37FABC04509CD000100104</string> + <string>1CC0EA4004350EF90044410B</string> + <string>1CC0EA4004350EF90041110B</string> + </array> + <key>PBXProjectModuleGUID</key> + <string>11E0B1FE06471DED0097A5F4</string> + <key>PBXProjectModuleLabel</key> + <string>Files</string> + <key>PBXProjectStructureProvided</key> + <string>yes</string> + <key>PBXSmartGroupTreeModuleColumnData</key> + <dict> + <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> + <array> + <real>186</real> + </array> + <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> + <array> + <string>MainColumn</string> + </array> + </dict> + <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> + <dict> + <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> + <array> + <string>29B97314FDCFA39411CA2CEA</string> + <string>1C37FABC05509CD000000102</string> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> + <array> + <array> + <integer>0</integer> + </array> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> + <string>{{0, 0}, {186, 337}}</string> + </dict> + <key>PBXTopSmartGroupGIDs</key> + <array/> + <key>XCIncludePerspectivesSwitch</key> + <integer>1</integer> + <key>XCSharingToken</key> + <string>com.apple.Xcode.GFSharingToken</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {203, 355}}</string> + <key>GroupTreeTableConfiguration</key> + <array> + <string>MainColumn</string> + <real>186</real> + </array> + <key>RubberWindowFrame</key> + <string>373 269 690 397 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXSmartGroupTreeModule</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Morph</string> + <key>PreferredWidth</key> + <integer>300</integer> + <key>ServiceClasses</key> + <array> + <string>XCModuleDock</string> + <string>PBXSmartGroupTreeModule</string> + </array> + <key>TableOfContents</key> + <array> + <string>11E0B1FE06471DED0097A5F4</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.default.shortV3</string> + </dict> + </array> + <key>PerspectivesBarVisible</key> + <false/> + <key>ShelfIsVisible</key> + <false/> + <key>SourceDescription</key> + <string>file at '/Xcode3/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec'</string> + <key>StatusbarIsVisible</key> + <true/> + <key>TimeStamp</key> + <real>0.0</real> + <key>ToolbarConfigUserDefaultsMinorVersion</key> + <string>2</string> + <key>ToolbarDisplayMode</key> + <integer>1</integer> + <key>ToolbarIsVisible</key> + <true/> + <key>ToolbarSizeMode</key> + <integer>1</integer> + <key>Type</key> + <string>Perspectives</string> + <key>UpdateMessage</key> + <string>The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'?</string> + <key>WindowJustification</key> + <integer>5</integer> + <key>WindowOrderList</key> + <array> + <string>91857DA0148EF61800AAA11B</string> + <string>/Users/spiadmin/Documents/Gain/Gain.xcodeproj</string> + </array> + <key>WindowString</key> + <string>286 197 1261 752 0 0 1680 1028 </string> + <key>WindowToolsV3</key> + <array> + <dict> + <key>FirstTimeWindowDisplayed</key> + <false/> + <key>Identifier</key> + <string>windowTool.build</string> + <key>IsVertical</key> + <true/> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CD0528F0623707200166675</string> + <key>PBXProjectModuleLabel</key> + <string></string> + <key>StatusBarVisibility</key> + <true/> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {743, 413}}</string> + <key>RubberWindowFrame</key> + <string>112 208 743 695 0 0 1680 1028 </string> + </dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>413pt</string> + </dict> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>XCMainBuildResultsModuleGUID</string> + <key>PBXProjectModuleLabel</key> + <string>Build Results</string> + <key>XCBuildResultsTrigger_Collapse</key> + <integer>1021</integer> + <key>XCBuildResultsTrigger_Open</key> + <integer>1011</integer> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 418}, {743, 236}}</string> + <key>RubberWindowFrame</key> + <string>112 208 743 695 0 0 1680 1028 </string> + </dict> + <key>Module</key> + <string>PBXBuildResultsModule</string> + <key>Proportion</key> + <string>236pt</string> + </dict> + </array> + <key>Proportion</key> + <string>654pt</string> + </dict> + </array> + <key>Name</key> + <string>Build Results</string> + <key>ServiceClasses</key> + <array> + <string>PBXBuildResultsModule</string> + </array> + <key>StatusbarIsVisible</key> + <true/> + <key>TableOfContents</key> + <array> + <string>91857DA0148EF61800AAA11B</string> + <string>911C2A921491A5F600A430AF</string> + <string>1CD0528F0623707200166675</string> + <string>XCMainBuildResultsModuleGUID</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.buildV3</string> + <key>WindowContentMinSize</key> + <string>486 300</string> + <key>WindowString</key> + <string>112 208 743 695 0 0 1680 1028 </string> + <key>WindowToolGUID</key> + <string>91857DA0148EF61800AAA11B</string> + <key>WindowToolIsVisible</key> + <false/> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.debugger</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>Debugger</key> + <dict> + <key>HorizontalSplitView</key> + <dict> + <key>_collapsingFrameDimension</key> + <real>0.0</real> + <key>_indexOfCollapsedView</key> + <integer>0</integer> + <key>_percentageOfCollapsedView</key> + <real>0.0</real> + <key>isCollapsed</key> + <string>yes</string> + <key>sizes</key> + <array> + <string>{{0, 0}, {317, 164}}</string> + <string>{{317, 0}, {377, 164}}</string> + </array> + </dict> + <key>VerticalSplitView</key> + <dict> + <key>_collapsingFrameDimension</key> + <real>0.0</real> + <key>_indexOfCollapsedView</key> + <integer>0</integer> + <key>_percentageOfCollapsedView</key> + <real>0.0</real> + <key>isCollapsed</key> + <string>yes</string> + <key>sizes</key> + <array> + <string>{{0, 0}, {694, 164}}</string> + <string>{{0, 164}, {694, 216}}</string> + </array> + </dict> + </dict> + <key>LauncherConfigVersion</key> + <string>8</string> + <key>PBXProjectModuleGUID</key> + <string>1C162984064C10D400B95A72</string> + <key>PBXProjectModuleLabel</key> + <string>Debug - GLUTExamples (Underwater)</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>DebugConsoleDrawerSize</key> + <string>{100, 120}</string> + <key>DebugConsoleVisible</key> + <string>None</string> + <key>DebugConsoleWindowFrame</key> + <string>{{200, 200}, {500, 300}}</string> + <key>DebugSTDIOWindowFrame</key> + <string>{{200, 200}, {500, 300}}</string> + <key>Frame</key> + <string>{{0, 0}, {694, 380}}</string> + <key>RubberWindowFrame</key> + <string>321 238 694 422 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXDebugSessionModule</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Debugger</string> + <key>ServiceClasses</key> + <array> + <string>PBXDebugSessionModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1CD10A99069EF8BA00B06720</string> + <string>1C0AD2AB069F1E9B00FABCE6</string> + <string>1C162984064C10D400B95A72</string> + <string>1C0AD2AC069F1E9B00FABCE6</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.debugV3</string> + <key>WindowString</key> + <string>321 238 694 422 0 0 1440 878 </string> + <key>WindowToolGUID</key> + <string>1CD10A99069EF8BA00B06720</string> + <key>WindowToolIsVisible</key> + <integer>0</integer> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.find</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CDD528C0622207200134675</string> + <key>PBXProjectModuleLabel</key> + <string><No Editor></string> + <key>PBXSplitModuleInNavigatorKey</key> + <dict> + <key>Split0</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CD0528D0623707200166675</string> + </dict> + <key>SplitCount</key> + <string>1</string> + </dict> + <key>StatusBarVisibility</key> + <integer>1</integer> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {781, 167}}</string> + <key>RubberWindowFrame</key> + <string>62 385 781 470 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>781pt</string> + </dict> + </array> + <key>Proportion</key> + <string>50%</string> + </dict> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CD0528E0623707200166675</string> + <key>PBXProjectModuleLabel</key> + <string>Project Find</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{8, 0}, {773, 254}}</string> + <key>RubberWindowFrame</key> + <string>62 385 781 470 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXProjectFindModule</string> + <key>Proportion</key> + <string>50%</string> + </dict> + </array> + <key>Proportion</key> + <string>428pt</string> + </dict> + </array> + <key>Name</key> + <string>Project Find</string> + <key>ServiceClasses</key> + <array> + <string>PBXProjectFindModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1C530D57069F1CE1000CFCEE</string> + <string>1C530D58069F1CE1000CFCEE</string> + <string>1C530D59069F1CE1000CFCEE</string> + <string>1CDD528C0622207200134675</string> + <string>1C530D5A069F1CE1000CFCEE</string> + <string>1CE0B1FE06471DED0097A5F4</string> + <string>1CD0528E0623707200166675</string> + </array> + <key>WindowString</key> + <string>62 385 781 470 0 0 1440 878 </string> + <key>WindowToolGUID</key> + <string>1C530D57069F1CE1000CFCEE</string> + <key>WindowToolIsVisible</key> + <integer>0</integer> + </dict> + <dict> + <key>Identifier</key> + <string>MENUSEPARATOR</string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.debuggerConsole</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1C78EAAC065D492600B07095</string> + <key>PBXProjectModuleLabel</key> + <string>Debugger Console</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {650, 250}}</string> + <key>RubberWindowFrame</key> + <string>516 632 650 250 0 0 1680 1027 </string> + </dict> + <key>Module</key> + <string>PBXDebugCLIModule</string> + <key>Proportion</key> + <string>209pt</string> + </dict> + </array> + <key>Proportion</key> + <string>209pt</string> + </dict> + </array> + <key>Name</key> + <string>Debugger Console</string> + <key>ServiceClasses</key> + <array> + <string>PBXDebugCLIModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1C78EAAD065D492600B07095</string> + <string>1C78EAAE065D492600B07095</string> + <string>1C78EAAC065D492600B07095</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.consoleV3</string> + <key>WindowString</key> + <string>650 41 650 250 0 0 1280 1002 </string> + <key>WindowToolGUID</key> + <string>1C78EAAD065D492600B07095</string> + <key>WindowToolIsVisible</key> + <integer>0</integer> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.snapshots</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>Module</key> + <string>XCSnapshotModule</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Snapshots</string> + <key>ServiceClasses</key> + <array> + <string>XCSnapshotModule</string> + </array> + <key>StatusbarIsVisible</key> + <string>Yes</string> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.snapshots</string> + <key>WindowString</key> + <string>315 824 300 550 0 0 1440 878 </string> + <key>WindowToolIsVisible</key> + <string>Yes</string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.scm</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1C78EAB2065D492600B07095</string> + <key>PBXProjectModuleLabel</key> + <string><No Editor></string> + <key>PBXSplitModuleInNavigatorKey</key> + <dict> + <key>Split0</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1C78EAB3065D492600B07095</string> + </dict> + <key>SplitCount</key> + <string>1</string> + </dict> + <key>StatusBarVisibility</key> + <integer>1</integer> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {452, 0}}</string> + <key>RubberWindowFrame</key> + <string>743 379 452 308 0 0 1280 1002 </string> + </dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>0pt</string> + </dict> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CD052920623707200166675</string> + <key>PBXProjectModuleLabel</key> + <string>SCM</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>ConsoleFrame</key> + <string>{{0, 259}, {452, 0}}</string> + <key>Frame</key> + <string>{{0, 7}, {452, 259}}</string> + <key>RubberWindowFrame</key> + <string>743 379 452 308 0 0 1280 1002 </string> + <key>TableConfiguration</key> + <array> + <string>Status</string> + <real>30</real> + <string>FileName</string> + <real>199</real> + <string>Path</string> + <real>197.0950012207031</real> + </array> + <key>TableFrame</key> + <string>{{0, 0}, {452, 250}}</string> + </dict> + <key>Module</key> + <string>PBXCVSModule</string> + <key>Proportion</key> + <string>262pt</string> + </dict> + </array> + <key>Proportion</key> + <string>266pt</string> + </dict> + </array> + <key>Name</key> + <string>SCM</string> + <key>ServiceClasses</key> + <array> + <string>PBXCVSModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1C78EAB4065D492600B07095</string> + <string>1C78EAB5065D492600B07095</string> + <string>1C78EAB2065D492600B07095</string> + <string>1CD052920623707200166675</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.scm</string> + <key>WindowString</key> + <string>743 379 452 308 0 0 1280 1002 </string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.breakpoints</string> + <key>IsVertical</key> + <integer>0</integer> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>PBXBottomSmartGroupGIDs</key> + <array> + <string>1C77FABC04509CD000000102</string> + </array> + <key>PBXProjectModuleGUID</key> + <string>1CE0B1FE06471DED0097A5F4</string> + <key>PBXProjectModuleLabel</key> + <string>Files</string> + <key>PBXProjectStructureProvided</key> + <string>no</string> + <key>PBXSmartGroupTreeModuleColumnData</key> + <dict> + <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> + <array> + <real>168</real> + </array> + <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> + <array> + <string>MainColumn</string> + </array> + </dict> + <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> + <dict> + <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> + <array> + <string>1C77FABC04509CD000000102</string> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> + <array> + <array> + <integer>0</integer> + </array> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> + <string>{{0, 0}, {168, 350}}</string> + </dict> + <key>PBXTopSmartGroupGIDs</key> + <array/> + <key>XCIncludePerspectivesSwitch</key> + <integer>0</integer> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {185, 368}}</string> + <key>GroupTreeTableConfiguration</key> + <array> + <string>MainColumn</string> + <real>168</real> + </array> + <key>RubberWindowFrame</key> + <string>315 424 744 409 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXSmartGroupTreeModule</string> + <key>Proportion</key> + <string>185pt</string> + </dict> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CA1AED706398EBD00589147</string> + <key>PBXProjectModuleLabel</key> + <string>Detail</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{190, 0}, {554, 368}}</string> + <key>RubberWindowFrame</key> + <string>315 424 744 409 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>XCDetailModule</string> + <key>Proportion</key> + <string>554pt</string> + </dict> + </array> + <key>Proportion</key> + <string>368pt</string> + </dict> + </array> + <key>MajorVersion</key> + <integer>3</integer> + <key>MinorVersion</key> + <integer>0</integer> + <key>Name</key> + <string>Breakpoints</string> + <key>ServiceClasses</key> + <array> + <string>PBXSmartGroupTreeModule</string> + <string>XCDetailModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1CDDB66807F98D9800BB5817</string> + <string>1CDDB66907F98D9800BB5817</string> + <string>1CE0B1FE06471DED0097A5F4</string> + <string>1CA1AED706398EBD00589147</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.breakpointsV3</string> + <key>WindowString</key> + <string>315 424 744 409 0 0 1440 878 </string> + <key>WindowToolGUID</key> + <string>1CDDB66807F98D9800BB5817</string> + <key>WindowToolIsVisible</key> + <integer>1</integer> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.debugAnimator</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Debug Visualizer</string> + <key>ServiceClasses</key> + <array> + <string>PBXNavigatorGroup</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.debugAnimatorV3</string> + <key>WindowString</key> + <string>100 100 700 500 0 0 1280 1002 </string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.bookmarks</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>Module</key> + <string>PBXBookmarksModule</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Bookmarks</string> + <key>ServiceClasses</key> + <array> + <string>PBXBookmarksModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>0</integer> + <key>WindowString</key> + <string>538 42 401 187 0 0 1280 1002 </string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.projectFormatConflicts</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>Module</key> + <string>XCProjectFormatConflictsModule</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Project Format Conflicts</string> + <key>ServiceClasses</key> + <array> + <string>XCProjectFormatConflictsModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>0</integer> + <key>WindowContentMinSize</key> + <string>450 300</string> + <key>WindowString</key> + <string>50 850 472 307 0 0 1440 877</string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.classBrowser</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>OptionsSetName</key> + <string>Hierarchy, all classes</string> + <key>PBXProjectModuleGUID</key> + <string>1CA6456E063B45B4001379D8</string> + <key>PBXProjectModuleLabel</key> + <string>Class Browser - NSObject</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>ClassesFrame</key> + <string>{{0, 0}, {374, 96}}</string> + <key>ClassesTreeTableConfiguration</key> + <array> + <string>PBXClassNameColumnIdentifier</string> + <real>208</real> + <string>PBXClassBookColumnIdentifier</string> + <real>22</real> + </array> + <key>Frame</key> + <string>{{0, 0}, {630, 331}}</string> + <key>MembersFrame</key> + <string>{{0, 105}, {374, 395}}</string> + <key>MembersTreeTableConfiguration</key> + <array> + <string>PBXMemberTypeIconColumnIdentifier</string> + <real>22</real> + <string>PBXMemberNameColumnIdentifier</string> + <real>216</real> + <string>PBXMemberTypeColumnIdentifier</string> + <real>97</real> + <string>PBXMemberBookColumnIdentifier</string> + <real>22</real> + </array> + <key>PBXModuleWindowStatusBarHidden2</key> + <integer>1</integer> + <key>RubberWindowFrame</key> + <string>385 179 630 352 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXClassBrowserModule</string> + <key>Proportion</key> + <string>332pt</string> + </dict> + </array> + <key>Proportion</key> + <string>332pt</string> + </dict> + </array> + <key>Name</key> + <string>Class Browser</string> + <key>ServiceClasses</key> + <array> + <string>PBXClassBrowserModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>0</integer> + <key>TableOfContents</key> + <array> + <string>1C0AD2AF069F1E9B00FABCE6</string> + <string>1C0AD2B0069F1E9B00FABCE6</string> + <string>1CA6456E063B45B4001379D8</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.classbrowser</string> + <key>WindowString</key> + <string>385 179 630 352 0 0 1440 878 </string> + <key>WindowToolGUID</key> + <string>1C0AD2AF069F1E9B00FABCE6</string> + <key>WindowToolIsVisible</key> + <integer>0</integer> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.refactoring</string> + <key>IncludeInToolsMenu</key> + <integer>0</integer> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{0, 0}, {500, 335}</string> + <key>RubberWindowFrame</key> + <string>{0, 0}, {500, 335}</string> + </dict> + <key>Module</key> + <string>XCRefactoringModule</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Refactoring</string> + <key>ServiceClasses</key> + <array> + <string>XCRefactoringModule</string> + </array> + <key>WindowString</key> + <string>200 200 500 356 0 0 1920 1200 </string> + </dict> + </array> +</dict> +</plist> diff --git a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/spiadmin.pbxuser new file mode 100755 index 0000000..df94780 --- /dev/null +++ b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/spiadmin.pbxuser @@ -0,0 +1,143 @@ +// !$*UTF8*$! +{ + 089C1669FE841209C02AAC07 /* Project object */ = { + activeBuildConfigurationName = Release; + activeTarget = 8D01CCC60486CAD60068D4B7 /* Gain */; + codeSenseManager = 91857D95148EF55400AAA11B /* Code sense */; + perUserDictionary = { + PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 829, + 20, + 48, + 43, + 43, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + PBXFileDataSource_Target_ColumnID, + ); + }; + PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 789, + 60, + 20, + 48, + 43, + 43, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXTargetDataSource_PrimaryAttribute, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + ); + }; + PBXPerProjectTemplateStateSaveDate = 345089498; + PBXWorkspaceStateSaveDate = 345089498; + }; + perUserProjectItems = { + 911C2A9D1491A5F600A430AF /* PBXTextBookmark */ = 911C2A9D1491A5F600A430AF /* PBXTextBookmark */; + 915DCCBB1491A5B8008574E6 /* PBXTextBookmark */ = 915DCCBB1491A5B8008574E6 /* PBXTextBookmark */; + }; + sourceControlManager = 91857D94148EF55400AAA11B /* Source Control */; + userBuildSettings = { + }; + }; + 2407DEB6089929BA00EB68BF /* Gain.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {992, 1768}}"; + sepNavSelRange = "{247, 0}"; + sepNavVisRange = "{0, 1657}"; + }; + }; + 245463B80991757100464AD3 /* Gain.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {992, 975}}"; + sepNavSelRange = "{1552, 0}"; + sepNavVisRange = "{796, 1857}"; + sepNavWindowFrame = "{{15, 465}, {750, 558}}"; + }; + }; + 24A2FF9A0F90D1DD003BB5A7 /* adelaymain.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {992, 488}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 798}"; + }; + }; + 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {859, 19825}}"; + sepNavSelRange = "{10641, 0}"; + sepNavVisRange = "{10076, 1095}"; + }; + }; + 24D8286F09A914000093AEF8 /* GainProc.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {992, 482}}"; + sepNavSelRange = "{239, 0}"; + sepNavVisRange = "{0, 950}"; + }; + }; + 24D8287E09A9164A0093AEF8 /* xcode_vst_prefix.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {992, 493}}"; + sepNavSelRange = "{249, 0}"; + sepNavVisRange = "{0, 249}"; + }; + }; + 8D01CCC60486CAD60068D4B7 /* Gain */ = { + activeExec = 0; + }; + 911C2A9D1491A5F600A430AF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2407DEB6089929BA00EB68BF /* Gain.cpp */; + name = "Gain.cpp: 10"; + rLen = 0; + rLoc = 247; + rType = 0; + vrLen = 1657; + vrLoc = 0; + }; + 915DCCBB1491A5B8008574E6 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2407DEB6089929BA00EB68BF /* Gain.cpp */; + name = "Gain.cpp: 10"; + rLen = 0; + rLoc = 247; + rType = 0; + vrLen = 1625; + vrLoc = 0; + }; + 91857D94148EF55400AAA11B /* Source Control */ = { + isa = PBXSourceControlManager; + fallbackIsa = XCSourceControlManager; + isSCMEnabled = 0; + scmConfiguration = { + repositoryNamesForRoots = { + "" = ""; + }; + }; + }; + 91857D95148EF55400AAA11B /* Code sense */ = { + isa = PBXCodeSenseManager; + indexTemplatePath = ""; + }; +} diff --git a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme new file mode 100755 index 0000000..8ee693f --- /dev/null +++ b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme @@ -0,0 +1,80 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Scheme + LastUpgradeVersion = "0720" + version = "1.3"> + <BuildAction + parallelizeBuildables = "YES" + buildImplicitDependencies = "YES"> + <BuildActionEntries> + <BuildActionEntry + buildForTesting = "YES" + buildForRunning = "YES" + buildForProfiling = "YES" + buildForArchiving = "YES" + buildForAnalyzing = "YES"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "8D01CCC60486CAD60068D4B7" + BuildableName = "Gain.vst" + BlueprintName = "Gain" + ReferencedContainer = "container:Gain.xcodeproj"> + </BuildableReference> + </BuildActionEntry> + </BuildActionEntries> + </BuildAction> + <TestAction + buildConfiguration = "Debug" + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + shouldUseLaunchSchemeArgsEnv = "YES"> + <Testables> + </Testables> + <AdditionalOptions> + </AdditionalOptions> + </TestAction> + <LaunchAction + buildConfiguration = "Debug" + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + launchStyle = "0" + useCustomWorkingDirectory = "NO" + ignoresPersistentStateOnLaunch = "NO" + debugDocumentVersioning = "YES" + debugServiceExtension = "internal" + allowLocationSimulation = "YES"> + <MacroExpansion> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "8D01CCC60486CAD60068D4B7" + BuildableName = "Gain.vst" + BlueprintName = "Gain" + ReferencedContainer = "container:Gain.xcodeproj"> + </BuildableReference> + </MacroExpansion> + <AdditionalOptions> + </AdditionalOptions> + </LaunchAction> + <ProfileAction + buildConfiguration = "Release" + shouldUseLaunchSchemeArgsEnv = "YES" + savedToolIdentifier = "" + useCustomWorkingDirectory = "NO" + debugDocumentVersioning = "YES"> + <MacroExpansion> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "8D01CCC60486CAD60068D4B7" + BuildableName = "Gain.vst" + BlueprintName = "Gain" + ReferencedContainer = "container:Gain.xcodeproj"> + </BuildableReference> + </MacroExpansion> + </ProfileAction> + <AnalyzeAction + buildConfiguration = "Debug"> + </AnalyzeAction> + <ArchiveAction + buildConfiguration = "Release" + revealArchiveInOrganizer = "YES"> + </ArchiveAction> +</Scheme> diff --git a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100755 index 0000000..5bccbcb --- /dev/null +++ b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>SchemeUserState</key> + <dict> + <key>Gain.xcscheme</key> + <dict> + <key>orderHint</key> + <integer>8</integer> + </dict> + </dict> + <key>SuppressBuildableAutocreation</key> + <dict> + <key>8D01CCC60486CAD60068D4B7</key> + <dict> + <key>primary</key> + <true/> + </dict> + </dict> +</dict> +</plist> diff --git a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100755 index 0000000..a7bdd62 --- /dev/null +++ b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>SchemeUserState</key> + <dict> + <key>«PROJECTNAME».xcscheme</key> + <dict> + <key>orderHint</key> + <integer>0</integer> + </dict> + </dict> + <key>SuppressBuildableAutocreation</key> + <dict> + <key>8D01CCC60486CAD60068D4B7</key> + <dict> + <key>primary</key> + <true/> + </dict> + </dict> +</dict> +</plist> diff --git a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme new file mode 100755 index 0000000..0df2de4 --- /dev/null +++ b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Scheme + version = "1.3"> + <BuildAction + parallelizeBuildables = "YES" + buildImplicitDependencies = "YES"> + <BuildActionEntries> + <BuildActionEntry + buildForTesting = "YES" + buildForRunning = "YES" + buildForProfiling = "YES" + buildForArchiving = "YES" + buildForAnalyzing = "YES"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "8D01CCC60486CAD60068D4B7" + BuildableName = "«PROJECTNAME».vst" + BlueprintName = "«PROJECTNAME»" + ReferencedContainer = "container:Sample.xcodeproj"> + </BuildableReference> + </BuildActionEntry> + </BuildActionEntries> + </BuildAction> + <TestAction + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB" + shouldUseLaunchSchemeArgsEnv = "YES" + buildConfiguration = "Debug"> + <Testables> + </Testables> + </TestAction> + <LaunchAction + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB" + launchStyle = "0" + useCustomWorkingDirectory = "NO" + buildConfiguration = "Debug" + debugDocumentVersioning = "YES" + allowLocationSimulation = "YES"> + <AdditionalOptions> + </AdditionalOptions> + </LaunchAction> + <ProfileAction + shouldUseLaunchSchemeArgsEnv = "YES" + savedToolIdentifier = "" + useCustomWorkingDirectory = "NO" + buildConfiguration = "Release" + debugDocumentVersioning = "YES"> + </ProfileAction> + <AnalyzeAction + buildConfiguration = "Debug"> + </AnalyzeAction> + <ArchiveAction + buildConfiguration = "Release" + revealArchiveInOrganizer = "YES"> + </ArchiveAction> +</Scheme> diff --git a/plugins/MacVST/DitherFloat/mac/Info.plist b/plugins/MacVST/DitherFloat/mac/Info.plist new file mode 100755 index 0000000..8167b96 --- /dev/null +++ b/plugins/MacVST/DitherFloat/mac/Info.plist @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleExecutable</key> + <string>DitherFloat</string> + <key>CFBundleIconFile</key> + <string></string> + <key>CFBundleIdentifier</key> + <string>com.airwindows.DitherFloat</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundlePackageType</key> + <string>BNDL</string> + <key>CFBundleSignature</key> + <string>Dthr</string> + <key>CFBundleVersion</key> + <string>1.0</string> + <key>CSResourcesFileMapped</key> + <true/> +</dict> +</plist> diff --git a/plugins/MacVST/DitherFloat/mac/PkgInfo b/plugins/MacVST/DitherFloat/mac/PkgInfo new file mode 100755 index 0000000..19a9cf6 --- /dev/null +++ b/plugins/MacVST/DitherFloat/mac/PkgInfo @@ -0,0 +1 @@ +BNDL????
\ No newline at end of file diff --git a/plugins/MacVST/DitherFloat/mac/xcode_vst_prefix.h b/plugins/MacVST/DitherFloat/mac/xcode_vst_prefix.h new file mode 100755 index 0000000..eaf4c0b --- /dev/null +++ b/plugins/MacVST/DitherFloat/mac/xcode_vst_prefix.h @@ -0,0 +1,17 @@ +#define MAC 1 +#define MACX 1 + +#define USE_NAMESPACE 0 + +#define TARGET_API_MAC_CARBON 1 +#define USENAVSERVICES 1 + +#define __CF_USE_FRAMEWORK_INCLUDES__ + +#if __MWERKS__ +#define __NOEXTENSIONS__ +#endif + +#define QUARTZ 1 + +#include <AvailabilityMacros.h>
\ No newline at end of file diff --git a/plugins/MacVST/DitherFloat/source/DitherFloat.cpp b/plugins/MacVST/DitherFloat/source/DitherFloat.cpp new file mode 100755 index 0000000..ffd9e94 --- /dev/null +++ b/plugins/MacVST/DitherFloat/source/DitherFloat.cpp @@ -0,0 +1,127 @@ +/* ======================================== + * DitherFloat - DitherFloat.h + * Copyright (c) 2016 airwindows, All rights reserved + * ======================================== */ + +#ifndef __DitherFloat_H +#include "DitherFloat.h" +#endif + +AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new DitherFloat(audioMaster);} + +DitherFloat::DitherFloat(audioMasterCallback audioMaster) : + AudioEffectX(audioMaster, kNumPrograms, kNumParameters) +{ + A = 0.0; + B = 1.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + + _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. + _canDo.insert("plugAsSend"); // plug-in can be used as a send effect. + _canDo.insert("x2in2out"); + setNumInputs(kNumInputs); + setNumOutputs(kNumOutputs); + setUniqueID(kUniqueId); + canProcessReplacing(); // supports output replacing + canDoubleReplacing(); // supports double precision processing + programsAreChunks(true); + vst_strncpy (_programName, "Default", kVstMaxProgNameLen); // default program name +} + +DitherFloat::~DitherFloat() {} +VstInt32 DitherFloat::getVendorVersion () {return 1000;} +void DitherFloat::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);} +void DitherFloat::getProgramName(char *name) {vst_strncpy (name, _programName, kVstMaxProgNameLen);} +//airwindows likes to ignore this stuff. Make your own programs, and make a different plugin rather than +//trying to do versioning and preventing people from using older versions. Maybe they like the old one! + +static float pinParameter(float data) +{ + if (data < 0.0f) return 0.0f; + if (data > 1.0f) return 1.0f; + return data; +} + +VstInt32 DitherFloat::getChunk (void** data, bool isPreset) +{ + float *chunkData = (float *)calloc(kNumParameters, sizeof(float)); + chunkData[0] = A; + chunkData[1] = B; + /* Note: The way this is set up, it will break if you manage to save settings on an Intel + machine and load them on a PPC Mac. However, it's fine if you stick to the machine you + started with. */ + + *data = chunkData; + return kNumParameters * sizeof(float); +} + +VstInt32 DitherFloat::setChunk (void* data, VstInt32 byteSize, bool isPreset) +{ + float *chunkData = (float *)data; + A = pinParameter(chunkData[0]); + B = pinParameter(chunkData[1]); + /* We're ignoring byteSize as we found it to be a filthy liar */ + + /* calculate any other fields you need here - you could copy in + code from setParameter() here. */ + return 0; +} + +void DitherFloat::setParameter(VstInt32 index, float value) { + switch (index) { + case kParamA: A = value; break; + case kParamB: B = value; break; + default: throw; // unknown parameter, shouldn't happen! + } +} + +float DitherFloat::getParameter(VstInt32 index) { + switch (index) { + case kParamA: return A; break; + case kParamB: return B; break; + default: break; // unknown parameter, shouldn't happen! + } return 0.0; //we only need to update the relevant name, this is simple to manage +} + +void DitherFloat::getParameterName(VstInt32 index, char *text) { + switch (index) { + case kParamA: vst_strncpy (text, "Offset", kVstMaxParamStrLen); break; + case kParamB: vst_strncpy (text, "Dither", kVstMaxParamStrLen); break; + default: break; // unknown parameter, shouldn't happen! + } //this is our labels for displaying in the VST host +} + +void DitherFloat::getParameterDisplay(VstInt32 index, char *text) { + switch (index) { + case kParamA: int2string ((VstInt32)(A * 32), text, kVstMaxParamStrLen); break; + case kParamB: float2string (B, text, kVstMaxParamStrLen); break; + default: break; // unknown parameter, shouldn't happen! + } //this displays the values and handles 'popups' where it's discrete choices +} + +void DitherFloat::getParameterLabel(VstInt32 index, char *text) { + switch (index) { + case kParamA: vst_strncpy (text, "", kVstMaxParamStrLen); break; + case kParamB: vst_strncpy (text, "", kVstMaxParamStrLen); break; + default: break; // unknown parameter, shouldn't happen! + } +} + +VstInt32 DitherFloat::canDo(char *text) +{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know + +bool DitherFloat::getEffectName(char* name) { + vst_strncpy(name, "DitherFloat", kVstMaxProductStrLen); return true; +} + +VstPlugCategory DitherFloat::getPlugCategory() {return kPlugCategEffect;} + +bool DitherFloat::getProductString(char* text) { + vst_strncpy (text, "airwindows DitherFloat", kVstMaxProductStrLen); return true; +} + +bool DitherFloat::getVendorString(char* text) { + vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true; +} diff --git a/plugins/MacVST/DitherFloat/source/DitherFloat.h b/plugins/MacVST/DitherFloat/source/DitherFloat.h new file mode 100755 index 0000000..b8ddf51 --- /dev/null +++ b/plugins/MacVST/DitherFloat/source/DitherFloat.h @@ -0,0 +1,64 @@ +/* ======================================== + * DitherFloat - DitherFloat.h + * Created 8/12/11 by SPIAdmin + * Copyright (c) 2011 __MyCompanyName__, All rights reserved + * ======================================== */ + +#ifndef __DitherFloat_H +#define __DitherFloat_H + +#ifndef __audioeffect__ +#include "audioeffectx.h" +#endif + +#include <set> +#include <string> +#include <math.h> + +enum { + kParamA = 0, + kParamB = 1, + kNumParameters = 2 +}; // + +const int kNumPrograms = 0; +const int kNumInputs = 2; +const int kNumOutputs = 2; +const unsigned long kUniqueId = 'dthf'; //Change this to what the AU identity is! + +class DitherFloat : + public AudioEffectX +{ +public: + DitherFloat(audioMasterCallback audioMaster); + ~DitherFloat(); + virtual bool getEffectName(char* name); // The plug-in name + virtual VstPlugCategory getPlugCategory(); // The general category for the plug-in + virtual bool getProductString(char* text); // This is a unique plug-in string provided by Steinberg + virtual bool getVendorString(char* text); // Vendor info + virtual VstInt32 getVendorVersion(); // Version number + virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames); + virtual void processDoubleReplacing (double** inputs, double** outputs, VstInt32 sampleFrames); + virtual void getProgramName(char *name); // read the name from the host + virtual void setProgramName(char *name); // changes the name of the preset displayed in the host + virtual VstInt32 getChunk (void** data, bool isPreset); + virtual VstInt32 setChunk (void* data, VstInt32 byteSize, bool isPreset); + virtual float getParameter(VstInt32 index); // get the parameter value at the specified index + virtual void setParameter(VstInt32 index, float value); // set the parameter at index to value + virtual void getParameterLabel(VstInt32 index, char *text); // label for the parameter (eg dB) + virtual void getParameterName(VstInt32 index, char *text); // name of the parameter + virtual void getParameterDisplay(VstInt32 index, char *text); // text description of the current value + virtual VstInt32 canDo(char *text); +private: + char _programName[kVstMaxProgNameLen + 1]; + std::set< std::string > _canDo; + + long double fpNShapeL; + long double fpNShapeR; + //default stuff + + float A; + float B; +}; + +#endif diff --git a/plugins/MacVST/DitherFloat/source/DitherFloatProc.cpp b/plugins/MacVST/DitherFloat/source/DitherFloatProc.cpp new file mode 100755 index 0000000..3c76a1a --- /dev/null +++ b/plugins/MacVST/DitherFloat/source/DitherFloatProc.cpp @@ -0,0 +1,184 @@ +/* ======================================== + * DitherFloat - DitherFloat.h + * Copyright (c) 2016 airwindows, All rights reserved + * ======================================== */ + +#ifndef __DitherFloat_H +#include "DitherFloat.h" +#endif + +void DitherFloat::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames) +{ + float* in1 = inputs[0]; + float* in2 = inputs[1]; + float* out1 = outputs[0]; + float* out2 = outputs[1]; + + double overallscale = 1.0; + overallscale /= 44100.0; + overallscale *= getSampleRate(); + + int floatOffset = (A * 32); + long double blend = B; + + long double gain = 0; + + switch (floatOffset) + { + case 0: gain = 1.0; break; + case 1: gain = 2.0; break; + case 2: gain = 4.0; break; + case 3: gain = 8.0; break; + case 4: gain = 16.0; break; + case 5: gain = 32.0; break; + case 6: gain = 64.0; break; + case 7: gain = 128.0; break; + case 8: gain = 256.0; break; + case 9: gain = 512.0; break; + case 10: gain = 1024.0; break; + case 11: gain = 2048.0; break; + case 12: gain = 4096.0; break; + case 13: gain = 8192.0; break; + case 14: gain = 16384.0; break; + case 15: gain = 32768.0; break; + case 16: gain = 65536.0; break; + case 17: gain = 131072.0; break; + case 18: gain = 262144.0; break; + case 19: gain = 524288.0; break; + case 20: gain = 1048576.0; break; + case 21: gain = 2097152.0; break; + case 22: gain = 4194304.0; break; + case 23: gain = 8388608.0; break; + case 24: gain = 16777216.0; break; + case 25: gain = 33554432.0; break; + case 26: gain = 67108864.0; break; + case 27: gain = 134217728.0; break; + case 28: gain = 268435456.0; break; + case 29: gain = 536870912.0; break; + case 30: gain = 1073741824.0; break; + case 31: gain = 2147483648.0; break; + case 32: gain = 4294967296.0; break; + } + //we are directly punching in the gain values rather than calculating them + + while (--sampleFrames >= 0) + { + long double inputSampleL = *in1 + (gain-1); + long double inputSampleR = *in2 + (gain-1); + + + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo; + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo; + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither + + + + inputSampleL = (float)inputSampleL; //equivalent of 'floor' for 32 bit floating point + inputSampleR = (float)inputSampleR; //equivalent of 'floor' for 32 bit floating point + //We do that separately, we're truncating to floating point WHILE heavily offset. + + *out1 = inputSampleL - (gain-1); + *out2 = inputSampleR - (gain-1); + + *in1++; + *in2++; + *out1++; + *out2++; + } +} + +void DitherFloat::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) +{ + double* in1 = inputs[0]; + double* in2 = inputs[1]; + double* out1 = outputs[0]; + double* out2 = outputs[1]; + + double overallscale = 1.0; + overallscale /= 44100.0; + overallscale *= getSampleRate(); + + int floatOffset = (A * 32); + long double blend = B; + + long double gain = 0; + + switch (floatOffset) + { + case 0: gain = 1.0; break; + case 1: gain = 2.0; break; + case 2: gain = 4.0; break; + case 3: gain = 8.0; break; + case 4: gain = 16.0; break; + case 5: gain = 32.0; break; + case 6: gain = 64.0; break; + case 7: gain = 128.0; break; + case 8: gain = 256.0; break; + case 9: gain = 512.0; break; + case 10: gain = 1024.0; break; + case 11: gain = 2048.0; break; + case 12: gain = 4096.0; break; + case 13: gain = 8192.0; break; + case 14: gain = 16384.0; break; + case 15: gain = 32768.0; break; + case 16: gain = 65536.0; break; + case 17: gain = 131072.0; break; + case 18: gain = 262144.0; break; + case 19: gain = 524288.0; break; + case 20: gain = 1048576.0; break; + case 21: gain = 2097152.0; break; + case 22: gain = 4194304.0; break; + case 23: gain = 8388608.0; break; + case 24: gain = 16777216.0; break; + case 25: gain = 33554432.0; break; + case 26: gain = 67108864.0; break; + case 27: gain = 134217728.0; break; + case 28: gain = 268435456.0; break; + case 29: gain = 536870912.0; break; + case 30: gain = 1073741824.0; break; + case 31: gain = 2147483648.0; break; + case 32: gain = 4294967296.0; break; + } + //we are directly punching in the gain values rather than calculating them + + while (--sampleFrames >= 0) + { + long double inputSampleL = *in1 + (gain-1); + long double inputSampleR = *in2 + (gain-1); + + + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo; + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo; + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither + + + + inputSampleL = (float)inputSampleL; //equivalent of 'floor' for 32 bit floating point + inputSampleR = (float)inputSampleR; //equivalent of 'floor' for 32 bit floating point + //We do that separately, we're truncating to floating point WHILE heavily offset. + + //note for 64 bit version: this is not for actually dithering 64 bit floats! + //This is specifically for demonstrating the sound of 32 bit floating point dither + //even over a 64 bit buss. Therefore it should be using float, above! + + *out1 = inputSampleL - (gain-1); + *out2 = inputSampleR - (gain-1); + + *in1++; + *in2++; + *out1++; + *out2++; + } +} diff --git a/plugins/MacVST/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.pbxuser index 79d6624..a600232 100755 --- a/plugins/MacVST/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.pbxuser @@ -49,11 +49,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 566520525; - PBXWorkspaceStateSaveDate = 566520525; + PBXPerProjectTemplateStateSaveDate = 569734615; + PBXWorkspaceStateSaveDate = 569734615; }; perUserProjectItems = { - 8BBB33E421C45DDB00825986 /* PBXTextBookmark */ = 8BBB33E421C45DDB00825986 /* PBXTextBookmark */; + 8B79387A21F575DF006E9731 /* PBXTextBookmark */ = 8B79387A21F575DF006E9731 /* PBXTextBookmark */; 8BBB33F821C46ADB00825986 /* PBXTextBookmark */ = 8BBB33F821C46ADB00825986 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -62,9 +62,9 @@ }; 2407DEB6089929BA00EB68BF /* DitherMeDiskers.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {649, 1209}}"; + sepNavIntBoundsRect = "{{0, 0}, {649, 1183}}"; sepNavSelRange = "{2491, 0}"; - sepNavVisRange = "{2343, 150}"; + sepNavVisRange = "{2345, 148}"; sepNavWindowFrame = "{{12, 47}, {895, 831}}"; }; }; @@ -106,15 +106,15 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8BBB33E421C45DDB00825986 /* PBXTextBookmark */ = { + 8B79387A21F575DF006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 2407DEB6089929BA00EB68BF /* DitherMeDiskers.cpp */; name = "DitherMeDiskers.cpp: 69"; rLen = 0; rLoc = 2491; rType = 0; - vrLen = 219; - vrLoc = 2274; + vrLen = 148; + vrLoc = 2345; }; 8BBB33F821C46ADB00825986 /* PBXTextBookmark */ = { isa = PBXTextBookmark; diff --git a/plugins/MacVST/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.perspectivev3 index 6f5eba5..a10a837 100755 --- a/plugins/MacVST/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.perspectivev3 @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BBB33F821C46ADB00825986</string> + <string>8B79387A21F575DF006E9731</string> <key>history</key> <array> - <string>8BBB33E421C45DDB00825986</string> + <string>8BBB33F821C46ADB00825986</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 117}}</string> + <string>{{0, 0}, {603, 102}}</string> <key>RubberWindowFrame</key> <string>320 286 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>117pt</string> + <string>102pt</string> </dict> <dict> <key>Proportion</key> - <string>324pt</string> + <string>339pt</string> <key>Tabs</key> <array> <dict> @@ -393,7 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 297}}</string> + <string>{{10, 27}, {603, 312}}</string> <key>RubberWindowFrame</key> <string>320 286 810 487 0 0 1440 878 </string> </dict> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBB33F921C46ADB00825986</string> + <string>8B79387B21F575DF006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBB33FA21C46ADB00825986</string> + <string>8B79387C21F575DF006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BBB33FB21C46ADB00825986</string> + <string>8B79387D21F575DF006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>566520539.86159599</real> + <real>569734623.23729205</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,7 +651,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BBB33FC21C46ADB00825986</string> <string>/Users/christopherjohnson/Desktop/MacVST/DitherMeDiskers/DitherMeDiskers.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.pbxuser index 3192b34..67d6ce9 100755 --- a/plugins/MacVST/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.pbxuser @@ -49,14 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 566520842; - PBXWorkspaceStateSaveDate = 566520842; + PBXPerProjectTemplateStateSaveDate = 569734651; + PBXWorkspaceStateSaveDate = 569734651; }; perUserProjectItems = { 8B416DB721B6143700DD5013 /* PBXTextBookmark */ = 8B416DB721B6143700DD5013 /* PBXTextBookmark */; 8B416DB821B6143700DD5013 /* PBXBookmark */ = 8B416DB821B6143700DD5013 /* PBXBookmark */; + 8B79389A21F57607006E9731 /* PBXTextBookmark */ = 8B79389A21F57607006E9731 /* PBXTextBookmark */; 8BBB310321B8993300825986 /* PBXTextBookmark */ = 8BBB310321B8993300825986 /* PBXTextBookmark */; - 8BBB34C021C46EA800825986 /* PBXTextBookmark */ = 8BBB34C021C46EA800825986 /* PBXTextBookmark */; 8BBB34C121C46EA800825986 /* PBXTextBookmark */ = 8BBB34C121C46EA800825986 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -123,18 +123,22 @@ isa = PBXBookmark; fRef = 245463B80991757100464AD3 /* DitherMeTimbers.h */; }; + 8B79389A21F57607006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 24D8286F09A914000093AEF8 /* DitherMeTimbersProc.cpp */; + name = "DitherMeTimbersProc.cpp: 122"; + rLen = 0; + rLoc = 3612; + rType = 0; + vrLen = 0; + vrLoc = 0; + }; 8BBB308D21B7F07D00825986 /* DitherMeTImbers.h */ = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DitherMeTImbers.h; path = /Users/christopherjohnson/Desktop/MacVST/DitherMeTimbers/source/DitherMeTImbers.h; sourceTree = "<absolute>"; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 819}}"; - sepNavSelRange = "{2473, 86}"; - sepNavVisRange = "{283, 2287}"; - sepNavWindowFrame = "{{555, 47}, {895, 831}}"; - }; }; 8BBB310321B8993300825986 /* PBXTextBookmark */ = { isa = PBXTextBookmark; @@ -146,16 +150,6 @@ vrLen = 7; vrLoc = 2563; }; - 8BBB34C021C46EA800825986 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 24D8286F09A914000093AEF8 /* DitherMeTimbersProc.cpp */; - name = "DitherMeTimbersProc.cpp: 122"; - rLen = 0; - rLoc = 3612; - rType = 0; - vrLen = 0; - vrLoc = 0; - }; 8BBB34C121C46EA800825986 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* DitherMeTimbersProc.cpp */; diff --git a/plugins/MacVST/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.perspectivev3 index e3b2aee..66ebae8 100755 --- a/plugins/MacVST/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.perspectivev3 @@ -351,13 +351,13 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BBB34C121C46EA800825986</string> + <string>8B79389A21F57607006E9731</string> <key>history</key> <array> <string>8B416DB721B6143700DD5013</string> <string>8B416DB821B6143700DD5013</string> <string>8BBB310321B8993300825986</string> - <string>8BBB34C021C46EA800825986</string> + <string>8BBB34C121C46EA800825986</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +371,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 13}}</string> + <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> <string>613 141 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>13pt</string> + <string>0pt</string> </dict> <dict> <key>Proportion</key> - <string>428pt</string> + <string>441pt</string> <key>Tabs</key> <array> <dict> @@ -396,7 +396,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 401}}</string> + <string>{{10, 27}, {603, 414}}</string> <key>RubberWindowFrame</key> <string>613 141 810 487 0 0 1440 878 </string> </dict> @@ -480,11 +480,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBB34C221C46EA800825986</string> + <string>8B79389B21F57607006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBB34C321C46EA800825986</string> + <string>8B79389C21F57607006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BBB34C421C46EA800825986</string> + <string>8B79389D21F57607006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -637,7 +637,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>566521512.17248595</real> + <real>569734663.38253498</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -654,7 +654,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BBB34C521C46EA800825986</string> <string>/Users/christopherjohnson/Desktop/MacVST/DitherMeTimbers/DitherMeTimbers.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.pbxuser index fafb484..32eaf98 100755 --- a/plugins/MacVST/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.pbxuser @@ -49,11 +49,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 557697507; - PBXWorkspaceStateSaveDate = 557697507; + PBXPerProjectTemplateStateSaveDate = 569734571; + PBXWorkspaceStateSaveDate = 569734571; }; perUserProjectItems = { - 8B913F89213DBC2200BA6EEC /* PBXTextBookmark */ = 8B913F89213DBC2200BA6EEC /* PBXTextBookmark */; + 8B79385A21F575BA006E9731 /* PBXTextBookmark */ = 8B79385A21F575BA006E9731 /* PBXTextBookmark */; 8B914093213DCA1600BA6EEC /* PBXTextBookmark */ = 8B914093213DCA1600BA6EEC /* PBXTextBookmark */; 8B914094213DCA1600BA6EEC /* PBXTextBookmark */ = 8B914094213DCA1600BA6EEC /* PBXTextBookmark */; }; @@ -87,9 +87,9 @@ }; 24D8286F09A914000093AEF8 /* DitherboxProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {565, 26065}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 26065}}"; sepNavSelRange = "{81896, 0}"; - sepNavVisRange = "{39186, 42}"; + sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{516, 47}, {895, 831}}"; }; }; @@ -107,15 +107,15 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B913F89213DBC2200BA6EEC /* PBXTextBookmark */ = { + 8B79385A21F575BA006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* DitherboxProc.cpp */; - name = "DitherboxProc.cpp: 1829"; + name = "DitherboxProc.cpp: 2008"; rLen = 0; rLoc = 81896; rType = 0; - vrLen = 246; - vrLoc = 38973; + vrLen = 0; + vrLoc = 0; }; 8B914093213DCA1600BA6EEC /* PBXTextBookmark */ = { isa = PBXTextBookmark; diff --git a/plugins/MacVST/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.perspectivev3 index b9f897f..dfee9c0 100755 --- a/plugins/MacVST/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.perspectivev3 @@ -351,11 +351,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B914094213DCA1600BA6EEC</string> + <string>8B79385A21F575BA006E9731</string> <key>history</key> <array> <string>8B914093213DCA1600BA6EEC</string> - <string>8B913F89213DBC2200BA6EEC</string> + <string>8B914094213DCA1600BA6EEC</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 51}}</string> + <string>{{0, 0}, {603, 32}}</string> <key>RubberWindowFrame</key> <string>34 315 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>51pt</string> + <string>32pt</string> </dict> <dict> <key>Proportion</key> - <string>390pt</string> + <string>409pt</string> <key>Tabs</key> <array> <dict> @@ -394,7 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 363}}</string> + <string>{{10, 27}, {603, 382}}</string> <key>RubberWindowFrame</key> <string>34 315 810 487 0 0 1440 878 </string> </dict> @@ -478,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B914095213DCA1600BA6EEC</string> + <string>8B79385B21F575BA006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B914096213DCA1600BA6EEC</string> + <string>8B79385C21F575BA006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B914097213DCA1600BA6EEC</string> + <string>8B79385D21F575BA006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>557697558.29189706</real> + <real>569734586.84466803</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,7 +652,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B914098213DCA1600BA6EEC</string> <string>/Users/christopherjohnson/Desktop/MacVST/Ditherbox/Ditherbox.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.pbxuser index d51737f..87088d6 100755 --- a/plugins/MacVST/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528460183; - PBXWorkspaceStateSaveDate = 528460183; + PBXPerProjectTemplateStateSaveDate = 569734688; + PBXWorkspaceStateSaveDate = 569734688; }; perUserProjectItems = { - 8B9D6B781F7EE06F007AB60F /* PBXTextBookmark */ = 8B9D6B781F7EE06F007AB60F /* PBXTextBookmark */; - 8B9D79991F7FA9C1007AB60F /* PBXTextBookmark */ = 8B9D79991F7FA9C1007AB60F /* PBXTextBookmark */; + 8B7938BA21F5762A006E9731 /* PBXTextBookmark */ = 8B7938BA21F5762A006E9731 /* PBXTextBookmark */; + 8B913F4F213DBA1400BA6EEC /* PBXTextBookmark */ = 8B913F4F213DBA1400BA6EEC /* PBXTextBookmark */; + 8B913F51213DBA1400BA6EEC /* PBXTextBookmark */ = 8B913F51213DBA1400BA6EEC /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -78,18 +79,18 @@ }; 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {747, 19864}}"; + sepNavIntBoundsRect = "{{0, 0}, {747, 19877}}"; sepNavSelRange = "{10616, 0}"; - sepNavVisRange = "{0, 0}"; + sepNavVisRange = "{107, 280}"; sepNavWindowFrame = "{{15, 42}, {895, 831}}"; }; }; 24D8286F09A914000093AEF8 /* DoublePaulProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 3601}}"; + sepNavIntBoundsRect = "{{0, 0}, {684, 3328}}"; sepNavSelRange = "{615, 0}"; - sepNavVisRange = "{445, 2248}"; - sepNavWindowFrame = "{{328, 47}, {895, 831}}"; + sepNavVisRange = "{522, 172}"; + sepNavWindowFrame = "{{15, 47}, {895, 831}}"; }; }; 8B02375E1D42B1C400E1E8C8 /* Source Control */ = { @@ -106,25 +107,35 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B9D6B781F7EE06F007AB60F /* PBXTextBookmark */ = { + 8B7938BA21F5762A006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; - name = "audioeffectx.cpp: 307"; + fRef = 24D8286F09A914000093AEF8 /* DoublePaulProc.cpp */; + name = "DoublePaulProc.cpp: 25"; rLen = 0; - rLoc = 10616; + rLoc = 615; rType = 0; - vrLen = 0; - vrLoc = 0; + vrLen = 172; + vrLoc = 522; }; - 8B9D79991F7FA9C1007AB60F /* PBXTextBookmark */ = { + 8B913F4F213DBA1400BA6EEC /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; name = "audioeffectx.cpp: 307"; rLen = 0; rLoc = 10616; rType = 0; - vrLen = 0; - vrLoc = 0; + vrLen = 280; + vrLoc = 107; + }; + 8B913F51213DBA1400BA6EEC /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 24D8286F09A914000093AEF8 /* DoublePaulProc.cpp */; + name = "DoublePaulProc.cpp: 25"; + rLen = 0; + rLoc = 615; + rType = 0; + vrLen = 291; + vrLoc = 522; }; 8D01CCC60486CAD60068D4B7 /* DoublePaul */ = { activeExec = 0; diff --git a/plugins/MacVST/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.perspectivev3 index fe838cb..d88c235 100755 --- a/plugins/MacVST/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.perspectivev3 @@ -323,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>318 298 810 487 0 0 1440 878 </string> + <string>73 294 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -339,7 +339,7 @@ <key>PBXProjectModuleGUID</key> <string>8B0237581D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>audioeffectx.cpp</string> + <string>DoublePaulProc.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -347,14 +347,15 @@ <key>PBXProjectModuleGUID</key> <string>8B0237591D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>audioeffectx.cpp</string> + <string>DoublePaulProc.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D79991F7FA9C1007AB60F</string> + <string>8B7938BA21F5762A006E9731</string> <key>history</key> <array> - <string>8B9D6B781F7EE06F007AB60F</string> + <string>8B913F4F213DBA1400BA6EEC</string> + <string>8B913F51213DBA1400BA6EEC</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 13}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> - <string>318 298 810 487 0 0 1440 878 </string> + <string>73 294 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>13pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>428pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -393,9 +394,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 401}}</string> + <string>{{10, 27}, {603, 297}}</string> <key>RubberWindowFrame</key> - <string>318 298 810 487 0 0 1440 878 </string> + <string>73 294 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -477,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D799A1F7FA9C1007AB60F</string> + <string>8B7938BB21F5762A006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D799B1F7FA9C1007AB60F</string> + <string>8B7938BC21F5762A006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D799C1F7FA9C1007AB60F</string> + <string>8B7938BD21F5762A006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528460225.04550499</real> + <real>569734698.54333794</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,11 +652,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BB6DDFD1E5A8BDB00F3CD1D</string> <string>/Users/christopherjohnson/Desktop/MacVST/DoublePaul/DoublePaul.xcodeproj</string> </array> <key>WindowString</key> - <string>318 298 810 487 0 0 1440 878 </string> + <string>73 294 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/Drive/Drive.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Drive/Drive.xcodeproj/christopherjohnson.pbxuser index 0d13528..a5f5df4 100755 --- a/plugins/MacVST/Drive/Drive.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Drive/Drive.xcodeproj/christopherjohnson.pbxuser @@ -49,14 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528460236; - PBXWorkspaceStateSaveDate = 528460236; + PBXPerProjectTemplateStateSaveDate = 569734718; + PBXWorkspaceStateSaveDate = 569734718; }; perUserProjectItems = { + 8B7938E821F5766D006E9731 /* PBXTextBookmark */ = 8B7938E821F5766D006E9731 /* PBXTextBookmark */; + 8B7938E921F5766D006E9731 /* XCBuildMessageTextBookmark */ = 8B7938E921F5766D006E9731 /* XCBuildMessageTextBookmark */; + 8B7938EA21F5766D006E9731 /* PBXTextBookmark */ = 8B7938EA21F5766D006E9731 /* PBXTextBookmark */; 8B93B4861DB80EC5000D49A5 /* PBXTextBookmark */ = 8B93B4861DB80EC5000D49A5 /* PBXTextBookmark */; - 8B93B4C41DB816DE000D49A5 /* PBXTextBookmark */ = 8B93B4C41DB816DE000D49A5 /* PBXTextBookmark */; - 8B9D6BA21F7EE49F007AB60F /* PBXTextBookmark */ = 8B9D6BA21F7EE49F007AB60F /* PBXTextBookmark */; - 8B9D79AE1F7FA9E9007AB60F /* PBXTextBookmark */ = 8B9D79AE1F7FA9E9007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -64,17 +64,17 @@ }; 2407DEB6089929BA00EB68BF /* Drive.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 2002}}"; - sepNavSelRange = "{459, 0}"; - sepNavVisRange = "{44, 296}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 2015}}"; + sepNavSelRange = "{558, 0}"; + sepNavVisRange = "{0, 1867}"; sepNavWindowFrame = "{{12, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* Drive.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 1105}}"; - sepNavSelRange = "{2619, 0}"; - sepNavVisRange = "{2555, 79}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 962}}"; + sepNavSelRange = "{2565, 0}"; + sepNavVisRange = "{375, 2316}"; sepNavWindowFrame = "{{20, 47}, {895, 831}}"; }; }; @@ -88,9 +88,9 @@ }; 24D8286F09A914000093AEF8 /* DriveProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 4004}}"; - sepNavSelRange = "{6223, 1892}"; - sepNavVisRange = "{855, 2341}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 3393}}"; + sepNavSelRange = "{3343, 0}"; + sepNavVisRange = "{3322, 44}"; sepNavWindowFrame = "{{378, 39}, {895, 831}}"; }; }; @@ -108,45 +108,44 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B93B4861DB80EC5000D49A5 /* PBXTextBookmark */ = { + 8B7938E821F5766D006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 2407DEB6089929BA00EB68BF /* Drive.cpp */; - name = "Drive.cpp: 18"; + fRef = 245463B80991757100464AD3 /* Drive.h */; + name = "Drive.h: 69"; rLen = 0; - rLoc = 459; + rLoc = 2630; rType = 0; - vrLen = 296; - vrLoc = 44; + vrLen = 100; + vrLoc = 2568; }; - 8B93B4C41DB816DE000D49A5 /* PBXTextBookmark */ = { + 8B7938E921F5766D006E9731 /* XCBuildMessageTextBookmark */ = { isa = PBXTextBookmark; + comments = "'fpFlip' was not declared in this scope"; fRef = 24D8286F09A914000093AEF8 /* DriveProc.cpp */; - name = "DriveProc.cpp: 142"; - rLen = 26; - rLoc = 5927; - rType = 0; - vrLen = 200; - vrLoc = 3942; + fallbackIsa = XCBuildMessageTextBookmark; + rLen = 1; + rLoc = 94; + rType = 1; }; - 8B9D6BA21F7EE49F007AB60F /* PBXTextBookmark */ = { + 8B7938EA21F5766D006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 245463B80991757100464AD3 /* Drive.h */; - name = "Drive.h: 68"; + fRef = 24D8286F09A914000093AEF8 /* DriveProc.cpp */; + name = "DriveProc.cpp: 95"; rLen = 0; - rLoc = 2619; + rLoc = 3343; rType = 0; - vrLen = 100; - vrLoc = 2534; + vrLen = 44; + vrLoc = 3322; }; - 8B9D79AE1F7FA9E9007AB60F /* PBXTextBookmark */ = { + 8B93B4861DB80EC5000D49A5 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 245463B80991757100464AD3 /* Drive.h */; - name = "Drive.h: 68"; + fRef = 2407DEB6089929BA00EB68BF /* Drive.cpp */; + name = "Drive.cpp: 18"; rLen = 0; - rLoc = 2619; + rLoc = 459; rType = 0; - vrLen = 79; - vrLoc = 2555; + vrLen = 296; + vrLoc = 44; }; 8D01CCC60486CAD60068D4B7 /* Drive */ = { activeExec = 0; diff --git a/plugins/MacVST/Drive/Drive.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Drive/Drive.xcodeproj/christopherjohnson.perspectivev3 index c708842..1a33639 100755 --- a/plugins/MacVST/Drive/Drive.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Drive/Drive.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>6</integer> + <integer>7</integer> <integer>4</integer> <integer>0</integer> </array> @@ -339,7 +339,7 @@ <key>PBXProjectModuleGUID</key> <string>8B0237581D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>Drive.h</string> + <string>DriveProc.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -347,16 +347,16 @@ <key>PBXProjectModuleGUID</key> <string>8B0237591D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>Drive.h</string> + <string>DriveProc.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D79AE1F7FA9E9007AB60F</string> + <string>8B7938EA21F5766D006E9731</string> <key>history</key> <array> <string>8B93B4861DB80EC5000D49A5</string> - <string>8B93B4C41DB816DE000D49A5</string> - <string>8B9D6BA21F7EE49F007AB60F</string> + <string>8B7938E821F5766D006E9731</string> + <string>8B7938E921F5766D006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 86}}</string> + <string>{{0, 0}, {603, 69}}</string> <key>RubberWindowFrame</key> <string>332 336 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>86pt</string> + <string>69pt</string> </dict> <dict> <key>Proportion</key> - <string>355pt</string> + <string>372pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 328}}</string> - <key>RubberWindowFrame</key> - <string>332 336 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 345}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {603, 345}}</string> + <key>RubberWindowFrame</key> + <string>332 336 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D79AF1F7FA9E9007AB60F</string> + <string>8B7938EB21F5766D006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D79B01F7FA9E9007AB60F</string> + <string>8B7938EC21F5766D006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D79B11F7FA9E9007AB60F</string> + <string>8B7938ED21F5766D006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528460265.50522298</real> + <real>569734765.92090094</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,7 +653,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D79B21F7FA9E9007AB60F</string> + <string>8B7938EE21F5766D006E9731</string> <string>/Users/christopherjohnson/Desktop/MacVST/Drive/Drive.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Drive/source/Drive.cpp b/plugins/MacVST/Drive/source/Drive.cpp index 35d0594..ac5f228 100755 --- a/plugins/MacVST/Drive/source/Drive.cpp +++ b/plugins/MacVST/Drive/source/Drive.cpp @@ -20,12 +20,9 @@ Drive::Drive(audioMasterCallback audioMaster) : iirSampleBL = 0.0; iirSampleAR = 0.0; iirSampleBR = 0.0; - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Drive/source/Drive.h b/plugins/MacVST/Drive/source/Drive.h index c7039c5..525a09e 100755 --- a/plugins/MacVST/Drive/source/Drive.h +++ b/plugins/MacVST/Drive/source/Drive.h @@ -55,17 +55,14 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double iirSampleAL; double iirSampleBL; double iirSampleAR; double iirSampleBR; - + bool fpFlip; float A; float B; float C; diff --git a/plugins/MacVST/Drive/source/DriveProc.cpp b/plugins/MacVST/Drive/source/DriveProc.cpp index 3670e85..074ccfd 100755 --- a/plugins/MacVST/Drive/source/DriveProc.cpp +++ b/plugins/MacVST/Drive/source/DriveProc.cpp @@ -26,9 +26,6 @@ void Drive::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra double glitch = 0.60; double out; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -95,6 +92,7 @@ void Drive::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra inputSampleR -= iirSampleBR; } //highpass section + fpFlip = !fpFlip; if (inputSampleL > 1.0) inputSampleL = 1.0; @@ -129,25 +127,14 @@ void Drive::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -178,9 +165,6 @@ void Drive::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s double glitch = 0.60; double out; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -247,6 +231,7 @@ void Drive::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s inputSampleR -= iirSampleBR; } //highpass section + fpFlip = !fpFlip; if (inputSampleL > 1.0) inputSampleL = 1.0; @@ -281,25 +266,16 @@ void Drive::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.pbxuser index 37e894a..085419c 100755 --- a/plugins/MacVST/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.pbxuser @@ -51,8 +51,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 547825371; - PBXWorkspaceStateSaveDate = 547825371; + PBXPerProjectTemplateStateSaveDate = 569734786; + PBXWorkspaceStateSaveDate = 569734786; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -60,17 +60,17 @@ }; 2407DEB6089929BA00EB68BF /* DrumSlam.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 2067}}"; - sepNavSelRange = "{4174, 11}"; - sepNavVisRange = "{3277, 2173}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 2132}}"; + sepNavSelRange = "{852, 0}"; + sepNavVisRange = "{0, 1541}"; sepNavWindowFrame = "{{12, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* DrumSlam.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 1209}}"; - sepNavSelRange = "{435, 0}"; - sepNavVisRange = "{663, 2389}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 1170}}"; + sepNavSelRange = "{2870, 0}"; + sepNavVisRange = "{655, 2346}"; sepNavWindowFrame = "{{20, 47}, {895, 831}}"; }; }; diff --git a/plugins/MacVST/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.perspectivev3 index 48ceca2..d1c4f80 100755 --- a/plugins/MacVST/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.perspectivev3 @@ -256,6 +256,8 @@ <key>Layout</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -298,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>6</integer> + <integer>7</integer> <integer>4</integer> <integer>0</integer> </array> @@ -321,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>28 345 810 487 0 0 1440 878 </string> + <string>176 340 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -360,7 +362,7 @@ <key>Frame</key> <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> - <string>28 345 810 487 0 0 1440 878 </string> + <string>176 340 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -439,7 +441,7 @@ <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> <key>RubberWindowFrame</key> - <string>28 345 810 487 0 0 1440 878 </string> + <string>176 340 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -467,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B7E3F2420A72F9200482CB5</string> + <string>8B79390D21F576B0006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B7E3F2520A72F9200482CB5</string> + <string>8B79390E21F576B0006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B7E3F2620A72F9200482CB5</string> + <string>8B79390F21F576B0006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -644,7 +646,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>547827602.36658394</real> + <real>569734832.13053405</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -661,11 +663,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B7E3F2D20A72F9200482CB5</string> - <string>/Users/christopherjohnson/Desktop/DrumSlam/DrumSlam.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/DrumSlam/DrumSlam.xcodeproj</string> </array> <key>WindowString</key> - <string>28 345 810 487 0 0 1440 878 </string> + <string>176 340 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/DrumSlam/source/DrumSlam.cpp b/plugins/MacVST/DrumSlam/source/DrumSlam.cpp index 8a6ae7b..5b88619 100755 --- a/plugins/MacVST/DrumSlam/source/DrumSlam.cpp +++ b/plugins/MacVST/DrumSlam/source/DrumSlam.cpp @@ -35,12 +35,9 @@ DrumSlam::DrumSlam(audioMasterCallback audioMaster) : iirSampleGR = 0.0; iirSampleHR = 0.0; lastSampleR = 0.0; - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/DrumSlam/source/DrumSlam.h b/plugins/MacVST/DrumSlam/source/DrumSlam.h index 5ec2fda..418282d 100755 --- a/plugins/MacVST/DrumSlam/source/DrumSlam.h +++ b/plugins/MacVST/DrumSlam/source/DrumSlam.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double iirSampleAL; @@ -80,7 +77,7 @@ private: double iirSampleGR; double iirSampleHR; double lastSampleR; - + bool fpFlip; float A; float B; float C; diff --git a/plugins/MacVST/DrumSlam/source/DrumSlamProc.cpp b/plugins/MacVST/DrumSlam/source/DrumSlamProc.cpp index 171b353..2e86142 100755 --- a/plugins/MacVST/DrumSlam/source/DrumSlamProc.cpp +++ b/plugins/MacVST/DrumSlam/source/DrumSlamProc.cpp @@ -25,8 +25,6 @@ void DrumSlam::processReplacing(float **inputs, float **outputs, VstInt32 sample double out = B; double wet = C; double dry = 1.0 - wet; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; while (--sampleFrames >= 0) { @@ -125,6 +123,8 @@ void DrumSlam::processReplacing(float **inputs, float **outputs, VstInt32 sample highSampleL = inputSampleL - iirSampleHL; highSampleR = inputSampleR - iirSampleHR; } + fpFlip = !fpFlip; + //generate the tone bands we're using if (lowSampleL > 1.0) {lowSampleL = 1.0;} if (lowSampleL < -1.0) {lowSampleL = -1.0;} @@ -219,26 +219,14 @@ void DrumSlam::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - float fpTemp; - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -268,8 +256,6 @@ void DrumSlam::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double out = B; double wet = C; double dry = 1.0 - wet; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; while (--sampleFrames >= 0) { @@ -368,6 +354,8 @@ void DrumSlam::processDoubleReplacing(double **inputs, double **outputs, VstInt3 highSampleL = inputSampleL - iirSampleHL; highSampleR = inputSampleR - iirSampleHR; } + fpFlip = !fpFlip; + //generate the tone bands we're using if (lowSampleL > 1.0) {lowSampleL = 1.0;} if (lowSampleL < -1.0) {lowSampleL = -1.0;} @@ -462,26 +450,16 @@ void DrumSlam::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - double fpTemp; - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/DubCenter/DubCenter.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/DubCenter/DubCenter.xcodeproj/christopherjohnson.pbxuser index 1ef293f..540fd54 100755 --- a/plugins/MacVST/DubCenter/DubCenter.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/DubCenter/DubCenter.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 561848737; - PBXWorkspaceStateSaveDate = 561848737; - }; - perUserProjectItems = { - 8B560C61217D21A400D3BC37 /* PBXBookmark */ = 8B560C61217D21A400D3BC37 /* PBXBookmark */; - 8B560C71217D21F300D3BC37 /* PBXTextBookmark */ = 8B560C71217D21F300D3BC37 /* PBXTextBookmark */; + PBXPerProjectTemplateStateSaveDate = 569734854; + PBXWorkspaceStateSaveDate = 569734854; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -86,9 +82,9 @@ }; 24D8286F09A914000093AEF8 /* DubCenterProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 8359}}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 8086}}"; sepNavSelRange = "{6339, 0}"; - sepNavVisRange = "{5917, 3197}"; + sepNavVisRange = "{5899, 3296}"; sepNavWindowFrame = "{{45, 47}, {895, 831}}"; }; }; @@ -106,20 +102,6 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B560C61217D21A400D3BC37 /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 24D8286F09A914000093AEF8 /* DubCenterProc.cpp */; - }; - 8B560C71217D21F300D3BC37 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 24D8286F09A914000093AEF8 /* DubCenterProc.cpp */; - name = "DubCenterProc.cpp: 189"; - rLen = 0; - rLoc = 6339; - rType = 0; - vrLen = 3197; - vrLoc = 5917; - }; 8D01CCC60486CAD60068D4B7 /* DubCenter */ = { activeExec = 0; }; diff --git a/plugins/MacVST/DubCenter/DubCenter.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/DubCenter/DubCenter.xcodeproj/christopherjohnson.perspectivev3 index 7593523..1b66276 100755 --- a/plugins/MacVST/DubCenter/DubCenter.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/DubCenter/DubCenter.xcodeproj/christopherjohnson.perspectivev3 @@ -222,48 +222,7 @@ </dict> </array> <key>OpenEditors</key> - <array> - <dict> - <key>Content</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>8B560C6F217D21F300D3BC37</string> - <key>PBXProjectModuleLabel</key> - <string>DubCenterProc.cpp</string> - <key>PBXSplitModuleInNavigatorKey</key> - <dict> - <key>Split0</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>8B560C70217D21F300D3BC37</string> - <key>PBXProjectModuleLabel</key> - <string>DubCenterProc.cpp</string> - <key>_historyCapacity</key> - <integer>0</integer> - <key>bookmark</key> - <string>8B560C71217D21F300D3BC37</string> - <key>history</key> - <array> - <string>8B560C61217D21A400D3BC37</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, 734}}</string> - <key>PBXModuleWindowStatusBarHidden2</key> - <false/> - <key>RubberWindowFrame</key> - <string>45 103 895 775 0 0 1440 878 </string> - </dict> - </dict> - </array> + <array/> <key>PerspectiveWidths</key> <array> <integer>810</integer> @@ -510,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B560C6C217D21F300D3BC37</string> + <string>8B79392221F576D2006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B560C6D217D21F300D3BC37</string> + <string>8B79392321F576D2006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B560C6E217D21F300D3BC37</string> + <string>8B79392421F576D2006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -667,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>561848819.78781903</real> + <real>569734870.07559299</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -685,7 +644,6 @@ <key>WindowOrderList</key> <array> <string>/Users/christopherjohnson/Desktop/MacVST/DubCenter/DubCenter.xcodeproj</string> - <string>8B560C6F217D21F300D3BC37</string> </array> <key>WindowString</key> <string>28 291 810 487 0 0 1440 878 </string> diff --git a/plugins/MacVST/DubCenter/source/DubCenterProc.cpp b/plugins/MacVST/DubCenter/source/DubCenterProc.cpp index 75c162b..b0c49a3 100755 --- a/plugins/MacVST/DubCenter/source/DubCenterProc.cpp +++ b/plugins/MacVST/DubCenter/source/DubCenterProc.cpp @@ -306,18 +306,14 @@ void DubCenter::processReplacing(float **inputs, float **outputs, VstInt32 sampl bflip++; if (bflip < 1 || bflip > 3) bflip = 1; - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -327,12 +323,6 @@ void DubCenter::processReplacing(float **inputs, float **outputs, VstInt32 sampl *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void DubCenter::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -633,18 +623,16 @@ void DubCenter::processDoubleReplacing(double **inputs, double **outputs, VstInt bflip++; if (bflip < 1 || bflip > 3) bflip = 1; - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -654,10 +642,4 @@ void DubCenter::processDoubleReplacing(double **inputs, double **outputs, VstInt *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacVST/DubSub/DubSub.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/DubSub/DubSub.xcodeproj/christopherjohnson.pbxuser index d93b3f3..759f11f 100755 --- a/plugins/MacVST/DubSub/DubSub.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/DubSub/DubSub.xcodeproj/christopherjohnson.pbxuser @@ -49,14 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 560565932; - PBXWorkspaceStateSaveDate = 560565932; + PBXPerProjectTemplateStateSaveDate = 569734904; + PBXWorkspaceStateSaveDate = 569734904; }; perUserProjectItems = { - 8B42FC0221604E960092969A /* PBXTextBookmark */ = 8B42FC0221604E960092969A /* PBXTextBookmark */; - 8B42FC0321604E960092969A /* PBXTextBookmark */ = 8B42FC0321604E960092969A /* PBXTextBookmark */; - 8B42FE27216978EE0092969A /* PBXTextBookmark */ = 8B42FE27216978EE0092969A /* PBXTextBookmark */; - 8B42FE6F216992760092969A /* PBXTextBookmark */ = 8B42FE6F216992760092969A /* PBXTextBookmark */; + 8B15DBE121788E19007AD769 /* PBXTextBookmark */ = 8B15DBE121788E19007AD769 /* PBXTextBookmark */; + 8B15DC4F21789111007AD769 /* PBXTextBookmark */ = 8B15DC4F21789111007AD769 /* PBXTextBookmark */; + 8B15DC6F217891D4007AD769 /* PBXTextBookmark */ = 8B15DC6F217891D4007AD769 /* PBXTextBookmark */; + 8B79394121F57705006E9731 /* PBXTextBookmark */ = 8B79394121F57705006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -64,18 +64,18 @@ }; 2407DEB6089929BA00EB68BF /* DubSub.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 3237}}"; - sepNavSelRange = "{7461, 0}"; - sepNavVisRange = "{6004, 3058}"; - sepNavWindowFrame = "{{4, 38}, {895, 831}}"; + sepNavIntBoundsRect = "{{0, 0}, {712, 3575}}"; + sepNavSelRange = "{8745, 0}"; + sepNavVisRange = "{44, 171}"; + sepNavWindowFrame = "{{705, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* DubSub.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 2314}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 99}"; - sepNavWindowFrame = "{{20, 47}, {895, 831}}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 2340}}"; + sepNavSelRange = "{2508, 2128}"; + sepNavVisRange = "{3746, 901}"; + sepNavWindowFrame = "{{659, 47}, {895, 831}}"; }; }; 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = { @@ -88,10 +88,10 @@ }; 24D8286F09A914000093AEF8 /* DubSubProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 10296}}"; - sepNavSelRange = "{30534, 0}"; - sepNavVisRange = "{29455, 2823}"; - sepNavWindowFrame = "{{229, 47}, {895, 831}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 10985}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 0}"; + sepNavWindowFrame = "{{563, 47}, {895, 831}}"; }; }; 8B02375E1D42B1C400E1E8C8 /* Source Control */ = { @@ -108,45 +108,45 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B42FC0221604E960092969A /* PBXTextBookmark */ = { + 8B15DBE121788E19007AD769 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 2407DEB6089929BA00EB68BF /* DubSub.cpp */; - name = "DubSub.cpp: 142"; + fRef = 245463B80991757100464AD3 /* DubSub.h */; + name = "DubSub.h: 1"; rLen = 0; - rLoc = 8745; + rLoc = 0; rType = 0; - vrLen = 281; - vrLoc = 1938; + vrLen = 66; + vrLoc = 0; }; - 8B42FC0321604E960092969A /* PBXTextBookmark */ = { + 8B15DC4F21789111007AD769 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* DubSubProc.cpp */; name = "DubSubProc.cpp: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 208; + vrLen = 0; vrLoc = 0; }; - 8B42FE27216978EE0092969A /* PBXTextBookmark */ = { + 8B15DC6F217891D4007AD769 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 245463B80991757100464AD3 /* DubSub.h */; - name = "DubSub.h: 1"; + fRef = 2407DEB6089929BA00EB68BF /* DubSub.cpp */; + name = "DubSub.cpp: 267"; rLen = 0; - rLoc = 0; + rLoc = 8745; rType = 0; - vrLen = 208; - vrLoc = 0; + vrLen = 172; + vrLoc = 44; }; - 8B42FE6F216992760092969A /* PBXTextBookmark */ = { + 8B79394121F57705006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 245463B80991757100464AD3 /* DubSub.h */; - name = "DubSub.h: 1"; + fRef = 2407DEB6089929BA00EB68BF /* DubSub.cpp */; + name = "DubSub.cpp: 267"; rLen = 0; - rLoc = 0; + rLoc = 8745; rType = 0; - vrLen = 99; - vrLoc = 0; + vrLen = 171; + vrLoc = 44; }; 8D01CCC60486CAD60068D4B7 /* DubSub */ = { activeExec = 0; diff --git a/plugins/MacVST/DubSub/DubSub.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/DubSub/DubSub.xcodeproj/christopherjohnson.perspectivev3 index 681760b..f2fabd2 100755 --- a/plugins/MacVST/DubSub/DubSub.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/DubSub/DubSub.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>6</integer> + <integer>5</integer> <integer>4</integer> <integer>0</integer> </array> @@ -323,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>86 201 810 487 0 0 1440 878 </string> + <string>613 292 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -339,7 +339,7 @@ <key>PBXProjectModuleGUID</key> <string>8B0237581D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>DubSub.h</string> + <string>DubSub.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -347,16 +347,16 @@ <key>PBXProjectModuleGUID</key> <string>8B0237591D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>DubSub.h</string> + <string>DubSub.cpp</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B42FE6F216992760092969A</string> + <string>8B79394121F57705006E9731</string> <key>history</key> <array> - <string>8B42FC0221604E960092969A</string> - <string>8B42FC0321604E960092969A</string> - <string>8B42FE27216978EE0092969A</string> + <string>8B15DBE121788E19007AD769</string> + <string>8B15DC4F21789111007AD769</string> + <string>8B15DC6F217891D4007AD769</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 69}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> - <string>86 201 810 487 0 0 1440 878 </string> + <string>613 292 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>69pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>372pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +395,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 345}}</string> + <string>{{10, 27}, {603, 297}}</string> <key>RubberWindowFrame</key> - <string>86 201 810 487 0 0 1440 878 </string> + <string>613 292 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -479,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B42FE70216992760092969A</string> + <string>8B79394221F57705006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B42FE71216992760092969A</string> + <string>8B79394321F57705006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B42FE72216992760092969A</string> + <string>8B79394421F57705006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>560566902.22521102</real> + <real>569734917.70818102</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -656,7 +656,7 @@ <string>/Users/christopherjohnson/Desktop/MacVST/DubSub/DubSub.xcodeproj</string> </array> <key>WindowString</key> - <string>86 201 810 487 0 0 1440 878 </string> + <string>613 292 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/DubSub/source/DubSubProc.cpp b/plugins/MacVST/DubSub/source/DubSubProc.cpp index 037480c..7a0349d 100755 --- a/plugins/MacVST/DubSub/source/DubSubProc.cpp +++ b/plugins/MacVST/DubSub/source/DubSubProc.cpp @@ -392,18 +392,14 @@ void DubSub::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr bflip++; if (bflip < 1 || bflip > 3) bflip = 1; - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -413,12 +409,6 @@ void DubSub::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void DubSub::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -805,18 +795,16 @@ void DubSub::processDoubleReplacing(double **inputs, double **outputs, VstInt32 bflip++; if (bflip < 1 || bflip > 3) bflip = 1; - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -826,10 +814,4 @@ void DubSub::processDoubleReplacing(double **inputs, double **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacVST/DustBunny/DustBunny.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/DustBunny/DustBunny.xcodeproj/christopherjohnson.pbxuser index 0ecdf87..d0f3d39 100755 --- a/plugins/MacVST/DustBunny/DustBunny.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/DustBunny/DustBunny.xcodeproj/christopherjohnson.pbxuser @@ -51,11 +51,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528460275; - PBXWorkspaceStateSaveDate = 528460275; + PBXPerProjectTemplateStateSaveDate = 569734942; + PBXWorkspaceStateSaveDate = 569734942; }; perUserProjectItems = { - 8B9D6BC21F7EE4EE007AB60F /* PBXTextBookmark */ = 8B9D6BC21F7EE4EE007AB60F /* PBXTextBookmark */; + 8B79396121F5772F006E9731 /* PBXTextBookmark */ = 8B79396121F5772F006E9731 /* PBXTextBookmark */; 8B9D79DA1F7FAA9D007AB60F /* PBXTextBookmark */ = 8B9D79DA1F7FAA9D007AB60F /* PBXTextBookmark */; 8BCF31DB1F4E436800632CB6 /* PBXTextBookmark */ = 8BCF31DB1F4E436800632CB6 /* PBXTextBookmark */; }; @@ -65,9 +65,9 @@ }; 2407DEB6089929BA00EB68BF /* DustBunny.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {656, 1612}}"; + sepNavIntBoundsRect = "{{0, 0}, {656, 1638}}"; sepNavSelRange = "{1342, 0}"; - sepNavVisRange = "{1146, 454}"; + sepNavVisRange = "{1232, 294}"; sepNavWindowFrame = "{{12, 47}, {895, 831}}"; }; }; @@ -109,15 +109,15 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B9D6BC21F7EE4EE007AB60F /* PBXTextBookmark */ = { + 8B79396121F5772F006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 2407DEB6089929BA00EB68BF /* DustBunny.cpp */; name = "DustBunny.cpp: 30"; rLen = 0; rLoc = 1342; rType = 0; - vrLen = 454; - vrLoc = 1146; + vrLen = 294; + vrLoc = 1232; }; 8B9D79DA1F7FAA9D007AB60F /* PBXTextBookmark */ = { isa = PBXTextBookmark; diff --git a/plugins/MacVST/DustBunny/DustBunny.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/DustBunny/DustBunny.xcodeproj/christopherjohnson.perspectivev3 index e122df8..8d8c720 100755 --- a/plugins/MacVST/DustBunny/DustBunny.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/DustBunny/DustBunny.xcodeproj/christopherjohnson.perspectivev3 @@ -351,11 +351,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D79DA1F7FAA9D007AB60F</string> + <string>8B79396121F5772F006E9731</string> <key>history</key> <array> <string>8BCF31DB1F4E436800632CB6</string> - <string>8B9D6BC21F7EE4EE007AB60F</string> + <string>8B9D79DA1F7FAA9D007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 102}}</string> + <string>{{0, 0}, {603, 86}}</string> <key>RubberWindowFrame</key> <string>354 325 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>102pt</string> + <string>86pt</string> </dict> <dict> <key>Proportion</key> - <string>339pt</string> + <string>355pt</string> <key>Tabs</key> <array> <dict> @@ -394,7 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 312}}</string> + <string>{{10, 27}, {603, 328}}</string> <key>RubberWindowFrame</key> <string>354 325 810 487 0 0 1440 878 </string> </dict> @@ -478,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D79DB1F7FAA9D007AB60F</string> + <string>8B79396221F5772F006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D79DC1F7FAA9D007AB60F</string> + <string>8B79396321F5772F006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D79DD1F7FAA9D007AB60F</string> + <string>8B79396421F5772F006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -655,7 +655,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528460445.29056901</real> + <real>569734959.42124605</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -672,7 +672,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D79DE1F7FAA9D007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/DustBunny/DustBunny.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/EQ/EQ.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/EQ/EQ.xcodeproj/christopherjohnson.pbxuser index a376012..b00c262 100755 --- a/plugins/MacVST/EQ/EQ.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/EQ/EQ.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 541887553; - PBXWorkspaceStateSaveDate = 541887553; + PBXPerProjectTemplateStateSaveDate = 569735191; + PBXWorkspaceStateSaveDate = 569735191; }; perUserProjectItems = { - 8B181AF7204C941100516BEE /* XCBuildMessageTextBookmark */ = 8B181AF7204C941100516BEE /* XCBuildMessageTextBookmark */; 8B181AF8204C941100516BEE /* PBXTextBookmark */ = 8B181AF8204C941100516BEE /* PBXTextBookmark */; + 8B793A0321F57823006E9731 /* PBXTextBookmark */ = 8B793A0321F57823006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -78,9 +78,9 @@ }; 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {838, 19747}}"; + sepNavIntBoundsRect = "{{0, 0}, {838, 19877}}"; sepNavSelRange = "{10616, 0}"; - sepNavVisRange = "{10459, 399}"; + sepNavVisRange = "{10459, 280}"; sepNavWindowFrame = "{{15, 42}, {895, 831}}"; }; }; @@ -106,23 +106,24 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B181AF7204C941100516BEE /* XCBuildMessageTextBookmark */ = { + 8B181AF8204C941100516BEE /* PBXTextBookmark */ = { isa = PBXTextBookmark; - comments = "Deprecated conversion from string constant to 'char*'"; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; - fallbackIsa = XCBuildMessageTextBookmark; - rLen = 1; - rLoc = 306; - rType = 1; + name = "audioeffectx.cpp: 307"; + rLen = 0; + rLoc = 10616; + rType = 0; + vrLen = 399; + vrLoc = 10459; }; - 8B181AF8204C941100516BEE /* PBXTextBookmark */ = { + 8B793A0321F57823006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; name = "audioeffectx.cpp: 307"; rLen = 0; rLoc = 10616; rType = 0; - vrLen = 399; + vrLen = 280; vrLoc = 10459; }; 8D01CCC60486CAD60068D4B7 /* EQ */ = { diff --git a/plugins/MacVST/EQ/EQ.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/EQ/EQ.xcodeproj/christopherjohnson.perspectivev3 index b6f9507..708c37d 100755 --- a/plugins/MacVST/EQ/EQ.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/EQ/EQ.xcodeproj/christopherjohnson.perspectivev3 @@ -256,6 +256,8 @@ <key>Layout</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -349,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B181AF8204C941100516BEE</string> + <string>8B793A0321F57823006E9731</string> <key>history</key> <array> - <string>8B181AF7204C941100516BEE</string> + <string>8B181AF8204C941100516BEE</string> </array> </dict> <key>SplitCount</key> @@ -366,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 132}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> <string>15 373 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -391,7 +393,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 297}}</string> + <key>RubberWindowFrame</key> + <string>15 373 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -446,8 +450,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 282}}</string> - <key>RubberWindowFrame</key> - <string>15 373 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -475,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B181AAB204C8C4800516BEE</string> + <string>8B793A0421F57823006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B181AAC204C8C4800516BEE</string> + <string>8B793A0521F57823006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B181AAD204C8C4800516BEE</string> + <string>8B793A0621F57823006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -632,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>541889553.15927601</real> + <real>569735203.85904706</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -649,8 +651,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B181AF9204C941100516BEE</string> - <string>/Users/christopherjohnson/Desktop/EQ/EQ.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/EQ/EQ.xcodeproj</string> </array> <key>WindowString</key> <string>15 373 810 487 0 0 1440 878 </string> diff --git a/plugins/MacVST/EQ/source/EQ.cpp b/plugins/MacVST/EQ/source/EQ.cpp index ebdadaa..f2e4e01 100755 --- a/plugins/MacVST/EQ/source/EQ.cpp +++ b/plugins/MacVST/EQ/source/EQ.cpp @@ -111,11 +111,8 @@ EQ::EQ(audioMasterCallback audioMaster) : flip = false; flipthree = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/EQ/source/EQ.h b/plugins/MacVST/EQ/source/EQ.h index 4317a2d..26fade4 100755 --- a/plugins/MacVST/EQ/source/EQ.h +++ b/plugins/MacVST/EQ/source/EQ.h @@ -59,11 +59,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double lastSampleL; diff --git a/plugins/MacVST/EQ/source/EQProc.cpp b/plugins/MacVST/EQ/source/EQProc.cpp index 6d994a9..917dc7e 100755 --- a/plugins/MacVST/EQ/source/EQProc.cpp +++ b/plugins/MacVST/EQ/source/EQProc.cpp @@ -20,9 +20,6 @@ void EQ::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames overallscale = getSampleRate(); compscale = compscale * overallscale; //compscale is the one that's 1 or something like 2.2 for 96K rates - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -434,25 +431,14 @@ void EQ::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames inputSampleR *= outputgain; } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -477,9 +463,6 @@ void EQ::processDoubleReplacing(double **inputs, double **outputs, VstInt32 samp overallscale = getSampleRate(); compscale = compscale * overallscale; //compscale is the one that's 1 or something like 2.2 for 96K rates - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -891,25 +874,16 @@ void EQ::processDoubleReplacing(double **inputs, double **outputs, VstInt32 samp inputSampleR *= outputgain; } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.pbxuser index 594376e..83c37d0 100755 --- a/plugins/MacVST/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.pbxuser @@ -49,11 +49,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528460458; - PBXWorkspaceStateSaveDate = 528460458; + PBXPerProjectTemplateStateSaveDate = 569735013; + PBXWorkspaceStateSaveDate = 569735013; }; perUserProjectItems = { - 8B9D6BE11F7EE521007AB60F /* PBXTextBookmark */ = 8B9D6BE11F7EE521007AB60F /* PBXTextBookmark */; + 8B79398121F57771006E9731 /* PBXTextBookmark */ = 8B79398121F57771006E9731 /* PBXTextBookmark */; 8B9D79F01F7FAAB9007AB60F /* PBXTextBookmark */ = 8B9D79F01F7FAAB9007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -106,7 +106,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B9D6BE11F7EE521007AB60F /* PBXTextBookmark */ = { + 8B79398121F57771006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; name = "audioeffectx.cpp: 307"; diff --git a/plugins/MacVST/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.perspectivev3 index cf4c5fa..0d8290a 100755 --- a/plugins/MacVST/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.perspectivev3 @@ -323,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>108 310 810 487 0 0 1440 878 </string> + <string>267 298 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D79F01F7FAAB9007AB60F</string> + <string>8B79398121F57771006E9731</string> <key>history</key> <array> - <string>8B9D6BE11F7EE521007AB60F</string> + <string>8B9D79F01F7FAAB9007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -370,7 +370,7 @@ <key>Frame</key> <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> - <string>108 310 810 487 0 0 1440 878 </string> + <string>267 298 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -395,7 +395,7 @@ <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> <key>RubberWindowFrame</key> - <string>108 310 810 487 0 0 1440 878 </string> + <string>267 298 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D79F11F7FAAB9007AB60F</string> + <string>8B79398221F57771006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D79F21F7FAAB9007AB60F</string> + <string>8B79398321F57771006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D79F31F7FAAB9007AB60F</string> + <string>8B79398421F57771006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528460473.03459197</real> + <real>569735025.80681503</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,11 +651,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D79F41F7FAAB9007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/EdIsDim/EdIsDim.xcodeproj</string> </array> <key>WindowString</key> - <string>108 310 810 487 0 0 1440 878 </string> + <string>267 298 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/EdIsDim/source/EdIsDim.cpp b/plugins/MacVST/EdIsDim/source/EdIsDim.cpp index 6af5dd4..eb6abd3 100755 --- a/plugins/MacVST/EdIsDim/source/EdIsDim.cpp +++ b/plugins/MacVST/EdIsDim/source/EdIsDim.cpp @@ -13,11 +13,8 @@ EdIsDim::EdIsDim(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, kNumPrograms, kNumParameters) { A = 0.5; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/EdIsDim/source/EdIsDim.h b/plugins/MacVST/EdIsDim/source/EdIsDim.h index 8c51883..4f62705 100755 --- a/plugins/MacVST/EdIsDim/source/EdIsDim.h +++ b/plugins/MacVST/EdIsDim/source/EdIsDim.h @@ -52,11 +52,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/EdIsDim/source/EdIsDimProc.cpp b/plugins/MacVST/EdIsDim/source/EdIsDimProc.cpp index 8ee927d..0d033eb 100755 --- a/plugins/MacVST/EdIsDim/source/EdIsDimProc.cpp +++ b/plugins/MacVST/EdIsDim/source/EdIsDimProc.cpp @@ -14,9 +14,6 @@ void EdIsDim::processReplacing(float **inputs, float **outputs, VstInt32 sampleF float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -75,25 +72,14 @@ void EdIsDim::processReplacing(float **inputs, float **outputs, VstInt32 sampleF mid = (inputSampleL+inputSampleR)/2.0; side = (inputSampleL-inputSampleR)/2.0; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = mid; - fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLA; - fpTemp = side; - fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRA; - } - else { - fpTemp = mid; - fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLB; - fpTemp = side; - fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)mid, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + mid += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)side, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + side += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = mid; *out2 = side; @@ -112,9 +98,6 @@ void EdIsDim::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -174,25 +157,16 @@ void EdIsDim::processDoubleReplacing(double **inputs, double **outputs, VstInt32 mid = (inputSampleL+inputSampleR)/2.0; side = (inputSampleL-inputSampleR)/2.0; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = mid; - fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLA; - fpTemp = side; - fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRA; - } - else { - fpTemp = mid; - fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLB; - fpTemp = side; - fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)mid, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + mid += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)side, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + side += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = mid; *out2 = side; diff --git a/plugins/MacVST/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.pbxuser index 002e6ef..bf3d2b1 100755 --- a/plugins/MacVST/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.pbxuser @@ -49,15 +49,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 541289959; - PBXWorkspaceStateSaveDate = 541289959; + PBXPerProjectTemplateStateSaveDate = 569735050; + PBXWorkspaceStateSaveDate = 569735050; }; perUserProjectItems = { + 8B7939A121F57797006E9731 /* PBXTextBookmark */ = 8B7939A121F57797006E9731 /* PBXTextBookmark */; 8BC009F720436BB500304BC7 /* PBXTextBookmark */ = 8BC009F720436BB500304BC7 /* PBXTextBookmark */; - 8BC009F920436BB500304BC7 /* PBXTextBookmark */ = 8BC009F920436BB500304BC7 /* PBXTextBookmark */; - 8BC00A0C20436DEA00304BC7 /* PBXBookmark */ = 8BC00A0C20436DEA00304BC7 /* PBXBookmark */; 8BC00A1E20436E0500304BC7 /* PBXTextBookmark */ = 8BC00A1E20436E0500304BC7 /* PBXTextBookmark */; - 8BC00A1F20436E0500304BC7 /* PBXTextBookmark */ = 8BC00A1F20436E0500304BC7 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -89,9 +87,9 @@ }; 24D8286F09A914000093AEF8 /* ElectroHatProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 3952}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 3705}}"; sepNavSelRange = "{5210, 0}"; - sepNavVisRange = "{5074, 138}"; + sepNavVisRange = "{5118, 103}"; sepNavWindowFrame = "{{57, 47}, {895, 831}}"; }; }; @@ -109,6 +107,16 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; + 8B7939A121F57797006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 24D8286F09A914000093AEF8 /* ElectroHatProc.cpp */; + name = "ElectroHatProc.cpp: 182"; + rLen = 0; + rLoc = 5210; + rType = 0; + vrLen = 103; + vrLoc = 5118; + }; 8BC009F720436BB500304BC7 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 2407DEB6089929BA00EB68BF /* ElectroHat.cpp */; @@ -119,20 +127,6 @@ vrLen = 124; vrLoc = 508; }; - 8BC009F920436BB500304BC7 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 24D8286F09A914000093AEF8 /* ElectroHatProc.cpp */; - name = "ElectroHatProc.cpp: 183"; - rLen = 0; - rLoc = 5210; - rType = 0; - vrLen = 158; - vrLoc = 5057; - }; - 8BC00A0C20436DEA00304BC7 /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 24D8286F09A914000093AEF8 /* ElectroHatProc.cpp */; - }; 8BC00A1E20436E0500304BC7 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* ElectroHatProc.cpp */; @@ -143,16 +137,6 @@ vrLen = 138; vrLoc = 5074; }; - 8BC00A1F20436E0500304BC7 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 24D8286F09A914000093AEF8 /* ElectroHatProc.cpp */; - name = "ElectroHatProc.cpp: 111"; - rLen = 0; - rLoc = 3370; - rType = 0; - vrLen = 1769; - vrLoc = 2424; - }; 8D01CCC60486CAD60068D4B7 /* ElectroHat */ = { activeExec = 0; }; diff --git a/plugins/MacVST/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.perspectivev3 index fa3c51a..c845be7 100755 --- a/plugins/MacVST/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.perspectivev3 @@ -222,48 +222,7 @@ </dict> </array> <key>OpenEditors</key> - <array> - <dict> - <key>Content</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>8BC00A1120436E0500304BC7</string> - <key>PBXProjectModuleLabel</key> - <string>ElectroHatProc.cpp</string> - <key>PBXSplitModuleInNavigatorKey</key> - <dict> - <key>Split0</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>8BC00A1220436E0500304BC7</string> - <key>PBXProjectModuleLabel</key> - <string>ElectroHatProc.cpp</string> - <key>_historyCapacity</key> - <integer>0</integer> - <key>bookmark</key> - <string>8BC00A1F20436E0500304BC7</string> - <key>history</key> - <array> - <string>8BC00A0C20436DEA00304BC7</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, 734}}</string> - <key>PBXModuleWindowStatusBarHidden2</key> - <false/> - <key>RubberWindowFrame</key> - <string>57 103 895 775 0 0 1440 878 </string> - </dict> - </dict> - </array> + <array/> <key>PerspectiveWidths</key> <array> <integer>810</integer> @@ -392,11 +351,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BC00A1E20436E0500304BC7</string> + <string>8B7939A121F57797006E9731</string> <key>history</key> <array> <string>8BC009F720436BB500304BC7</string> - <string>8BC009F920436BB500304BC7</string> + <string>8BC00A1E20436E0500304BC7</string> </array> </dict> <key>SplitCount</key> @@ -410,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 102}}</string> + <string>{{0, 0}, {603, 86}}</string> <key>RubberWindowFrame</key> <string>35 342 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>102pt</string> + <string>86pt</string> </dict> <dict> <key>Proportion</key> - <string>339pt</string> + <string>355pt</string> <key>Tabs</key> <array> <dict> @@ -435,7 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 312}}</string> + <string>{{10, 27}, {603, 328}}</string> <key>RubberWindowFrame</key> <string>35 342 810 487 0 0 1440 878 </string> </dict> @@ -519,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BC00A0E20436E0500304BC7</string> + <string>8B7939A221F57797006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BC00A0F20436E0500304BC7</string> + <string>8B7939A321F57797006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BC00A1020436E0500304BC7</string> + <string>8B7939A421F57797006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -676,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>541289989.72780704</real> + <real>569735063.85601294</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -694,7 +653,6 @@ <key>WindowOrderList</key> <array> <string>/Users/christopherjohnson/Desktop/MacVST/ElectroHat/ElectroHat.xcodeproj</string> - <string>8BC00A1120436E0500304BC7</string> </array> <key>WindowString</key> <string>35 342 810 487 0 0 1440 878 </string> diff --git a/plugins/MacVST/ElectroHat/source/ElectroHat.cpp b/plugins/MacVST/ElectroHat/source/ElectroHat.cpp index 33d1058..6be41e4 100755 --- a/plugins/MacVST/ElectroHat/source/ElectroHat.cpp +++ b/plugins/MacVST/ElectroHat/source/ElectroHat.cpp @@ -25,11 +25,8 @@ ElectroHat::ElectroHat(audioMasterCallback audioMaster) : lok = 0; flip = true; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/ElectroHat/source/ElectroHat.h b/plugins/MacVST/ElectroHat/source/ElectroHat.h index e8aa325..85315cd 100755 --- a/plugins/MacVST/ElectroHat/source/ElectroHat.h +++ b/plugins/MacVST/ElectroHat/source/ElectroHat.h @@ -56,11 +56,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double storedSampleL; diff --git a/plugins/MacVST/ElectroHat/source/ElectroHatProc.cpp b/plugins/MacVST/ElectroHat/source/ElectroHatProc.cpp index 69b1a00..ee5a307 100755 --- a/plugins/MacVST/ElectroHat/source/ElectroHatProc.cpp +++ b/plugins/MacVST/ElectroHat/source/ElectroHatProc.cpp @@ -20,9 +20,6 @@ void ElectroHat::processReplacing(float **inputs, float **outputs, VstInt32 samp bool highSample = false; if (getSampleRate() > 64000) highSample = true; //we will go to another dither for 88 and 96K - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double drySampleL; double drySampleR; @@ -126,25 +123,14 @@ void ElectroHat::processReplacing(float **inputs, float **outputs, VstInt32 samp inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -169,9 +155,6 @@ void ElectroHat::processDoubleReplacing(double **inputs, double **outputs, VstIn bool highSample = false; if (getSampleRate() > 64000) highSample = true; //we will go to another dither for 88 and 96K - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double drySampleL; double drySampleR; @@ -275,25 +258,16 @@ void ElectroHat::processDoubleReplacing(double **inputs, double **outputs, VstIn inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Energy/Energy.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Energy/Energy.xcodeproj/christopherjohnson.pbxuser index 04d99ae..92d94ca 100755 --- a/plugins/MacVST/Energy/Energy.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Energy/Energy.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* Energy */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; breakpoints = ( ); codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; @@ -51,12 +51,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 547867604; - PBXWorkspaceStateSaveDate = 547867604; - }; - perUserProjectItems = { - 8B7E3F4220A7CBD700482CB5 /* PBXBookmark */ = 8B7E3F4220A7CBD700482CB5 /* PBXBookmark */; - 8B7E3F5620A7CBF900482CB5 /* PBXTextBookmark */ = 8B7E3F5620A7CBF900482CB5 /* PBXTextBookmark */; + PBXPerProjectTemplateStateSaveDate = 569735086; + PBXWorkspaceStateSaveDate = 569735086; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -64,7 +60,7 @@ }; 2407DEB6089929BA00EB68BF /* Energy.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 3328}}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 3289}}"; sepNavSelRange = "{6741, 0}"; sepNavVisRange = "{6042, 2997}"; sepNavWindowFrame = "{{31, 47}, {895, 831}}"; @@ -108,21 +104,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B7E3F4220A7CBD700482CB5 /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 2407DEB6089929BA00EB68BF /* Energy.cpp */; - }; - 8B7E3F5620A7CBF900482CB5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 2407DEB6089929BA00EB68BF /* Energy.cpp */; - name = "Energy.cpp: 272"; - rLen = 0; - rLoc = 6741; - rType = 0; - vrLen = 2997; - vrLoc = 6042; - }; - 8D01CCC60486CAD60068D4B7 /* Energy */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/Energy/Energy.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Energy/Energy.xcodeproj/christopherjohnson.perspectivev3 index 7ec6aec..90db29b 100755 --- a/plugins/MacVST/Energy/Energy.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Energy/Energy.xcodeproj/christopherjohnson.perspectivev3 @@ -222,48 +222,7 @@ </dict> </array> <key>OpenEditors</key> - <array> - <dict> - <key>Content</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>8B7E3F5420A7CBF900482CB5</string> - <key>PBXProjectModuleLabel</key> - <string>Energy.cpp</string> - <key>PBXSplitModuleInNavigatorKey</key> - <dict> - <key>Split0</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>8B7E3F5520A7CBF900482CB5</string> - <key>PBXProjectModuleLabel</key> - <string>Energy.cpp</string> - <key>_historyCapacity</key> - <integer>0</integer> - <key>bookmark</key> - <string>8B7E3F5620A7CBF900482CB5</string> - <key>history</key> - <array> - <string>8B7E3F4220A7CBD700482CB5</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, 734}}</string> - <key>PBXModuleWindowStatusBarHidden2</key> - <false/> - <key>RubberWindowFrame</key> - <string>31 103 895 775 0 0 1440 878 </string> - </dict> - </dict> - </array> + <array/> <key>PerspectiveWidths</key> <array> <integer>810</integer> @@ -364,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>4 348 810 487 0 0 1440 878 </string> + <string>218 341 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -403,7 +362,7 @@ <key>Frame</key> <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> - <string>4 348 810 487 0 0 1440 878 </string> + <string>218 341 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -428,7 +387,7 @@ <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> <key>RubberWindowFrame</key> - <string>4 348 810 487 0 0 1440 878 </string> + <string>218 341 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -510,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B7E3F5120A7CBF900482CB5</string> + <string>8B7939C121F577BA006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B7E3F5220A7CBF900482CB5</string> + <string>8B7939C221F577BA006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B7E3F5320A7CBF900482CB5</string> + <string>8B7939C321F577BA006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -687,7 +646,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>547867641.91280901</real> + <real>569735098.81678498</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -705,10 +664,9 @@ <key>WindowOrderList</key> <array> <string>/Users/christopherjohnson/Desktop/MacVST/Energy/Energy.xcodeproj</string> - <string>8B7E3F5420A7CBF900482CB5</string> </array> <key>WindowString</key> - <string>4 348 810 487 0 0 1440 878 </string> + <string>218 341 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/Energy/Energy.xcodeproj/project.pbxproj b/plugins/MacVST/Energy/Energy.xcodeproj/project.pbxproj index 38f994d..d701601 100755 --- a/plugins/MacVST/Energy/Energy.xcodeproj/project.pbxproj +++ b/plugins/MacVST/Energy/Energy.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* Energy */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "Energy" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* Energy */, + 8D01CCC60486CAD60068D4B7 /* AudioUnit */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/Energy/source/EnergyProc.cpp b/plugins/MacVST/Energy/source/EnergyProc.cpp index a72b868..a0a86f8 100755 --- a/plugins/MacVST/Energy/source/EnergyProc.cpp +++ b/plugins/MacVST/Energy/source/EnergyProc.cpp @@ -742,18 +742,14 @@ void Energy::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr //we don't need a drySample because we never touched inputSample //so, this provides the inv/dry/wet control all by itself - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -763,12 +759,6 @@ void Energy::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Energy::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -1506,18 +1496,16 @@ void Energy::processDoubleReplacing(double **inputs, double **outputs, VstInt32 //we don't need a drySample because we never touched inputSample //so, this provides the inv/dry/wet control all by itself - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -1527,10 +1515,4 @@ void Energy::processDoubleReplacing(double **inputs, double **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacVST/Ensemble/Ensemble.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Ensemble/Ensemble.xcodeproj/christopherjohnson.pbxuser index 599610a..2c3d879 100755 --- a/plugins/MacVST/Ensemble/Ensemble.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Ensemble/Ensemble.xcodeproj/christopherjohnson.pbxuser @@ -51,12 +51,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 529847444; - PBXWorkspaceStateSaveDate = 529847444; + PBXPerProjectTemplateStateSaveDate = 569735122; + PBXWorkspaceStateSaveDate = 569735122; }; perUserProjectItems = { - 8B4C965F1F94E0F300064452 /* XCBuildMessageTextBookmark */ = 8B4C965F1F94E0F300064452 /* XCBuildMessageTextBookmark */; - 8B4C96601F94E0F300064452 /* PBXTextBookmark */ = 8B4C96601F94E0F300064452 /* PBXTextBookmark */; + 8B7939DE21F577D7006E9731 /* PBXTextBookmark */ = 8B7939DE21F577D7006E9731 /* PBXTextBookmark */; + 8B7939ED21F57803006E9731 /* PBXTextBookmark */ = 8B7939ED21F57803006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -64,17 +64,17 @@ }; 2407DEB6089929BA00EB68BF /* Ensemble.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {628, 2171}}"; + sepNavIntBoundsRect = "{{0, 0}, {628, 2067}}"; sepNavSelRange = "{656, 0}"; - sepNavVisRange = "{485, 184}"; + sepNavVisRange = "{570, 99}"; sepNavWindowFrame = "{{46, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* Ensemble.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 1118}}"; - sepNavSelRange = "{2554, 0}"; - sepNavVisRange = "{624, 2262}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 1079}}"; + sepNavSelRange = "{2770, 0}"; + sepNavVisRange = "{538, 2294}"; sepNavWindowFrame = "{{505, 39}, {895, 831}}"; }; }; @@ -108,24 +108,25 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B4C965F1F94E0F300064452 /* XCBuildMessageTextBookmark */ = { + 8B7939DE21F577D7006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - comments = "Incompatible types in assignment of 'double' to 'double [49]'"; fRef = 2407DEB6089929BA00EB68BF /* Ensemble.cpp */; - fallbackIsa = XCBuildMessageTextBookmark; - rLen = 1; - rLoc = 21; - rType = 1; + name = "Ensemble.cpp: 22"; + rLen = 0; + rLoc = 656; + rType = 0; + vrLen = 99; + vrLoc = 570; }; - 8B4C96601F94E0F300064452 /* PBXTextBookmark */ = { + 8B7939ED21F57803006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 2407DEB6089929BA00EB68BF /* Ensemble.cpp */; name = "Ensemble.cpp: 22"; rLen = 0; rLoc = 656; rType = 0; - vrLen = 184; - vrLoc = 485; + vrLen = 99; + vrLoc = 570; }; 8D01CCC60486CAD60068D4B7 /* Ensemble */ = { activeExec = 0; diff --git a/plugins/MacVST/Ensemble/Ensemble.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Ensemble/Ensemble.xcodeproj/christopherjohnson.perspectivev3 index 6da0cef..3188f6d 100755 --- a/plugins/MacVST/Ensemble/Ensemble.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Ensemble/Ensemble.xcodeproj/christopherjohnson.perspectivev3 @@ -256,6 +256,8 @@ <key>Layout</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -298,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>7</integer> + <integer>5</integer> <integer>4</integer> <integer>0</integer> </array> @@ -321,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>13 367 810 487 0 0 1440 878 </string> + <string>348 289 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -349,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B4C96601F94E0F300064452</string> + <string>8B7939ED21F57803006E9731</string> <key>history</key> <array> - <string>8B4C965F1F94E0F300064452</string> + <string>8B7939DE21F577D7006E9731</string> </array> </dict> <key>SplitCount</key> @@ -366,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 69}}</string> + <string>{{0, 0}, {603, 51}}</string> <key>RubberWindowFrame</key> - <string>13 367 810 487 0 0 1440 878 </string> + <string>348 289 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>69pt</string> + <string>51pt</string> </dict> <dict> <key>Proportion</key> - <string>372pt</string> + <string>390pt</string> <key>Tabs</key> <array> <dict> @@ -391,7 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 345}}</string> + <string>{{10, 27}, {603, 363}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -445,9 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 345}}</string> + <string>{{10, 27}, {603, 363}}</string> <key>RubberWindowFrame</key> - <string>13 367 810 487 0 0 1440 878 </string> + <string>348 289 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -475,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B4C96611F94E0F300064452</string> + <string>8B7939EE21F57803006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B4C96621F94E0F300064452</string> + <string>8B7939EF21F57803006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B4C96631F94E0F300064452</string> + <string>8B7939F021F57803006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -652,7 +654,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>529850611.29679602</real> + <real>569735171.20292497</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -669,11 +671,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B4C96641F94E0F300064452</string> - <string>/Users/christopherjohnson/Desktop/Ensemble/Ensemble.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/Ensemble/Ensemble.xcodeproj</string> </array> <key>WindowString</key> - <string>13 367 810 487 0 0 1440 878 </string> + <string>348 289 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/Ensemble/source/Ensemble.cpp b/plugins/MacVST/Ensemble/source/Ensemble.cpp index be624b2..b90bf6e 100755 --- a/plugins/MacVST/Ensemble/source/Ensemble.cpp +++ b/plugins/MacVST/Ensemble/source/Ensemble.cpp @@ -28,12 +28,9 @@ Ensemble::Ensemble(audioMasterCallback audioMaster) : airEvenR = 0.0; airOddR = 0.0; airFactorR = 0.0; - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Ensemble/source/Ensemble.h b/plugins/MacVST/Ensemble/source/Ensemble.h index 32ba8c0..7697d93 100755 --- a/plugins/MacVST/Ensemble/source/Ensemble.h +++ b/plugins/MacVST/Ensemble/source/Ensemble.h @@ -55,11 +55,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff const static int totalsamples = 65540; float dL[totalsamples]; @@ -74,7 +71,7 @@ private: double airEvenR; double airOddR; double airFactorR; - + bool fpFlip; float A; float B; float C; diff --git a/plugins/MacVST/Ensemble/source/EnsembleProc.cpp b/plugins/MacVST/Ensemble/source/EnsembleProc.cpp index 679e868..e9a3a43 100755 --- a/plugins/MacVST/Ensemble/source/EnsembleProc.cpp +++ b/plugins/MacVST/Ensemble/source/EnsembleProc.cpp @@ -37,9 +37,6 @@ void Ensemble::processReplacing(float **inputs, float **outputs, VstInt32 sample double tempL; double tempR; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -117,7 +114,8 @@ void Ensemble::processReplacing(float **inputs, float **outputs, VstInt32 sample airPrevR = inputSampleR; inputSampleR += (airFactorR*brighten); //air, compensates for loss of highs in flanger's interpolation - + fpFlip = !fpFlip; + if (gcount < 1 || gcount > 32767) {gcount = 32767;} count = gcount; dL[count+32767] = dL[count] = tempL = inputSampleL; @@ -155,25 +153,14 @@ void Ensemble::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -215,9 +202,6 @@ void Ensemble::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double tempL; double tempR; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -295,6 +279,7 @@ void Ensemble::processDoubleReplacing(double **inputs, double **outputs, VstInt3 airPrevR = inputSampleR; inputSampleR += (airFactorR*brighten); //air, compensates for loss of highs in flanger's interpolation + fpFlip = !fpFlip; if (gcount < 1 || gcount > 32767) {gcount = 32767;} count = gcount; @@ -333,25 +318,16 @@ void Ensemble::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.pbxuser index ebc50eb..b623a38 100755 --- a/plugins/MacVST/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* EveryTrim */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 532471894; - PBXWorkspaceStateSaveDate = 532471894; + PBXPerProjectTemplateStateSaveDate = 569735228; + PBXWorkspaceStateSaveDate = 569735228; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* EveryTrim */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.perspectivev3 index cc28805..09818e7 100755 --- a/plugins/MacVST/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.perspectivev3 @@ -323,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>653 231 810 487 0 0 1440 878 </string> + <string>630 231 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -362,7 +362,7 @@ <key>Frame</key> <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> - <string>653 231 810 487 0 0 1440 878 </string> + <string>630 231 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -387,7 +387,7 @@ <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> <key>RubberWindowFrame</key> - <string>653 231 810 487 0 0 1440 878 </string> + <string>630 231 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BB5DD0E1FBCE05D008B4570</string> + <string>8B793A2521F57858006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BB5DD0F1FBCE05D008B4570</string> + <string>8B793A2621F57858006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BB5DD101FBCE05D008B4570</string> + <string>8B793A2721F57858006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>532472312.54818797</real> + <real>569735256.70818996</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,11 +643,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BB5DD481FBCE1F8008B4570</string> <string>/Users/christopherjohnson/Desktop/MacVST/EveryTrim/EveryTrim.xcodeproj</string> </array> <key>WindowString</key> - <string>653 231 810 487 0 0 1440 878 </string> + <string>630 231 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/EveryTrim/EveryTrim.xcodeproj/project.pbxproj b/plugins/MacVST/EveryTrim/EveryTrim.xcodeproj/project.pbxproj index d45d548..e1a1fd8 100755 --- a/plugins/MacVST/EveryTrim/EveryTrim.xcodeproj/project.pbxproj +++ b/plugins/MacVST/EveryTrim/EveryTrim.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* EveryTrim */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "EveryTrim" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* EveryTrim */, + 8D01CCC60486CAD60068D4B7 /* AudioUnit */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/EveryTrim/source/EveryTrim.cpp b/plugins/MacVST/EveryTrim/source/EveryTrim.cpp index 1e81d35..b0a98d4 100755 --- a/plugins/MacVST/EveryTrim/source/EveryTrim.cpp +++ b/plugins/MacVST/EveryTrim/source/EveryTrim.cpp @@ -17,11 +17,8 @@ EveryTrim::EveryTrim(audioMasterCallback audioMaster) : C = 0.5; D = 0.5; E = 0.5; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/EveryTrim/source/EveryTrim.h b/plugins/MacVST/EveryTrim/source/EveryTrim.h index 28d9c27..4efc3cd 100755 --- a/plugins/MacVST/EveryTrim/source/EveryTrim.h +++ b/plugins/MacVST/EveryTrim/source/EveryTrim.h @@ -56,11 +56,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/EveryTrim/source/EveryTrimProc.cpp b/plugins/MacVST/EveryTrim/source/EveryTrimProc.cpp index 30d764f..3c30eda 100755 --- a/plugins/MacVST/EveryTrim/source/EveryTrimProc.cpp +++ b/plugins/MacVST/EveryTrim/source/EveryTrimProc.cpp @@ -14,9 +14,6 @@ void EveryTrim::processReplacing(float **inputs, float **outputs, VstInt32 sampl float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double leftgain = pow(10.0,((A*24.0)-12.0)/20.0); double rightgain = pow(10.0,((B*24.0)-12.0)/20.0); @@ -83,25 +80,14 @@ void EveryTrim::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleR = (mid-side) * rightgain; //contains mastergain and the gain trim fixing the mid/side - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -120,9 +106,6 @@ void EveryTrim::processDoubleReplacing(double **inputs, double **outputs, VstInt double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double leftgain = pow(10.0,((A*24.0)-12.0)/20.0); double rightgain = pow(10.0,((B*24.0)-12.0)/20.0); @@ -189,25 +172,16 @@ void EveryTrim::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleR = (mid-side) * rightgain; //contains mastergain and the gain trim fixing the mid/side - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/FathomFive/FathomFive.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/FathomFive/FathomFive.xcodeproj/christopherjohnson.pbxuser index 8762267..ce01624 100755 --- a/plugins/MacVST/FathomFive/FathomFive.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/FathomFive/FathomFive.xcodeproj/christopherjohnson.pbxuser @@ -49,13 +49,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528460484; - PBXWorkspaceStateSaveDate = 528460484; + PBXPerProjectTemplateStateSaveDate = 569735282; + PBXWorkspaceStateSaveDate = 569735282; }; perUserProjectItems = { 8B21780D1D7BA3A500797BDD /* PBXTextBookmark */ = 8B21780D1D7BA3A500797BDD /* PBXTextBookmark */; 8B4E72C81D7B161E00EE9940 /* PBXTextBookmark */ = 8B4E72C81D7B161E00EE9940 /* PBXTextBookmark */; - 8B9D6C161F7EE565007AB60F /* PBXTextBookmark */ = 8B9D6C161F7EE565007AB60F /* PBXTextBookmark */; + 8B793A4421F57884006E9731 /* PBXTextBookmark */ = 8B793A4421F57884006E9731 /* PBXTextBookmark */; 8B9D7A101F7FAAD9007AB60F /* PBXTextBookmark */ = 8B9D7A101F7FAAD9007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -72,9 +72,9 @@ }; 245463B80991757100464AD3 /* FathomFive.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {600, 1131}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 1079}}"; sepNavSelRange = "{491, 0}"; - sepNavVisRange = "{464, 55}"; + sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{513, 39}, {895, 831}}"; }; }; @@ -144,15 +144,15 @@ vrLen = 0; vrLoc = 0; }; - 8B9D6C161F7EE565007AB60F /* PBXTextBookmark */ = { + 8B793A4421F57884006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 245463B80991757100464AD3 /* FathomFive.h */; name = "FathomFive.h: 26"; rLen = 0; rLoc = 491; rType = 0; - vrLen = 55; - vrLoc = 464; + vrLen = 0; + vrLoc = 0; }; 8B9D7A101F7FAAD9007AB60F /* PBXTextBookmark */ = { isa = PBXTextBookmark; diff --git a/plugins/MacVST/FathomFive/FathomFive.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/FathomFive/FathomFive.xcodeproj/christopherjohnson.perspectivev3 index 0719e14..eb66b06 100755 --- a/plugins/MacVST/FathomFive/FathomFive.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/FathomFive/FathomFive.xcodeproj/christopherjohnson.perspectivev3 @@ -323,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>630 284 810 487 0 0 1440 878 </string> + <string>607 307 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -351,12 +351,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D7A101F7FAAD9007AB60F</string> + <string>8B793A4421F57884006E9731</string> <key>history</key> <array> <string>8B4E72C81D7B161E00EE9940</string> <string>8B21780D1D7BA3A500797BDD</string> - <string>8B9D6C161F7EE565007AB60F</string> + <string>8B9D7A101F7FAAD9007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 51}}</string> + <string>{{0, 0}, {603, 32}}</string> <key>RubberWindowFrame</key> - <string>630 284 810 487 0 0 1440 878 </string> + <string>607 307 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>51pt</string> + <string>32pt</string> </dict> <dict> <key>Proportion</key> - <string>390pt</string> + <string>409pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +395,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 363}}</string> + <string>{{10, 27}, {603, 382}}</string> <key>RubberWindowFrame</key> - <string>630 284 810 487 0 0 1440 878 </string> + <string>607 307 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -479,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7A111F7FAAD9007AB60F</string> + <string>8B793A4521F57884006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7A121F7FAAD9007AB60F</string> + <string>8B793A4621F57884006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7A131F7FAAD9007AB60F</string> + <string>8B793A4721F57884006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528460505.71975499</real> + <real>569735300.74946201</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,11 +653,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7A141F7FAAD9007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/FathomFive/FathomFive.xcodeproj</string> </array> <key>WindowString</key> - <string>630 284 810 487 0 0 1440 878 </string> + <string>607 307 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/FathomFive/source/FathomFive.cpp b/plugins/MacVST/FathomFive/source/FathomFive.cpp index 8cd3f52..fd04b6d 100755 --- a/plugins/MacVST/FathomFive/source/FathomFive.cpp +++ b/plugins/MacVST/FathomFive/source/FathomFive.cpp @@ -100,16 +100,6 @@ void FathomFive::setParameter(VstInt32 index, float value) { //variables can also be set in the processreplacing loop, and there they'll be set every buffersize //here they're set when a parameter's actually changed, which should be less frequent, but //you must use global variables in the FathomFive.h file to do it. -// switch((VstInt32)( D * 3.999 )) -// { -// case 0: fpFlip = true; break; //choice A -// case 1: fpFlip = false; break; //choice B -// case 2: break; //choice C -// case 3: break; //choice D -// default: break; //should not happen -// } - //this relates to using D as a 'popup' and changing things based on that switch. - //we are using fpFlip just because it's already there globally, as an example. } float FathomFive::getParameter(VstInt32 index) { diff --git a/plugins/MacVST/Floor/Floor.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Floor/Floor.xcodeproj/christopherjohnson.pbxuser index 612e5ad..80b3123 100755 --- a/plugins/MacVST/Floor/Floor.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Floor/Floor.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 561685582; - PBXWorkspaceStateSaveDate = 561685582; + PBXPerProjectTemplateStateSaveDate = 569735322; + PBXWorkspaceStateSaveDate = 569735322; }; perUserProjectItems = { 8B15DD34217AAF67007AD769 /* PBXTextBookmark */ = 8B15DD34217AAF67007AD769 /* PBXTextBookmark */; - 8B42FCB721604F9E0092969A /* PBXTextBookmark */ = 8B42FCB721604F9E0092969A /* PBXTextBookmark */; + 8B793A6E21F578D2006E9731 /* PBXTextBookmark */ = 8B793A6E21F578D2006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -70,9 +70,9 @@ }; 245463B80991757100464AD3 /* Floor.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 1170}}"; + sepNavIntBoundsRect = "{{0, 0}, {600, 1365}}"; sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{485, 163}"; + sepNavVisRange = "{485, 155}"; sepNavWindowFrame = "{{20, 47}, {895, 831}}"; }; }; @@ -116,15 +116,15 @@ vrLen = 163; vrLoc = 485; }; - 8B42FCB721604F9E0092969A /* PBXTextBookmark */ = { + 8B793A6E21F578D2006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 245463B80991757100464AD3 /* Floor.h */; name = "Floor.h: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 217; - vrLoc = 459; + vrLen = 155; + vrLoc = 485; }; 8D01CCC60486CAD60068D4B7 /* Floor */ = { activeExec = 0; diff --git a/plugins/MacVST/Floor/Floor.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Floor/Floor.xcodeproj/christopherjohnson.perspectivev3 index 853f35f..3af6cc1 100755 --- a/plugins/MacVST/Floor/Floor.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Floor/Floor.xcodeproj/christopherjohnson.perspectivev3 @@ -323,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>21 338 810 487 0 0 1440 878 </string> + <string>334 313 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B15DD34217AAF67007AD769</string> + <string>8B793A6E21F578D2006E9731</string> <key>history</key> <array> - <string>8B42FCB721604F9E0092969A</string> + <string>8B15DD34217AAF67007AD769</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 117}}</string> + <string>{{0, 0}, {603, 102}}</string> <key>RubberWindowFrame</key> - <string>21 338 810 487 0 0 1440 878 </string> + <string>334 313 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>117pt</string> + <string>102pt</string> </dict> <dict> <key>Proportion</key> - <string>324pt</string> + <string>339pt</string> <key>Tabs</key> <array> <dict> @@ -393,9 +393,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 297}}</string> + <string>{{10, 27}, {603, 312}}</string> <key>RubberWindowFrame</key> - <string>21 338 810 487 0 0 1440 878 </string> + <string>334 313 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B15DD35217AAF67007AD769</string> + <string>8B793A6F21F578D2006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B15DD36217AAF67007AD769</string> + <string>8B793A7021F578D2006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B15DD37217AAF67007AD769</string> + <string>8B793A7121F578D2006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>561688423.58535099</real> + <real>569735378.06358504</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,12 +651,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B15DD38217AAF67007AD769</string> - <string>8B15DD39217AAF67007AD769</string> - <string>/Users/christopherjohnson/Desktop/Floor/Floor.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/Floor/Floor.xcodeproj</string> </array> <key>WindowString</key> - <string>21 338 810 487 0 0 1440 878 </string> + <string>334 313 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/Floor/source/FloorProc.cpp b/plugins/MacVST/Floor/source/FloorProc.cpp index 69a2ccb..865446b 100755 --- a/plugins/MacVST/Floor/source/FloorProc.cpp +++ b/plugins/MacVST/Floor/source/FloorProc.cpp @@ -247,18 +247,14 @@ void Floor::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -268,12 +264,6 @@ void Floor::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Floor::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -516,18 +506,16 @@ void Floor::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -537,10 +525,4 @@ void Floor::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacVST/Fracture/Fracture.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Fracture/Fracture.xcodeproj/christopherjohnson.pbxuser index 319327c..46f29ff 100755 --- a/plugins/MacVST/Fracture/Fracture.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Fracture/Fracture.xcodeproj/christopherjohnson.pbxuser @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528460537; - PBXWorkspaceStateSaveDate = 528460537; + PBXPerProjectTemplateStateSaveDate = 569735404; + PBXWorkspaceStateSaveDate = 569735404; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { diff --git a/plugins/MacVST/Fracture/Fracture.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Fracture/Fracture.xcodeproj/christopherjohnson.perspectivev3 index 3c29fa7..da6f297 100755 --- a/plugins/MacVST/Fracture/Fracture.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Fracture/Fracture.xcodeproj/christopherjohnson.perspectivev3 @@ -339,13 +339,15 @@ <key>PBXProjectModuleGUID</key> <string>8B0237581D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string><No Editor></string> + <string></string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> <dict> <key>PBXProjectModuleGUID</key> <string>8B0237591D42B1C400E1E8C8</string> + <key>PBXProjectModuleLabel</key> + <string></string> </dict> <key>SplitCount</key> <string>1</string> @@ -467,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7A301F7FAB0C007AB60F</string> + <string>8B793A8421F578F8006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7A311F7FAB0C007AB60F</string> + <string>8B793A8521F578F8006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7A321F7FAB0C007AB60F</string> + <string>8B793A8621F578F8006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -624,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528460556.044348</real> + <real>569735416.520316</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -641,7 +643,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7A331F7FAB0C007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/Fracture/Fracture.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Fracture/source/Fracture.cpp b/plugins/MacVST/Fracture/source/Fracture.cpp index 255475a..03f3b19 100755 --- a/plugins/MacVST/Fracture/source/Fracture.cpp +++ b/plugins/MacVST/Fracture/source/Fracture.cpp @@ -16,11 +16,8 @@ Fracture::Fracture(audioMasterCallback audioMaster) : B = 0.5; //2 from 1 to 3: (B*2.999)+1 C = 1.0; D = 1.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Fracture/source/Fracture.h b/plugins/MacVST/Fracture/source/Fracture.h index 659f94b..49d2718 100755 --- a/plugins/MacVST/Fracture/source/Fracture.h +++ b/plugins/MacVST/Fracture/source/Fracture.h @@ -55,11 +55,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/Fracture/source/FractureProc.cpp b/plugins/MacVST/Fracture/source/FractureProc.cpp index 8e217d8..5c1aaa9 100755 --- a/plugins/MacVST/Fracture/source/FractureProc.cpp +++ b/plugins/MacVST/Fracture/source/FractureProc.cpp @@ -14,9 +14,6 @@ void Fracture::processReplacing(float **inputs, float **outputs, VstInt32 sample float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double density = A*4; double fracture = (((B*2.999)+1)*3.14159265358979); @@ -101,25 +98,14 @@ void Fracture::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleL = (drySampleL * dry)+(inputSampleL * wet); inputSampleR = (drySampleR * dry)+(inputSampleR * wet); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -141,9 +127,6 @@ void Fracture::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double density = A*4; double fracture = (((B*2.999)+1)*3.14159265358979); @@ -228,25 +211,16 @@ void Fracture::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleL = (drySampleL * dry)+(inputSampleL * wet); inputSampleR = (drySampleR * dry)+(inputSampleR * wet); - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/FromTape/FromTape.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/FromTape/FromTape.xcodeproj/christopherjohnson.pbxuser index c1ba3e0..dc3d1fa 100755 --- a/plugins/MacVST/FromTape/FromTape.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/FromTape/FromTape.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* FromTape */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; breakpoints = ( ); codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; @@ -51,12 +51,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528460565; - PBXWorkspaceStateSaveDate = 528460565; - }; - perUserProjectItems = { - 8B9D6C631F7EE5D4007AB60F /* PBXTextBookmark */ = 8B9D6C631F7EE5D4007AB60F /* PBXTextBookmark */; - 8B9D7A521F7FAB2D007AB60F /* PBXTextBookmark */ = 8B9D7A521F7FAB2D007AB60F /* PBXTextBookmark */; + PBXPerProjectTemplateStateSaveDate = 569735440; + PBXWorkspaceStateSaveDate = 569735440; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -72,7 +68,7 @@ }; 245463B80991757100464AD3 /* FromTape.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 1807}}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 1768}}"; sepNavSelRange = "{3812, 0}"; sepNavVisRange = "{329, 2291}"; sepNavWindowFrame = "{{545, 47}, {895, 831}}"; @@ -108,27 +104,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B9D6C631F7EE5D4007AB60F /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 245463B80991757100464AD3 /* FromTape.h */; - name = "FromTape.h: 128"; - rLen = 0; - rLoc = 3812; - rType = 0; - vrLen = 2291; - vrLoc = 329; - }; - 8B9D7A521F7FAB2D007AB60F /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 245463B80991757100464AD3 /* FromTape.h */; - name = "FromTape.h: 128"; - rLen = 0; - rLoc = 3812; - rType = 0; - vrLen = 2291; - vrLoc = 329; - }; - 8D01CCC60486CAD60068D4B7 /* FromTape */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/FromTape/FromTape.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/FromTape/FromTape.xcodeproj/christopherjohnson.perspectivev3 index 8d556d7..070d7b1 100755 --- a/plugins/MacVST/FromTape/FromTape.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/FromTape/FromTape.xcodeproj/christopherjohnson.perspectivev3 @@ -222,48 +222,7 @@ </dict> </array> <key>OpenEditors</key> - <array> - <dict> - <key>Content</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>8B2B778A1F6D6FF800A2CD5B</string> - <key>PBXProjectModuleLabel</key> - <string>FromTape.h</string> - <key>PBXSplitModuleInNavigatorKey</key> - <dict> - <key>Split0</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>8B2B778B1F6D6FF800A2CD5B</string> - <key>PBXProjectModuleLabel</key> - <string>FromTape.h</string> - <key>_historyCapacity</key> - <integer>0</integer> - <key>bookmark</key> - <string>8B9D7A521F7FAB2D007AB60F</string> - <key>history</key> - <array> - <string>8B9D6C631F7EE5D4007AB60F</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, 734}}</string> - <key>PBXModuleWindowStatusBarHidden2</key> - <false/> - <key>RubberWindowFrame</key> - <string>545 103 895 775 0 0 1440 878 </string> - </dict> - </dict> - </array> + <array/> <key>PerspectiveWidths</key> <array> <integer>810</integer> @@ -510,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7A4F1F7FAB2D007AB60F</string> + <string>8B793AA321F5791C006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7A501F7FAB2D007AB60F</string> + <string>8B793AA421F5791C006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7A511F7FAB2D007AB60F</string> + <string>8B793AA521F5791C006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -687,7 +646,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528460589.56712198</real> + <real>569735452.09700799</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -704,7 +663,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7A531F7FAB2D007AB60F</string> <string>8B2B778A1F6D6FF800A2CD5B</string> <string>/Users/christopherjohnson/Desktop/MacVST/FromTape/FromTape.xcodeproj</string> </array> diff --git a/plugins/MacVST/FromTape/FromTape.xcodeproj/project.pbxproj b/plugins/MacVST/FromTape/FromTape.xcodeproj/project.pbxproj index 1f0cea0..8175f33 100755 --- a/plugins/MacVST/FromTape/FromTape.xcodeproj/project.pbxproj +++ b/plugins/MacVST/FromTape/FromTape.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* FromTape */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "FromTape" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* FromTape */, + 8D01CCC60486CAD60068D4B7 /* AudioUnit */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/FromTape/source/FromTape.cpp b/plugins/MacVST/FromTape/source/FromTape.cpp index 55c5ced..40b7876 100755 --- a/plugins/MacVST/FromTape/source/FromTape.cpp +++ b/plugins/MacVST/FromTape/source/FromTape.cpp @@ -82,11 +82,8 @@ FromTape::FromTape(audioMasterCallback audioMaster) : flip = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/FromTape/source/FromTape.h b/plugins/MacVST/FromTape/source/FromTape.h index 376b767..40efabc 100755 --- a/plugins/MacVST/FromTape/source/FromTape.h +++ b/plugins/MacVST/FromTape/source/FromTape.h @@ -120,11 +120,8 @@ private: double iirSampleYR; double iirSampleZR; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/FromTape/source/FromTapeProc.cpp b/plugins/MacVST/FromTape/source/FromTapeProc.cpp index 42753e5..2d268ef 100755 --- a/plugins/MacVST/FromTape/source/FromTapeProc.cpp +++ b/plugins/MacVST/FromTape/source/FromTapeProc.cpp @@ -37,9 +37,6 @@ void FromTape::processReplacing(float **inputs, float **outputs, VstInt32 sample double drySampleR; double randy; double invrandy; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -224,25 +221,14 @@ void FromTape::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -284,9 +270,6 @@ void FromTape::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double drySampleR; double randy; double invrandy; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -471,25 +454,16 @@ void FromTape::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Gatelope/Gatelope.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Gatelope/Gatelope.xcodeproj/christopherjohnson.pbxuser index b9cbf51..bc12e1c 100755 --- a/plugins/MacVST/Gatelope/Gatelope.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Gatelope/Gatelope.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 565578826; - PBXWorkspaceStateSaveDate = 565578826; + PBXPerProjectTemplateStateSaveDate = 569735474; + PBXWorkspaceStateSaveDate = 569735474; }; perUserProjectItems = { 8B416DA521B60DFE00DD5013 /* PBXTextBookmark */ = 8B416DA521B60DFE00DD5013 /* PBXTextBookmark */; - 8BDA3BB721B3655A00CC56FA /* PBXTextBookmark */ = 8BDA3BB721B3655A00CC56FA /* PBXTextBookmark */; + 8B793AC221F57942006E9731 /* PBXTextBookmark */ = 8B793AC221F57942006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -78,9 +78,9 @@ }; 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {838, 19838}}"; + sepNavIntBoundsRect = "{{0, 0}, {747, 19864}}"; sepNavSelRange = "{10616, 0}"; - sepNavVisRange = "{10613, 123}"; + sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{15, 42}, {895, 831}}"; }; }; @@ -116,15 +116,15 @@ vrLen = 123; vrLoc = 10613; }; - 8BDA3BB721B3655A00CC56FA /* PBXTextBookmark */ = { + 8B793AC221F57942006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; name = "audioeffectx.cpp: 307"; rLen = 0; rLoc = 10616; rType = 0; - vrLen = 123; - vrLoc = 10613; + vrLen = 0; + vrLoc = 0; }; 8D01CCC60486CAD60068D4B7 /* Gatelope */ = { activeExec = 0; diff --git a/plugins/MacVST/Gatelope/Gatelope.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Gatelope/Gatelope.xcodeproj/christopherjohnson.perspectivev3 index f01e0a3..f643443 100755 --- a/plugins/MacVST/Gatelope/Gatelope.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Gatelope/Gatelope.xcodeproj/christopherjohnson.perspectivev3 @@ -323,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>17 371 810 487 0 0 1440 878 </string> + <string>460 296 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B416DA521B60DFE00DD5013</string> + <string>8B793AC221F57942006E9731</string> <key>history</key> <array> - <string>8BDA3BB721B3655A00CC56FA</string> + <string>8B416DA521B60DFE00DD5013</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 51}}</string> + <string>{{0, 0}, {603, 32}}</string> <key>RubberWindowFrame</key> - <string>17 371 810 487 0 0 1440 878 </string> + <string>460 296 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>51pt</string> + <string>32pt</string> </dict> <dict> <key>Proportion</key> - <string>390pt</string> + <string>409pt</string> <key>Tabs</key> <array> <dict> @@ -393,9 +393,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 363}}</string> + <string>{{10, 27}, {603, 382}}</string> <key>RubberWindowFrame</key> - <string>17 371 810 487 0 0 1440 878 </string> + <string>460 296 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B416DA621B60DFE00DD5013</string> + <string>8B793AC321F57942006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B416DA721B60DFE00DD5013</string> + <string>8B793AC421F57942006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B416DA821B60DFE00DD5013</string> + <string>8B793AC521F57942006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>565579262.52925205</real> + <real>569735490.74607503</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -654,7 +654,7 @@ <string>/Users/christopherjohnson/Desktop/MacVST/Gatelope/Gatelope.xcodeproj</string> </array> <key>WindowString</key> - <string>17 371 810 487 0 0 1440 878 </string> + <string>460 296 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/Gatelope/source/GatelopeProc.cpp b/plugins/MacVST/Gatelope/source/GatelopeProc.cpp index b32bddb..f429042 100755 --- a/plugins/MacVST/Gatelope/source/GatelopeProc.cpp +++ b/plugins/MacVST/Gatelope/source/GatelopeProc.cpp @@ -196,18 +196,14 @@ void Gatelope::processReplacing(float **inputs, float **outputs, VstInt32 sample flip = !flip; - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -217,12 +213,6 @@ void Gatelope::processReplacing(float **inputs, float **outputs, VstInt32 sample *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Gatelope::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -414,18 +404,16 @@ void Gatelope::processDoubleReplacing(double **inputs, double **outputs, VstInt3 flip = !flip; - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -435,10 +423,4 @@ void Gatelope::processDoubleReplacing(double **inputs, double **outputs, VstInt3 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacVST/Golem/Golem.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Golem/Golem.xcodeproj/christopherjohnson.pbxuser index 795dec3..92a9864 100755 --- a/plugins/MacVST/Golem/Golem.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Golem/Golem.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 546574396; - PBXWorkspaceStateSaveDate = 546574396; + PBXPerProjectTemplateStateSaveDate = 569735514; + PBXWorkspaceStateSaveDate = 569735514; }; perUserProjectItems = { - 8BC5D0B1209410C30058B257 /* PBXTextBookmark */ = 8BC5D0B1209410C30058B257 /* PBXTextBookmark */; - 8BC5D0B2209410C30058B257 /* PBXTextBookmark */ = 8BC5D0B2209410C30058B257 /* PBXTextBookmark */; + 8B793AE021F57961006E9731 /* PBXTextBookmark */ = 8B793AE021F57961006E9731 /* PBXTextBookmark */; + 8B793AF221F579C4006E9731 /* PBXTextBookmark */ = 8B793AF221F579C4006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -62,17 +62,17 @@ }; 2407DEB6089929BA00EB68BF /* Golem.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 1963}}"; - sepNavSelRange = "{3822, 11}"; - sepNavVisRange = "{2936, 2411}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 1989}}"; + sepNavSelRange = "{558, 0}"; + sepNavVisRange = "{0, 1950}"; sepNavWindowFrame = "{{12, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* Golem.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 897}}"; - sepNavSelRange = "{2496, 0}"; - sepNavVisRange = "{2414, 147}"; + sepNavIntBoundsRect = "{{0, 0}, {817, 923}}"; + sepNavSelRange = "{2444, 0}"; + sepNavVisRange = "{2413, 96}"; sepNavWindowFrame = "{{20, 47}, {895, 831}}"; }; }; @@ -86,9 +86,9 @@ }; 24D8286F09A914000093AEF8 /* GolemProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 3653}}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 3354}}"; sepNavSelRange = "{5207, 0}"; - sepNavVisRange = "{4697, 1871}"; + sepNavVisRange = "{6969, 1540}"; sepNavWindowFrame = "{{54, 47}, {895, 831}}"; }; }; @@ -106,25 +106,25 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8BC5D0B1209410C30058B257 /* PBXTextBookmark */ = { + 8B793AE021F57961006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 245463B80991757100464AD3 /* Golem.h */; name = "Golem.h: 61"; rLen = 0; - rLoc = 2496; + rLoc = 2444; rType = 0; - vrLen = 147; + vrLen = 133; vrLoc = 2414; }; - 8BC5D0B2209410C30058B257 /* PBXTextBookmark */ = { + 8B793AF221F579C4006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 245463B80991757100464AD3 /* Golem.h */; - name = "Golem.h: 61"; + name = "Golem.h: 59"; rLen = 0; - rLoc = 2496; + rLoc = 2444; rType = 0; - vrLen = 147; - vrLoc = 2414; + vrLen = 96; + vrLoc = 2413; }; 8D01CCC60486CAD60068D4B7 /* Golem */ = { activeExec = 0; diff --git a/plugins/MacVST/Golem/Golem.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Golem/Golem.xcodeproj/christopherjohnson.perspectivev3 index 62ce38b..0726bc5 100755 --- a/plugins/MacVST/Golem/Golem.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Golem/Golem.xcodeproj/christopherjohnson.perspectivev3 @@ -323,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>23 322 810 487 0 0 1440 878 </string> + <string>504 266 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BC5D0B2209410C30058B257</string> + <string>8B793AF221F579C4006E9731</string> <key>history</key> <array> - <string>8BC5D0B1209410C30058B257</string> + <string>8B793AE021F57961006E9731</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 132}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> - <string>23 322 810 487 0 0 1440 878 </string> + <string>504 266 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -393,9 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> - <key>RubberWindowFrame</key> - <string>23 322 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 297}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -449,7 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 297}}</string> + <key>RubberWindowFrame</key> + <string>504 266 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BC5D0B3209410C30058B257</string> + <string>8B793AF321F579C4006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BC5D0B4209410C30058B257</string> + <string>8B793AF421F579C4006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BC5D0B5209410C30058B257</string> + <string>8B793AF521F579C4006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>546574531.81958306</real> + <real>569735620.885432</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -654,7 +654,7 @@ <string>/Users/christopherjohnson/Desktop/MacVST/Golem/Golem.xcodeproj</string> </array> <key>WindowString</key> - <string>23 322 810 487 0 0 1440 878 </string> + <string>504 266 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/Golem/source/Golem.cpp b/plugins/MacVST/Golem/source/Golem.cpp index 8f63b48..c99c5cd 100755 --- a/plugins/MacVST/Golem/source/Golem.cpp +++ b/plugins/MacVST/Golem/source/Golem.cpp @@ -17,10 +17,8 @@ Golem::Golem(audioMasterCallback audioMaster) : C = 0.0; for(count = 0; count < 4098; count++) {p[count] = 0.0;} count = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; flip = true; //this is reset: values being initialized only once. Startup values, whatever they are. diff --git a/plugins/MacVST/Golem/source/Golem.h b/plugins/MacVST/Golem/source/Golem.h index 8bb81d8..e02ab78 100755 --- a/plugins/MacVST/Golem/source/Golem.h +++ b/plugins/MacVST/Golem/source/Golem.h @@ -54,10 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; + long double fpNShapeL; + long double fpNShapeR; bool flip; //default stuff double p[4099]; diff --git a/plugins/MacVST/Golem/source/GolemProc.cpp b/plugins/MacVST/Golem/source/GolemProc.cpp index 9235869..1d7e9f5 100755 --- a/plugins/MacVST/Golem/source/GolemProc.cpp +++ b/plugins/MacVST/Golem/source/GolemProc.cpp @@ -14,9 +14,6 @@ void Golem::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; int phase = (int)((C * 5.999)+1); double balance = ((A*2.0)-1.0) / 2.0; double gainL = 0.5 - balance; @@ -115,25 +112,14 @@ void Golem::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra inputSampleR = inputSampleL; //the output is totally mono - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -152,9 +138,6 @@ void Golem::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; int phase = (int)((C * 5.999)+1); double balance = ((A*2.0)-1.0) / 2.0; double gainL = 0.5 - balance; @@ -253,25 +236,16 @@ void Golem::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s inputSampleR = inputSampleL; //the output is totally mono - //noise shaping to 64-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - flip = !flip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.pbxuser index 32ae3e2..d93196d 100644..100755 --- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* GrooveWear */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 538681972; - PBXWorkspaceStateSaveDate = 538681972; + PBXPerProjectTemplateStateSaveDate = 569735642; + PBXWorkspaceStateSaveDate = 569735642; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -58,18 +58,18 @@ }; 2407DEB6089929BA00EB68BF /* GrooveWear.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 1976}}"; - sepNavSelRange = "{853, 0}"; - sepNavVisRange = "{3082, 2076}"; - sepNavWindowFrame = "{{12, 47}, {895, 831}}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 1989}}"; + sepNavSelRange = "{3622, 151}"; + sepNavVisRange = "{2572, 2004}"; + sepNavWindowFrame = "{{538, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* GrooveWear.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {866, 1144}}"; - sepNavSelRange = "{2839, 0}"; + sepNavSelRange = "{2541, 368}"; sepNavVisRange = "{708, 2201}"; - sepNavWindowFrame = "{{20, 47}, {895, 831}}"; + sepNavWindowFrame = "{{548, 47}, {895, 831}}"; }; }; 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = { @@ -82,10 +82,10 @@ }; 24D8286F09A914000093AEF8 /* GrooveWearProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {876, 12779}}"; - sepNavSelRange = "{41930, 0}"; + sepNavIntBoundsRect = "{{0, 0}, {876, 11960}}"; + sepNavSelRange = "{21536, 21122}"; sepNavVisRange = "{40820, 1838}"; - sepNavWindowFrame = "{{222, 39}, {923, 828}}"; + sepNavWindowFrame = "{{523, 50}, {923, 828}}"; }; }; 8B02375E1D42B1C400E1E8C8 /* Source Control */ = { @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* GrooveWear */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.perspectivev3 index 4a8fe96..c016b37 100644..100755 --- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.perspectivev3 @@ -323,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>21 368 810 487 0 0 1440 878 </string> + <string>630 296 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -362,7 +362,7 @@ <key>Frame</key> <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> - <string>21 368 810 487 0 0 1440 878 </string> + <string>630 296 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -387,7 +387,7 @@ <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> <key>RubberWindowFrame</key> - <string>21 368 810 487 0 0 1440 878 </string> + <string>630 296 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B4E5432201BA7F900B5DC2A</string> + <string>8B793B0821F579E6006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B4E5433201BA7F900B5DC2A</string> + <string>8B793B0921F579E6006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B4E5434201BA7F900B5DC2A</string> + <string>8B793B0A21F579E6006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>538683385.46335804</real> + <real>569735654.76659203</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,10 +643,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>/Users/christopherjohnson/Desktop/GrooveWear/GrooveWear.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/GrooveWear/GrooveWear.xcodeproj</string> </array> <key>WindowString</key> - <string>21 368 810 487 0 0 1440 878 </string> + <string>630 296 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.pbxproj b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.pbxproj index 0dd9583..e19f322 100755 --- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.pbxproj +++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* GrooveWear */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "GrooveWear" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* GrooveWear */, + 8D01CCC60486CAD60068D4B7 /* AudioUnit */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/contents.xcworkspacedata index a80c038..a80c038 100644..100755 --- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate Binary files differindex 5c38f94..5c38f94 100644..100755 --- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate +++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate Binary files differindex 314de0f..314de0f 100644..100755 --- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate +++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/spiadmin.mode1v3 index c572326..c572326 100644..100755 --- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/spiadmin.mode1v3 +++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/spiadmin.mode1v3 diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/spiadmin.pbxuser index df94780..df94780 100644..100755 --- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/spiadmin.pbxuser +++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/spiadmin.pbxuser diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme index 8ee693f..8ee693f 100644..100755 --- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme +++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist index 5bccbcb..5bccbcb 100644..100755 --- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist index a7bdd62..a7bdd62 100644..100755 --- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme index 0df2de4..0df2de4 100644..100755 --- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme +++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme diff --git a/plugins/MacVST/GrooveWear/source/GrooveWear.cpp b/plugins/MacVST/GrooveWear/source/GrooveWear.cpp index e553daa..cbe1fc5 100755 --- a/plugins/MacVST/GrooveWear/source/GrooveWear.cpp +++ b/plugins/MacVST/GrooveWear/source/GrooveWear.cpp @@ -36,11 +36,8 @@ GrooveWear::GrooveWear(audioMasterCallback audioMaster) : cMidPrevR = 0.0; dMidPrevR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/GrooveWear/source/GrooveWear.h b/plugins/MacVST/GrooveWear/source/GrooveWear.h index 7b933c2..4bf9745 100755 --- a/plugins/MacVST/GrooveWear/source/GrooveWear.h +++ b/plugins/MacVST/GrooveWear/source/GrooveWear.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double aMidL[21]; diff --git a/plugins/MacVST/GrooveWear/source/GrooveWearProc.cpp b/plugins/MacVST/GrooveWear/source/GrooveWearProc.cpp index a22f6df..e663203 100755 --- a/plugins/MacVST/GrooveWear/source/GrooveWearProc.cpp +++ b/plugins/MacVST/GrooveWear/source/GrooveWearProc.cpp @@ -14,9 +14,6 @@ void GrooveWear::processReplacing(float **inputs, float **outputs, VstInt32 samp float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double overallscale = (pow(A,2)*19.0)+1.0; double gain = overallscale; @@ -433,25 +430,14 @@ void GrooveWear::processReplacing(float **inputs, float **outputs, VstInt32 samp drySampleR = inputSampleR; } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -470,9 +456,6 @@ void GrooveWear::processDoubleReplacing(double **inputs, double **outputs, VstIn double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double overallscale = (pow(A,2)*19.0)+1.0; double gain = overallscale; @@ -889,25 +872,16 @@ void GrooveWear::processDoubleReplacing(double **inputs, double **outputs, VstIn drySampleR = inputSampleR; } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.pbxuser index c50d00a..878b3b6 100755 --- a/plugins/MacVST/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.pbxuser @@ -49,13 +49,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528460599; - PBXWorkspaceStateSaveDate = 528460599; + PBXPerProjectTemplateStateSaveDate = 569735678; + PBXWorkspaceStateSaveDate = 569735678; }; perUserProjectItems = { 8B55B2CB1D5E372E00B8D4D6 /* PBXTextBookmark */ = 8B55B2CB1D5E372E00B8D4D6 /* PBXTextBookmark */; - 8B9D6C941F7EE6EE007AB60F /* PBXTextBookmark */ = 8B9D6C941F7EE6EE007AB60F /* PBXTextBookmark */; - 8B9D7A791F7FAB58007AB60F /* PBXTextBookmark */ = 8B9D7A791F7FAB58007AB60F /* PBXTextBookmark */; + 8B793B2521F57A02006E9731 /* PBXTextBookmark */ = 8B793B2521F57A02006E9731 /* PBXTextBookmark */; + 8B793B3421F57A3B006E9731 /* PBXTextBookmark */ = 8B793B3421F57A3B006E9731 /* PBXTextBookmark */; 8BA186921D49975600F8B3DC /* PBXTextBookmark */ = 8BA186921D49975600F8B3DC /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -64,15 +64,15 @@ }; 2407DEB6089929BA00EB68BF /* GuitarConditioner.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 1365}}"; - sepNavSelRange = "{3738, 0}"; - sepNavVisRange = "{1973, 2300}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 1287}}"; + sepNavSelRange = "{558, 0}"; + sepNavVisRange = "{0, 2385}"; sepNavWindowFrame = "{{46, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* GuitarConditioner.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 1014}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 975}}"; sepNavSelRange = "{0, 0}"; sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{20, 47}, {895, 831}}"; @@ -113,22 +113,22 @@ fRef = 2407DEB6089929BA00EB68BF /* GuitarConditioner.cpp */; name = "Gain.cpp: 103"; rLen = 0; - rLoc = 3202; + rLoc = 3216; rType = 0; vrLen = 156; vrLoc = 3340; }; - 8B9D6C941F7EE6EE007AB60F /* PBXTextBookmark */ = { + 8B793B2521F57A02006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 245463B80991757100464AD3 /* GuitarConditioner.h */; name = "GuitarConditioner.h: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 88; + vrLen = 0; vrLoc = 0; }; - 8B9D7A791F7FAB58007AB60F /* PBXTextBookmark */ = { + 8B793B3421F57A3B006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 245463B80991757100464AD3 /* GuitarConditioner.h */; name = "GuitarConditioner.h: 1"; diff --git a/plugins/MacVST/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.perspectivev3 index 01d3095..dc3886b 100755 --- a/plugins/MacVST/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>6</integer> + <integer>7</integer> <integer>4</integer> <integer>0</integer> </array> @@ -351,12 +351,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D7A791F7FAB58007AB60F</string> + <string>8B793B3421F57A3B006E9731</string> <key>history</key> <array> <string>8BA186921D49975600F8B3DC</string> <string>8B55B2CB1D5E372E00B8D4D6</string> - <string>8B9D6C941F7EE6EE007AB60F</string> + <string>8B793B2521F57A02006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 32}}</string> + <string>{{0, 0}, {603, 13}}</string> <key>RubberWindowFrame</key> <string>306 299 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>32pt</string> + <string>13pt</string> </dict> <dict> <key>Proportion</key> - <string>409pt</string> + <string>428pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 382}}</string> - <key>RubberWindowFrame</key> - <string>306 299 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 401}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {603, 401}}</string> + <key>RubberWindowFrame</key> + <string>306 299 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7A7A1F7FAB58007AB60F</string> + <string>8B793B3521F57A3B006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7A7B1F7FAB58007AB60F</string> + <string>8B793B3621F57A3B006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7A7C1F7FAB58007AB60F</string> + <string>8B793B3721F57A3B006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528460632.65863901</real> + <real>569735739.28810406</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,7 +653,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7A7D1F7FAB58007AB60F</string> + <string>8B793B3821F57A3B006E9731</string> <string>/Users/christopherjohnson/Desktop/MacVST/GuitarConditioner/GuitarConditioner.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/GuitarConditioner/source/GuitarConditioner.cpp b/plugins/MacVST/GuitarConditioner/source/GuitarConditioner.cpp index 8f3ccfc..b0388ab 100755 --- a/plugins/MacVST/GuitarConditioner/source/GuitarConditioner.cpp +++ b/plugins/MacVST/GuitarConditioner/source/GuitarConditioner.cpp @@ -12,12 +12,9 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new G GuitarConditioner::GuitarConditioner(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, kNumPrograms, kNumParameters) { - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; fpFlip = true; - lastSampleTL = 0.0; lastSampleBL = 0.0; //for Slews. T for treble, B for bass iirSampleTAL = 0.0; diff --git a/plugins/MacVST/GuitarConditioner/source/GuitarConditioner.h b/plugins/MacVST/GuitarConditioner/source/GuitarConditioner.h index 7bd73ab..3be09e1 100755 --- a/plugins/MacVST/GuitarConditioner/source/GuitarConditioner.h +++ b/plugins/MacVST/GuitarConditioner/source/GuitarConditioner.h @@ -49,13 +49,10 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff - + bool fpFlip; double lastSampleTL; double lastSampleBL; //for Slews double iirSampleTAL; diff --git a/plugins/MacVST/GuitarConditioner/source/GuitarConditionerProc.cpp b/plugins/MacVST/GuitarConditioner/source/GuitarConditionerProc.cpp index 83970f2..b25d600 100755 --- a/plugins/MacVST/GuitarConditioner/source/GuitarConditionerProc.cpp +++ b/plugins/MacVST/GuitarConditioner/source/GuitarConditionerProc.cpp @@ -17,9 +17,6 @@ void GuitarConditioner::processReplacing(float **inputs, float **outputs, VstInt double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -164,26 +161,18 @@ void GuitarConditioner::processReplacing(float **inputs, float **outputs, VstInt lastSampleBR = bassR; //bassR slew inputSampleL = trebleL + bassL; //final merge - inputSampleR = trebleR + bassR; //final merge - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } + inputSampleR = trebleR + bassR; //final merge fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -205,9 +194,6 @@ void GuitarConditioner::processDoubleReplacing(double **inputs, double **outputs double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -353,26 +339,19 @@ void GuitarConditioner::processDoubleReplacing(double **inputs, double **outputs lastSampleBR = bassR; //bassR slew inputSampleL = trebleL + bassL; //final merge - inputSampleR = trebleR + bassR; //final merge - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } + inputSampleR = trebleR + bassR; //final merge fpFlip = !fpFlip; - //end noise shaping on 64 bit output + + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.pbxuser index c302fa1..2dae48f 100755 --- a/plugins/MacVST/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 541823415; - PBXWorkspaceStateSaveDate = 541823415; + PBXPerProjectTemplateStateSaveDate = 569767859; + PBXWorkspaceStateSaveDate = 569767859; }; perUserProjectItems = { - 8B181A1A204B984700516BEE /* XCBuildMessageTextBookmark */ = 8B181A1A204B984700516BEE /* XCBuildMessageTextBookmark */; 8B181A1B204B984700516BEE /* PBXTextBookmark */ = 8B181A1B204B984700516BEE /* PBXTextBookmark */; + 8B793B5521F5F802006E9731 /* PBXTextBookmark */ = 8B793B5521F5F802006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -78,9 +78,9 @@ }; 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {838, 19747}}"; + sepNavIntBoundsRect = "{{0, 0}, {838, 19877}}"; sepNavSelRange = "{10616, 0}"; - sepNavVisRange = "{10459, 399}"; + sepNavVisRange = "{10459, 280}"; sepNavWindowFrame = "{{15, 42}, {895, 831}}"; }; }; @@ -106,23 +106,24 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B181A1A204B984700516BEE /* XCBuildMessageTextBookmark */ = { + 8B181A1B204B984700516BEE /* PBXTextBookmark */ = { isa = PBXTextBookmark; - comments = "Deprecated conversion from string constant to 'char*'"; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; - fallbackIsa = XCBuildMessageTextBookmark; - rLen = 1; - rLoc = 306; - rType = 1; + name = "audioeffectx.cpp: 307"; + rLen = 0; + rLoc = 10616; + rType = 0; + vrLen = 399; + vrLoc = 10459; }; - 8B181A1B204B984700516BEE /* PBXTextBookmark */ = { + 8B793B5521F5F802006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; name = "audioeffectx.cpp: 307"; rLen = 0; rLoc = 10616; rType = 0; - vrLen = 399; + vrLen = 280; vrLoc = 10459; }; 8D01CCC60486CAD60068D4B7 /* HardVacuum */ = { diff --git a/plugins/MacVST/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.perspectivev3 index eda5e23..b731835 100755 --- a/plugins/MacVST/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.perspectivev3 @@ -256,6 +256,8 @@ <key>Layout</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -349,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B181A1B204B984700516BEE</string> + <string>8B793B5521F5F802006E9731</string> <key>history</key> <array> - <string>8B181A1A204B984700516BEE</string> + <string>8B181A1B204B984700516BEE</string> </array> </dict> <key>SplitCount</key> @@ -366,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 132}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> <string>23 367 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -391,7 +393,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 297}}</string> + <key>RubberWindowFrame</key> + <string>23 367 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -446,8 +450,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 282}}</string> - <key>RubberWindowFrame</key> - <string>23 367 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -475,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B1819D9204B91BA00516BEE</string> + <string>8B793B5621F5F802006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B1819DA204B91BA00516BEE</string> + <string>8B793B5721F5F802006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B1819DB204B91BA00516BEE</string> + <string>8B793B5821F5F802006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -632,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>541825095.83224404</real> + <real>569767938.33907902</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -649,7 +651,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>/Users/christopherjohnson/Desktop/HardVacuum/HardVacuum.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/HardVacuum/HardVacuum.xcodeproj</string> </array> <key>WindowString</key> <string>23 367 810 487 0 0 1440 878 </string> diff --git a/plugins/MacVST/HardVacuum/source/HardVacuum.cpp b/plugins/MacVST/HardVacuum/source/HardVacuum.cpp index 2ad1a4a..9c14f89 100755 --- a/plugins/MacVST/HardVacuum/source/HardVacuum.cpp +++ b/plugins/MacVST/HardVacuum/source/HardVacuum.cpp @@ -19,11 +19,8 @@ HardVacuum::HardVacuum(audioMasterCallback audioMaster) : E = 1.0; lastSampleL = 0.0; lastSampleR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/HardVacuum/source/HardVacuum.h b/plugins/MacVST/HardVacuum/source/HardVacuum.h index 6321df6..7f4c098 100755 --- a/plugins/MacVST/HardVacuum/source/HardVacuum.h +++ b/plugins/MacVST/HardVacuum/source/HardVacuum.h @@ -56,11 +56,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double lastSampleL; diff --git a/plugins/MacVST/HardVacuum/source/HardVacuumProc.cpp b/plugins/MacVST/HardVacuum/source/HardVacuumProc.cpp index f8fe4fd..e0e07e2 100755 --- a/plugins/MacVST/HardVacuum/source/HardVacuumProc.cpp +++ b/plugins/MacVST/HardVacuum/source/HardVacuumProc.cpp @@ -33,9 +33,6 @@ void HardVacuum::processReplacing(float **inputs, float **outputs, VstInt32 samp double skewL; double skewR; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double drySampleL; double drySampleR; @@ -176,25 +173,14 @@ void HardVacuum::processReplacing(float **inputs, float **outputs, VstInt32 samp inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -232,9 +218,6 @@ void HardVacuum::processDoubleReplacing(double **inputs, double **outputs, VstIn double skewL; double skewR; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double drySampleL; double drySampleR; @@ -376,25 +359,16 @@ void HardVacuum::processDoubleReplacing(double **inputs, double **outputs, VstIn inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.pbxuser index d0644db..1d213fa 100755 --- a/plugins/MacVST/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.pbxuser @@ -49,11 +49,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 532471901; - PBXWorkspaceStateSaveDate = 532471901; + PBXPerProjectTemplateStateSaveDate = 569768168; + PBXWorkspaceStateSaveDate = 569768168; }; perUserProjectItems = { - 8BB5DD511FBCE26D008B4570 /* XCBuildMessageTextBookmark */ = 8BB5DD511FBCE26D008B4570 /* XCBuildMessageTextBookmark */; + 8B793B8E21F5F8F6006E9731 /* PBXTextBookmark */ = 8B793B8E21F5F8F6006E9731 /* PBXTextBookmark */; 8BB5DD521FBCE26D008B4570 /* PBXTextBookmark */ = 8BB5DD521FBCE26D008B4570 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -78,9 +78,9 @@ }; 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {838, 19747}}"; + sepNavIntBoundsRect = "{{0, 0}, {838, 19877}}"; sepNavSelRange = "{10616, 0}"; - sepNavVisRange = "{10459, 399}"; + sepNavVisRange = "{10459, 280}"; sepNavWindowFrame = "{{15, 42}, {895, 831}}"; }; }; @@ -106,14 +106,15 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8BB5DD511FBCE26D008B4570 /* XCBuildMessageTextBookmark */ = { + 8B793B8E21F5F8F6006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - comments = "Deprecated conversion from string constant to 'char*'"; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; - fallbackIsa = XCBuildMessageTextBookmark; - rLen = 1; - rLoc = 306; - rType = 1; + name = "audioeffectx.cpp: 307"; + rLen = 0; + rLoc = 10616; + rType = 0; + vrLen = 280; + vrLoc = 10459; }; 8BB5DD521FBCE26D008B4570 /* PBXTextBookmark */ = { isa = PBXTextBookmark; diff --git a/plugins/MacVST/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.perspectivev3 index 75862ab..c7b44c4 100755 --- a/plugins/MacVST/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.perspectivev3 @@ -256,6 +256,8 @@ <key>Layout</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -349,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BB5DD521FBCE26D008B4570</string> + <string>8B793B8E21F5F8F6006E9731</string> <key>history</key> <array> - <string>8BB5DD511FBCE26D008B4570</string> + <string>8BB5DD521FBCE26D008B4570</string> </array> </dict> <key>SplitCount</key> @@ -366,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 132}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> <string>37 371 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -391,7 +393,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 297}}</string> + <key>RubberWindowFrame</key> + <string>37 371 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -446,8 +450,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 282}}</string> - <key>RubberWindowFrame</key> - <string>37 371 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -475,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BB5DD281FBCE0B3008B4570</string> + <string>8B793B8F21F5F8F6006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BB5DD291FBCE0B3008B4570</string> + <string>8B793B9021F5F8F6006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BB5DD2A1FBCE0B3008B4570</string> + <string>8B793B9121F5F8F6006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -632,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>532472429.63955802</real> + <real>569768182.06468904</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -649,7 +651,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>/Users/christopherjohnson/Desktop/HermeTrim/HermeTrim.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/HermeTrim/HermeTrim.xcodeproj</string> </array> <key>WindowString</key> <string>37 371 810 487 0 0 1440 878 </string> diff --git a/plugins/MacVST/HermeTrim/source/HermeTrim.cpp b/plugins/MacVST/HermeTrim/source/HermeTrim.cpp index 562df2c..117cc45 100755 --- a/plugins/MacVST/HermeTrim/source/HermeTrim.cpp +++ b/plugins/MacVST/HermeTrim/source/HermeTrim.cpp @@ -17,11 +17,8 @@ HermeTrim::HermeTrim(audioMasterCallback audioMaster) : C = 0.5; D = 0.5; E = 0.5; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/HermeTrim/source/HermeTrim.h b/plugins/MacVST/HermeTrim/source/HermeTrim.h index b8503ca..f0bc8ed 100755 --- a/plugins/MacVST/HermeTrim/source/HermeTrim.h +++ b/plugins/MacVST/HermeTrim/source/HermeTrim.h @@ -56,11 +56,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/HermeTrim/source/HermeTrimProc.cpp b/plugins/MacVST/HermeTrim/source/HermeTrimProc.cpp index d920843..66d3144 100755 --- a/plugins/MacVST/HermeTrim/source/HermeTrimProc.cpp +++ b/plugins/MacVST/HermeTrim/source/HermeTrimProc.cpp @@ -14,9 +14,6 @@ void HermeTrim::processReplacing(float **inputs, float **outputs, VstInt32 sampl float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double leftgain = pow(10.0,((A*3.0)-1.5)/20.0); double rightgain = pow(10.0,((B*3.0)-1.5)/20.0); @@ -83,25 +80,14 @@ void HermeTrim::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleR = (mid-side) * rightgain; //contains mastergain and the gain trim fixing the mid/side - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -120,9 +106,6 @@ void HermeTrim::processDoubleReplacing(double **inputs, double **outputs, VstInt double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double leftgain = pow(10.0,((A*3.0)-1.5)/20.0); double rightgain = pow(10.0,((B*3.0)-1.5)/20.0); @@ -189,25 +172,16 @@ void HermeTrim::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleR = (mid-side) * rightgain; //contains mastergain and the gain trim fixing the mid/side - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Hermepass/Hermepass.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Hermepass/Hermepass.xcodeproj/christopherjohnson.pbxuser index 46149d5..7c8d8e8 100755 --- a/plugins/MacVST/Hermepass/Hermepass.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Hermepass/Hermepass.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528460642; - PBXWorkspaceStateSaveDate = 528460642; + PBXPerProjectTemplateStateSaveDate = 569767979; + PBXWorkspaceStateSaveDate = 569767979; }; perUserProjectItems = { - 8B9D6CBE1F7EE9E7007AB60F /* PBXTextBookmark */ = 8B9D6CBE1F7EE9E7007AB60F /* PBXTextBookmark */; - 8B9D7A8F1F7FAB72007AB60F /* PBXTextBookmark */ = 8B9D7A8F1F7FAB72007AB60F /* PBXTextBookmark */; + 8B793B7321F5F897006E9731 /* PBXTextBookmark */ = 8B793B7321F5F897006E9731 /* PBXTextBookmark */; + 8B793B7821F5F8CF006E9731 /* PBXTextBookmark */ = 8B793B7821F5F8CF006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -62,23 +62,23 @@ }; 2407DEB6089929BA00EB68BF /* Hermepass.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 1950}}"; - sepNavSelRange = "{469, 0}"; - sepNavVisRange = "{2904, 2073}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 1963}}"; + sepNavSelRange = "{713, 0}"; + sepNavVisRange = "{0, 1657}"; sepNavWindowFrame = "{{12, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* Hermepass.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 1131}}"; - sepNavSelRange = "{3408, 0}"; - sepNavVisRange = "{654, 2864}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 1092}}"; + sepNavSelRange = "{3416, 0}"; + sepNavVisRange = "{619, 2845}"; sepNavWindowFrame = "{{20, 47}, {895, 831}}"; }; }; 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {747, 19864}}"; + sepNavIntBoundsRect = "{{0, 0}, {747, 19877}}"; sepNavSelRange = "{10616, 0}"; sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{15, 42}, {895, 831}}"; @@ -106,17 +106,17 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B9D6CBE1F7EE9E7007AB60F /* PBXTextBookmark */ = { + 8B793B7321F5F897006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; name = "audioeffectx.cpp: 307"; rLen = 0; rLoc = 10616; rType = 0; - vrLen = 123; - vrLoc = 10613; + vrLen = 0; + vrLoc = 0; }; - 8B9D7A8F1F7FAB72007AB60F /* PBXTextBookmark */ = { + 8B793B7821F5F8CF006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; name = "audioeffectx.cpp: 307"; diff --git a/plugins/MacVST/Hermepass/Hermepass.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Hermepass/Hermepass.xcodeproj/christopherjohnson.perspectivev3 index 48045b3..5ca3881 100755 --- a/plugins/MacVST/Hermepass/Hermepass.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Hermepass/Hermepass.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>6</integer> + <integer>5</integer> <integer>4</integer> <integer>0</integer> </array> @@ -323,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>303 293 810 487 0 0 1440 878 </string> + <string>278 293 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D7A8F1F7FAB72007AB60F</string> + <string>8B793B7821F5F8CF006E9731</string> <key>history</key> <array> - <string>8B9D6CBE1F7EE9E7007AB60F</string> + <string>8B793B7321F5F897006E9731</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 32}}</string> + <string>{{0, 0}, {603, 13}}</string> <key>RubberWindowFrame</key> - <string>303 293 810 487 0 0 1440 878 </string> + <string>278 293 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>32pt</string> + <string>13pt</string> </dict> <dict> <key>Proportion</key> - <string>409pt</string> + <string>428pt</string> <key>Tabs</key> <array> <dict> @@ -393,9 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 382}}</string> - <key>RubberWindowFrame</key> - <string>303 293 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 401}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -449,7 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 345}}</string> + <string>{{10, 27}, {603, 401}}</string> + <key>RubberWindowFrame</key> + <string>278 293 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7A901F7FAB72007AB60F</string> + <string>8B793B7921F5F8CF006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7A911F7FAB72007AB60F</string> + <string>8B793B7A21F5F8CF006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7A921F7FAB72007AB60F</string> + <string>8B793B7B21F5F8CF006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528460658.10219902</real> + <real>569768143.68088698</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,11 +651,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7A931F7FAB72007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/Hermepass/Hermepass.xcodeproj</string> </array> <key>WindowString</key> - <string>303 293 810 487 0 0 1440 878 </string> + <string>278 293 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/Hermepass/source/Hermepass.cpp b/plugins/MacVST/Hermepass/source/Hermepass.cpp index 3bfb1aa..4e4a532 100755 --- a/plugins/MacVST/Hermepass/source/Hermepass.cpp +++ b/plugins/MacVST/Hermepass/source/Hermepass.cpp @@ -32,12 +32,9 @@ Hermepass::Hermepass(audioMasterCallback audioMaster) : iirFR = 0.0; iirGR = 0.0; iirHR = 0.0; - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Hermepass/source/Hermepass.h b/plugins/MacVST/Hermepass/source/Hermepass.h index 4f29497..1000bb9 100755 --- a/plugins/MacVST/Hermepass/source/Hermepass.h +++ b/plugins/MacVST/Hermepass/source/Hermepass.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double iirAL; double iirBL; //first stage is the flipping one, for lowest slope. It is always engaged, and is the highest one @@ -76,7 +73,7 @@ private: double iirFR; //our slope control will have a pow() on it so that the high orders are way to the right side double iirGR; double iirHR; //seven poles max, and the final pole is always at 20hz directly. - + bool fpFlip; float A; diff --git a/plugins/MacVST/Hermepass/source/HermepassProc.cpp b/plugins/MacVST/Hermepass/source/HermepassProc.cpp index 01b35aa..fddffe3 100755 --- a/plugins/MacVST/Hermepass/source/HermepassProc.cpp +++ b/plugins/MacVST/Hermepass/source/HermepassProc.cpp @@ -17,10 +17,8 @@ void Hermepass::processReplacing(float **inputs, float **outputs, VstInt32 sampl double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + long double fpNew = 1.0 - fpOld; double rangescale = 0.1 / overallscale; double cutoff = pow(A,3); @@ -175,26 +173,17 @@ void Hermepass::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleR -= correction; //end R channel - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -216,10 +205,8 @@ void Hermepass::processDoubleReplacing(double **inputs, double **outputs, VstInt double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing long double fpOld = 0.618033988749894848204586; //golden ratio! long double fpNew = 1.0 - fpOld; - double rangescale = 0.1 / overallscale; double cutoff = pow(A,3); @@ -374,26 +361,19 @@ void Hermepass::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleR -= correction; //end R channel - - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } fpFlip = !fpFlip; - //end noise shaping on 64 bit output + + + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/HighImpact/HighImpact.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/HighImpact/HighImpact.xcodeproj/christopherjohnson.pbxuser index ebcffae..b8832a5 100755 --- a/plugins/MacVST/HighImpact/HighImpact.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/HighImpact/HighImpact.xcodeproj/christopherjohnson.pbxuser @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528460737; - PBXWorkspaceStateSaveDate = 528460737; + PBXPerProjectTemplateStateSaveDate = 569768208; + PBXWorkspaceStateSaveDate = 569768208; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { diff --git a/plugins/MacVST/HighImpact/HighImpact.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/HighImpact/HighImpact.xcodeproj/christopherjohnson.perspectivev3 index 437b8d3..f860614 100755 --- a/plugins/MacVST/HighImpact/HighImpact.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/HighImpact/HighImpact.xcodeproj/christopherjohnson.perspectivev3 @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7ACE1F7FABD1007AB60F</string> + <string>8B793BAE21F5F91A006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7ACF1F7FABD1007AB60F</string> + <string>8B793BAF21F5F91A006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7AD01F7FABD1007AB60F</string> + <string>8B793BB021F5F91A006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528460753.11869597</real> + <real>569768218.37077904</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,7 +643,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7AD11F7FABD1007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/HighImpact/HighImpact.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/HighImpact/source/HighImpact.cpp b/plugins/MacVST/HighImpact/source/HighImpact.cpp index 0944b18..960d80c 100755 --- a/plugins/MacVST/HighImpact/source/HighImpact.cpp +++ b/plugins/MacVST/HighImpact/source/HighImpact.cpp @@ -17,11 +17,8 @@ HighImpact::HighImpact(audioMasterCallback audioMaster) : C = 0.0; lastSampleL = 0.0; lastSampleR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/HighImpact/source/HighImpact.h b/plugins/MacVST/HighImpact/source/HighImpact.h index 9c7a4a0..a57230b 100755 --- a/plugins/MacVST/HighImpact/source/HighImpact.h +++ b/plugins/MacVST/HighImpact/source/HighImpact.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double lastSampleL; diff --git a/plugins/MacVST/HighImpact/source/HighImpactProc.cpp b/plugins/MacVST/HighImpact/source/HighImpactProc.cpp index 037bbe9..f24804a 100755 --- a/plugins/MacVST/HighImpact/source/HighImpactProc.cpp +++ b/plugins/MacVST/HighImpact/source/HighImpactProc.cpp @@ -14,9 +14,6 @@ void HighImpact::processReplacing(float **inputs, float **outputs, VstInt32 samp float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -161,25 +158,14 @@ void HighImpact::processReplacing(float **inputs, float **outputs, VstInt32 samp //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -201,9 +187,6 @@ void HighImpact::processDoubleReplacing(double **inputs, double **outputs, VstIn double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -348,25 +331,16 @@ void HighImpact::processDoubleReplacing(double **inputs, double **outputs, VstIn //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Highpass/Highpass.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Highpass/Highpass.xcodeproj/christopherjohnson.pbxuser index 41bc4e3..6a621d4 100755 --- a/plugins/MacVST/Highpass/Highpass.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Highpass/Highpass.xcodeproj/christopherjohnson.pbxuser @@ -49,11 +49,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528460765; - PBXWorkspaceStateSaveDate = 528460765; + PBXPerProjectTemplateStateSaveDate = 569768258; + PBXWorkspaceStateSaveDate = 569768258; }; perUserProjectItems = { - 8B9D6D1C1F7EEAA7007AB60F /* PBXTextBookmark */ = 8B9D6D1C1F7EEAA7007AB60F /* PBXTextBookmark */; + 8B793BD921F5FB42006E9731 /* PBXTextBookmark */ = 8B793BD921F5FB42006E9731 /* PBXTextBookmark */; 8B9D7AED1F7FABEE007AB60F /* PBXTextBookmark */ = 8B9D7AED1F7FABEE007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -62,17 +62,17 @@ }; 2407DEB6089929BA00EB68BF /* Highpass.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 2015}}"; - sepNavSelRange = "{470, 0}"; - sepNavVisRange = "{0, 1934}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 1976}}"; + sepNavSelRange = "{605, 0}"; + sepNavVisRange = "{0, 1964}"; sepNavWindowFrame = "{{545, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* Highpass.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 975}}"; - sepNavSelRange = "{2665, 0}"; - sepNavVisRange = "{373, 2298}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 936}}"; + sepNavSelRange = "{2612, 0}"; + sepNavVisRange = "{366, 2258}"; sepNavWindowFrame = "{{545, 45}, {895, 831}}"; }; }; @@ -86,8 +86,8 @@ }; 24D8286F09A914000093AEF8 /* HighpassProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 3861}}"; - sepNavSelRange = "{10302, 0}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 3549}}"; + sepNavSelRange = "{9802, 0}"; sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{325, 47}, {895, 831}}"; }; @@ -106,12 +106,12 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B9D6D1C1F7EEAA7007AB60F /* PBXTextBookmark */ = { + 8B793BD921F5FB42006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* HighpassProc.cpp */; - name = "HighpassProc.cpp: 297"; + name = "HighpassProc.cpp: 270"; rLen = 0; - rLoc = 10302; + rLoc = 9802; rType = 0; vrLen = 0; vrLoc = 0; @@ -121,7 +121,7 @@ fRef = 24D8286F09A914000093AEF8 /* HighpassProc.cpp */; name = "HighpassProc.cpp: 297"; rLen = 0; - rLoc = 10302; + rLoc = 9802; rType = 0; vrLen = 0; vrLoc = 0; diff --git a/plugins/MacVST/Highpass/Highpass.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Highpass/Highpass.xcodeproj/christopherjohnson.perspectivev3 index 9d76d95..e1cb811 100755 --- a/plugins/MacVST/Highpass/Highpass.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Highpass/Highpass.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>6</integer> + <integer>5</integer> <integer>4</integer> <integer>0</integer> </array> @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D7AED1F7FABEE007AB60F</string> + <string>8B793BD921F5FB42006E9731</string> <key>history</key> <array> - <string>8B9D6D1C1F7EEAA7007AB60F</string> + <string>8B9D7AED1F7FABEE007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 13}}</string> + <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> <string>369 207 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>13pt</string> + <string>0pt</string> </dict> <dict> <key>Proportion</key> - <string>428pt</string> + <string>441pt</string> <key>Tabs</key> <array> <dict> @@ -393,9 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 401}}</string> - <key>RubberWindowFrame</key> - <string>369 207 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 414}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -449,7 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {603, 414}}</string> + <key>RubberWindowFrame</key> + <string>369 207 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7AEE1F7FABEE007AB60F</string> + <string>8B793BDA21F5FB42006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7AEF1F7FABEE007AB60F</string> + <string>8B793BDB21F5FB42006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7AF01F7FABEE007AB60F</string> + <string>8B793BDC21F5FB42006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528460782.88018203</real> + <real>569768770.42441106</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,7 +651,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7AF11F7FABEE007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/Highpass/Highpass.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Highpass/source/Highpass.cpp b/plugins/MacVST/Highpass/source/Highpass.cpp index ed43f9d..86ebe24 100755 --- a/plugins/MacVST/Highpass/source/Highpass.cpp +++ b/plugins/MacVST/Highpass/source/Highpass.cpp @@ -19,10 +19,8 @@ Highpass::Highpass(audioMasterCallback audioMaster) : iirSampleBL = 0.0; iirSampleAR = 0.0; iirSampleBR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; fpFlip = true; //this is reset: values being initialized only once. Startup values, whatever they are. diff --git a/plugins/MacVST/Highpass/source/Highpass.h b/plugins/MacVST/Highpass/source/Highpass.h index 03d8609..673f951 100755 --- a/plugins/MacVST/Highpass/source/Highpass.h +++ b/plugins/MacVST/Highpass/source/Highpass.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; @@ -68,7 +65,7 @@ private: double iirSampleBL; double iirSampleAR; double iirSampleBR; - + bool fpFlip; }; #endif diff --git a/plugins/MacVST/Highpass/source/HighpassProc.cpp b/plugins/MacVST/Highpass/source/HighpassProc.cpp index b1e7de9..371ed57 100755 --- a/plugins/MacVST/Highpass/source/HighpassProc.cpp +++ b/plugins/MacVST/Highpass/source/HighpassProc.cpp @@ -26,9 +26,6 @@ void Highpass::processReplacing(float **inputs, float **outputs, VstInt32 sample double inputSampleR; double outputSampleL; double outputSampleR; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; iirAmount += (iirAmount * tight * tight); if (tight > 0) tight /= 1.5; @@ -114,33 +111,21 @@ void Highpass::processReplacing(float **inputs, float **outputs, VstInt32 sample iirSampleBR = (iirSampleBR * (1 - (offset * iirAmount))) + (inputSampleR * (offset * iirAmount)); outputSampleR = outputSampleR - iirSampleBR; } + fpFlip = !fpFlip; if (wet < 1.0) outputSampleL = (outputSampleL * wet) + (inputSampleL * dry); if (wet < 1.0) outputSampleR = (outputSampleR * wet) + (inputSampleR * dry); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = outputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((outputSampleL-fpTemp)*fpNew); - outputSampleL += fpNShapeLA; - - fpTemp = outputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((outputSampleR-fpTemp)*fpNew); - outputSampleR += fpNShapeRA; - } - else { - fpTemp = outputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((outputSampleL-fpTemp)*fpNew); - outputSampleL += fpNShapeLB; - - fpTemp = outputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((outputSampleR-fpTemp)*fpNew); - outputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = outputSampleL; *out2 = outputSampleR; @@ -171,9 +156,6 @@ void Highpass::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double inputSampleR; double outputSampleL; double outputSampleR; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; iirAmount += (iirAmount * tight * tight); if (tight > 0) tight /= 1.5; @@ -259,33 +241,23 @@ void Highpass::processDoubleReplacing(double **inputs, double **outputs, VstInt3 iirSampleBR = (iirSampleBR * (1 - (offset * iirAmount))) + (inputSampleR * (offset * iirAmount)); outputSampleR = outputSampleR - iirSampleBR; } + fpFlip = !fpFlip; if (wet < 1.0) outputSampleL = (outputSampleL * wet) + (inputSampleL * dry); if (wet < 1.0) outputSampleR = (outputSampleR * wet) + (inputSampleR * dry); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = outputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((outputSampleL-fpTemp)*fpNew); - outputSampleL += fpNShapeLA; - - fpTemp = outputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((outputSampleR-fpTemp)*fpNew); - outputSampleR += fpNShapeRA; - } - else { - fpTemp = outputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((outputSampleL-fpTemp)*fpNew); - outputSampleL += fpNShapeLB; - - fpTemp = outputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((outputSampleR-fpTemp)*fpNew); - outputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = outputSampleL; *out2 = outputSampleR; diff --git a/plugins/MacVST/Hombre/Hombre.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Hombre/Hombre.xcodeproj/christopherjohnson.pbxuser index 0318f29..e7c095e 100755 --- a/plugins/MacVST/Hombre/Hombre.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Hombre/Hombre.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* Hombre */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528460792; - PBXWorkspaceStateSaveDate = 528460792; + PBXPerProjectTemplateStateSaveDate = 569768789; + PBXWorkspaceStateSaveDate = 569768789; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { + 8D01CCC60486CAD60068D4B7 /* Hombre */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/Hombre/Hombre.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Hombre/Hombre.xcodeproj/christopherjohnson.perspectivev3 index 4a41e1b..0ff9e72 100755 --- a/plugins/MacVST/Hombre/Hombre.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Hombre/Hombre.xcodeproj/christopherjohnson.perspectivev3 @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7B0D1F7FAC06007AB60F</string> + <string>8B793BF921F5FCAE006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7B0E1F7FAC06007AB60F</string> + <string>8B793BFA21F5FCAE006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7B0F1F7FAC06007AB60F</string> + <string>8B793BFB21F5FCAE006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528460806.70010799</real> + <real>569769134.11826503</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,7 +643,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7B101F7FAC06007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/Hombre/Hombre.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Hombre/Hombre.xcodeproj/project.pbxproj b/plugins/MacVST/Hombre/Hombre.xcodeproj/project.pbxproj index 2e3db5b..0beffb6 100755 --- a/plugins/MacVST/Hombre/Hombre.xcodeproj/project.pbxproj +++ b/plugins/MacVST/Hombre/Hombre.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { + 8D01CCC60486CAD60068D4B7 /* Hombre */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "Hombre" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* AudioUnit */, + 8D01CCC60486CAD60068D4B7 /* Hombre */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/Hombre/source/Hombre.cpp b/plugins/MacVST/Hombre/source/Hombre.cpp index 9ef8844..8b03ed1 100755 --- a/plugins/MacVST/Hombre/source/Hombre.cpp +++ b/plugins/MacVST/Hombre/source/Hombre.cpp @@ -17,11 +17,8 @@ Hombre::Hombre(audioMasterCallback audioMaster) : for(int count = 0; count < 4000; count++) {pL[count] = 0.0; pR[count] = 0.0;} gcount = 0; slide = 0.421; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Hombre/source/Hombre.h b/plugins/MacVST/Hombre/source/Hombre.h index 94e29b1..e23f6f3 100755 --- a/plugins/MacVST/Hombre/source/Hombre.h +++ b/plugins/MacVST/Hombre/source/Hombre.h @@ -58,11 +58,8 @@ private: double slide; int gcount; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/Hombre/source/HombreProc.cpp b/plugins/MacVST/Hombre/source/HombreProc.cpp index 01e08bd..16bf513 100755 --- a/plugins/MacVST/Hombre/source/HombreProc.cpp +++ b/plugins/MacVST/Hombre/source/HombreProc.cpp @@ -17,9 +17,6 @@ void Hombre::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double target = A; double offsetA; @@ -134,25 +131,14 @@ void Hombre::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -174,9 +160,6 @@ void Hombre::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double target = A; double offsetA; @@ -291,25 +274,16 @@ void Hombre::processDoubleReplacing(double **inputs, double **outputs, VstInt32 inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.pbxuser index 1875dde..3c067ed 100755 --- a/plugins/MacVST/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.pbxuser @@ -49,11 +49,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528460815; - PBXWorkspaceStateSaveDate = 528460815; + PBXPerProjectTemplateStateSaveDate = 569769155; + PBXWorkspaceStateSaveDate = 569769155; }; perUserProjectItems = { - 8B9D6D5B1F7EEB52007AB60F /* PBXTextBookmark */ = 8B9D6D5B1F7EEB52007AB60F /* PBXTextBookmark */; + 8B793C0E21F5FCCD006E9731 /* PBXTextBookmark */ = 8B793C0E21F5FCCD006E9731 /* PBXTextBookmark */; 8B9D7B361F7FAC33007AB60F /* PBXTextBookmark */ = 8B9D7B361F7FAC33007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -62,9 +62,9 @@ }; 2407DEB6089929BA00EB68BF /* IronOxide5.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {670, 2418}}"; + sepNavIntBoundsRect = "{{0, 0}, {670, 2353}}"; sepNavSelRange = "{5913, 24}"; - sepNavVisRange = "{5125, 1406}"; + sepNavVisRange = "{5294, 1247}"; sepNavWindowFrame = "{{274, 45}, {895, 831}}"; }; }; @@ -106,15 +106,15 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B9D6D5B1F7EEB52007AB60F /* PBXTextBookmark */ = { + 8B793C0E21F5FCCD006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 2407DEB6089929BA00EB68BF /* IronOxide5.cpp */; - name = "IronOxide5.cpp: 158"; + name = "IronOxide5.cpp: 155"; rLen = 24; rLoc = 5913; rType = 0; - vrLen = 1489; - vrLoc = 5042; + vrLen = 1247; + vrLoc = 5294; }; 8B9D7B361F7FAC33007AB60F /* PBXTextBookmark */ = { isa = PBXTextBookmark; diff --git a/plugins/MacVST/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.perspectivev3 index 8f562dc..d0aaa37 100755 --- a/plugins/MacVST/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.perspectivev3 @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D7B361F7FAC33007AB60F</string> + <string>8B793C0E21F5FCCD006E9731</string> <key>history</key> <array> - <string>8B9D6D5B1F7EEB52007AB60F</string> + <string>8B9D7B361F7FAC33007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {604, 314}}</string> + <string>{{0, 0}, {604, 303}}</string> <key>RubberWindowFrame</key> <string>564 142 811 710 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>314pt</string> + <string>303pt</string> </dict> <dict> <key>Proportion</key> - <string>350pt</string> + <string>361pt</string> <key>Tabs</key> <array> <dict> @@ -393,7 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {604, 323}}</string> + <string>{{10, 27}, {604, 334}}</string> <key>RubberWindowFrame</key> <string>564 142 811 710 0 0 1440 878 </string> </dict> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7B371F7FAC33007AB60F</string> + <string>8B793C0F21F5FCCD006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7B381F7FAC33007AB60F</string> + <string>8B793C1021F5FCCD006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7B391F7FAC33007AB60F</string> + <string>8B793C1121F5FCCD006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528460851.584521</real> + <real>569769165.367818</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,7 +651,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7B3A1F7FAC33007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/IronOxide5/IronOxide5.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/IronOxide5/source/IronOxide5.cpp b/plugins/MacVST/IronOxide5/source/IronOxide5.cpp index 2d7c84f..914f53b 100755 --- a/plugins/MacVST/IronOxide5/source/IronOxide5.cpp +++ b/plugins/MacVST/IronOxide5/source/IronOxide5.cpp @@ -45,11 +45,8 @@ IronOxide5::IronOxide5(audioMasterCallback audioMaster) : rateof = 0.5; nextmax = 0.5; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/IronOxide5/source/IronOxide5.h b/plugins/MacVST/IronOxide5/source/IronOxide5.h index a7cad5d..82d4c9a 100755 --- a/plugins/MacVST/IronOxide5/source/IronOxide5.h +++ b/plugins/MacVST/IronOxide5/source/IronOxide5.h @@ -101,11 +101,8 @@ private: double nextmax; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/IronOxide5/source/IronOxide5Proc.cpp b/plugins/MacVST/IronOxide5/source/IronOxide5Proc.cpp index c0fbb35..e42d69f 100755 --- a/plugins/MacVST/IronOxide5/source/IronOxide5Proc.cpp +++ b/plugins/MacVST/IronOxide5/source/IronOxide5Proc.cpp @@ -17,9 +17,6 @@ void IronOxide5::processReplacing(float **inputs, float **outputs, VstInt32 samp double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = pow(10.0,((A*36.0)-18.0)/20.0); double outputgain = pow(10.0,((F*36.0)-18.0)/20.0); @@ -422,25 +419,14 @@ void IronOxide5::processReplacing(float **inputs, float **outputs, VstInt32 samp } //end invdrywet block with outputgain - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -462,9 +448,6 @@ void IronOxide5::processDoubleReplacing(double **inputs, double **outputs, VstIn double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = pow(10.0,((A*36.0)-18.0)/20.0); double outputgain = pow(10.0,((F*36.0)-18.0)/20.0); @@ -867,25 +850,16 @@ void IronOxide5::processDoubleReplacing(double **inputs, double **outputs, VstIn } //end invdrywet block with outputgain - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.pbxuser index 9ecb7a4..45dee94 100755 --- a/plugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* IronOxideClassic */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528460860; - PBXWorkspaceStateSaveDate = 528460860; + PBXPerProjectTemplateStateSaveDate = 569769189; + PBXWorkspaceStateSaveDate = 569769189; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -58,17 +58,17 @@ }; 2407DEB6089929BA00EB68BF /* IronOxideClassic.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 1911}}"; - sepNavSelRange = "{4912, 0}"; - sepNavVisRange = "{3304, 2335}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 1885}}"; + sepNavSelRange = "{822, 0}"; + sepNavVisRange = "{0, 2130}"; sepNavWindowFrame = "{{530, 43}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* IronOxideClassic.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 1144}}"; - sepNavSelRange = "{2736, 0}"; - sepNavVisRange = "{475, 2394}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 1105}}"; + sepNavSelRange = "{2766, 0}"; + sepNavVisRange = "{642, 2241}"; sepNavWindowFrame = "{{541, 47}, {895, 831}}"; }; }; @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { + 8D01CCC60486CAD60068D4B7 /* IronOxideClassic */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.perspectivev3 index d4487c2..2960170 100755 --- a/plugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>6</integer> + <integer>5</integer> <integer>4</integer> <integer>0</integer> </array> @@ -360,18 +360,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 13}}</string> + <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> <string>415 94 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>13pt</string> + <string>0pt</string> </dict> <dict> <key>Proportion</key> - <string>428pt</string> + <string>441pt</string> <key>Tabs</key> <array> <dict> @@ -385,9 +385,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 401}}</string> - <key>RubberWindowFrame</key> - <string>415 94 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 414}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -441,7 +439,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 363}}</string> + <string>{{10, 27}, {603, 414}}</string> + <key>RubberWindowFrame</key> + <string>415 94 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7B4C1F7FAC58007AB60F</string> + <string>8B793C3A21F5FF8A006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7B4D1F7FAC58007AB60F</string> + <string>8B793C3B21F5FF8A006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7B4E1F7FAC58007AB60F</string> + <string>8B793C3C21F5FF8A006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528460888.62616801</real> + <real>569769866.66388798</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,7 +643,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7B4F1F7FAC58007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/project.pbxproj b/plugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/project.pbxproj index 2863d6b..80d9369 100755 --- a/plugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/project.pbxproj +++ b/plugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { + 8D01CCC60486CAD60068D4B7 /* IronOxideClassic */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "IronOxideClassic" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* AudioUnit */, + 8D01CCC60486CAD60068D4B7 /* IronOxideClassic */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/IronOxideClassic/source/IronOxideClassic.cpp b/plugins/MacVST/IronOxideClassic/source/IronOxideClassic.cpp index 012d8a3..8ce7103 100755 --- a/plugins/MacVST/IronOxideClassic/source/IronOxideClassic.cpp +++ b/plugins/MacVST/IronOxideClassic/source/IronOxideClassic.cpp @@ -22,12 +22,9 @@ IronOxideClassic::IronOxideClassic(audioMasterCallback audioMaster) : iirSampleAL = iirSampleBL = 0.0; fastIIRAR = fastIIRBR = slowIIRAR = slowIIRBR = 0.0; iirSampleAR = iirSampleBR = 0.0; - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/IronOxideClassic/source/IronOxideClassic.h b/plugins/MacVST/IronOxideClassic/source/IronOxideClassic.h index b7f8bfa..bafb457 100755 --- a/plugins/MacVST/IronOxideClassic/source/IronOxideClassic.h +++ b/plugins/MacVST/IronOxideClassic/source/IronOxideClassic.h @@ -71,12 +71,9 @@ private: double slowIIRBR; int gcount; - - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/IronOxideClassic/source/IronOxideClassicProc.cpp b/plugins/MacVST/IronOxideClassic/source/IronOxideClassicProc.cpp index c245166..97bbaca 100755 --- a/plugins/MacVST/IronOxideClassic/source/IronOxideClassicProc.cpp +++ b/plugins/MacVST/IronOxideClassic/source/IronOxideClassicProc.cpp @@ -17,9 +17,6 @@ void IronOxideClassic::processReplacing(float **inputs, float **outputs, VstInt3 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = pow(10.0,((A*36.0)-18.0)/20.0); double outputgain = pow(10.0,((C*36.0)-18.0)/20.0); @@ -343,26 +340,16 @@ void IronOxideClassic::processReplacing(float **inputs, float **outputs, VstInt3 inputSampleL *= outputgain; inputSampleR *= outputgain; } - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -384,9 +371,6 @@ void IronOxideClassic::processDoubleReplacing(double **inputs, double **outputs, double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = pow(10.0,((A*36.0)-18.0)/20.0); double outputgain = pow(10.0,((C*36.0)-18.0)/20.0); @@ -710,26 +694,18 @@ void IronOxideClassic::processDoubleReplacing(double **inputs, double **outputs, inputSampleL *= outputgain; inputSampleR *= outputgain; } - - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } fpFlip = !fpFlip; - //end noise shaping on 64 bit output + + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Logical4/Logical4.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Logical4/Logical4.xcodeproj/christopherjohnson.pbxuser index 7177e0c..12e473a 100755 --- a/plugins/MacVST/Logical4/Logical4.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Logical4/Logical4.xcodeproj/christopherjohnson.pbxuser @@ -51,11 +51,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528460946; - PBXWorkspaceStateSaveDate = 528460946; + PBXPerProjectTemplateStateSaveDate = 569769890; + PBXWorkspaceStateSaveDate = 569769890; }; perUserProjectItems = { - 8B9D6D9A1F7EF21C007AB60F /* PBXTextBookmark */ = 8B9D6D9A1F7EF21C007AB60F /* PBXTextBookmark */; + 8B793C5C21F60027006E9731 /* PBXTextBookmark */ = 8B793C5C21F60027006E9731 /* PBXTextBookmark */; 8B9D7B751F7FACB8007AB60F /* PBXTextBookmark */ = 8B9D7B751F7FACB8007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -64,23 +64,23 @@ }; 2407DEB6089929BA00EB68BF /* Logical4.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {964, 3081}}"; - sepNavSelRange = "{506, 0}"; - sepNavVisRange = "{0, 1213}"; + sepNavIntBoundsRect = "{{0, 0}, {964, 2990}}"; + sepNavSelRange = "{1872, 0}"; + sepNavVisRange = "{917, 1644}"; sepNavWindowFrame = "{{101, 39}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* Logical4.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 2093}}"; - sepNavSelRange = "{4156, 0}"; - sepNavVisRange = "{44, 2353}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 2002}}"; + sepNavSelRange = "{4021, 0}"; + sepNavVisRange = "{3285, 841}"; sepNavWindowFrame = "{{20, 47}, {895, 831}}"; }; }; 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {747, 19864}}"; + sepNavIntBoundsRect = "{{0, 0}, {747, 19877}}"; sepNavSelRange = "{10616, 0}"; sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{15, 42}, {895, 831}}"; @@ -88,9 +88,9 @@ }; 24D8286F09A914000093AEF8 /* Logical4Proc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 23621}}"; + sepNavIntBoundsRect = "{{0, 0}, {950, 23504}}"; sepNavSelRange = "{36787, 1892}"; - sepNavVisRange = "{2824, 2189}"; + sepNavVisRange = "{9422, 1935}"; sepNavWindowFrame = "{{446, 47}, {895, 831}}"; }; }; @@ -108,7 +108,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B9D6D9A1F7EF21C007AB60F /* PBXTextBookmark */ = { + 8B793C5C21F60027006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; name = "audioeffectx.cpp: 307"; diff --git a/plugins/MacVST/Logical4/Logical4.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Logical4/Logical4.xcodeproj/christopherjohnson.perspectivev3 index 053aa48..4d9ff5b 100755 --- a/plugins/MacVST/Logical4/Logical4.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Logical4/Logical4.xcodeproj/christopherjohnson.perspectivev3 @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D7B751F7FACB8007AB60F</string> + <string>8B793C5C21F60027006E9731</string> <key>history</key> <array> - <string>8B9D6D9A1F7EF21C007AB60F</string> + <string>8B9D7B751F7FACB8007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 13}}</string> + <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> <string>307 326 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>13pt</string> + <string>0pt</string> </dict> <dict> <key>Proportion</key> - <string>428pt</string> + <string>441pt</string> <key>Tabs</key> <array> <dict> @@ -393,9 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 401}}</string> - <key>RubberWindowFrame</key> - <string>307 326 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 414}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -449,7 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 345}}</string> + <string>{{10, 27}, {603, 414}}</string> + <key>RubberWindowFrame</key> + <string>307 326 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7B761F7FACB8007AB60F</string> + <string>8B793C5D21F60027006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7B771F7FACB8007AB60F</string> + <string>8B793C5E21F60027006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7B781F7FACB8007AB60F</string> + <string>8B793C5F21F60027006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -654,7 +654,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528460984.74037701</real> + <real>569770023.37923205</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -671,7 +671,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7B791F7FACB8007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/Logical4/Logical4.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Logical4/source/Logical4.cpp b/plugins/MacVST/Logical4/source/Logical4.cpp index b17cc55..15d185b 100755 --- a/plugins/MacVST/Logical4/source/Logical4.cpp +++ b/plugins/MacVST/Logical4/source/Logical4.cpp @@ -77,12 +77,9 @@ Logical4::Logical4(audioMasterCallback audioMaster) : gcount = 0; //end Power Sags - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Logical4/source/Logical4.h b/plugins/MacVST/Logical4/source/Logical4.h index 71e118e..fd802c8 100755 --- a/plugins/MacVST/Logical4/source/Logical4.h +++ b/plugins/MacVST/Logical4/source/Logical4.h @@ -143,10 +143,8 @@ private: int gcount; - double fpNShapeLA; - double fpNShapeLB; - double fpNShapeRA; - double fpNShapeRB; + double fpNShapeL; + double fpNShapeR; bool fpFlip; //default stuff diff --git a/plugins/MacVST/Logical4/source/Logical4Proc.cpp b/plugins/MacVST/Logical4/source/Logical4Proc.cpp index 0d09fcf..5d079f3 100755 --- a/plugins/MacVST/Logical4/source/Logical4Proc.cpp +++ b/plugins/MacVST/Logical4/source/Logical4Proc.cpp @@ -17,9 +17,8 @@ void Logical4::processReplacing(float **inputs, float **outputs, VstInt32 sample double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - double fpOld = 0.618033988749894848204586; //golden ratio! - double fpNew = 1.0 - fpOld; + long double fpOld = 0.618033988749894848204586; //golden ratio! + long double fpNew = 1.0 - fpOld; float drySampleL; float drySampleR; @@ -869,27 +868,17 @@ void Logical4::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleL = (inputSampleL * wet) + (drySampleL * dry); inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } + fpFlip = !fpFlip; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -911,9 +900,8 @@ void Logical4::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - double fpOld = 0.618033988749894848204586; //golden ratio! - double fpNew = 1.0 - fpOld; + long double fpOld = 0.618033988749894848204586; //golden ratio! + long double fpNew = 1.0 - fpOld; float drySampleL; float drySampleR; @@ -1762,26 +1750,18 @@ void Logical4::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleL = (inputSampleL * wet) + (drySampleL * dry); inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } fpFlip = !fpFlip; - //end noise shaping on 64 bit output + + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Loud/Loud.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Loud/Loud.xcodeproj/christopherjohnson.pbxuser index 6c66b21..0bed7c5 100755 --- a/plugins/MacVST/Loud/Loud.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Loud/Loud.xcodeproj/christopherjohnson.pbxuser @@ -49,11 +49,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 541203976; - PBXWorkspaceStateSaveDate = 541203976; + PBXPerProjectTemplateStateSaveDate = 569770045; + PBXWorkspaceStateSaveDate = 569770045; }; perUserProjectItems = { - 8B277E0D1FD86E330038EA07 /* PBXTextBookmark */ = 8B277E0D1FD86E330038EA07 /* PBXTextBookmark */; + 8B793C7221F60046006E9731 /* PBXTextBookmark */ = 8B793C7221F60046006E9731 /* PBXTextBookmark */; 8BCEFAAE2042230B002E8187 /* PBXTextBookmark */ = 8BCEFAAE2042230B002E8187 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -106,7 +106,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B277E0D1FD86E330038EA07 /* PBXTextBookmark */ = { + 8B793C7221F60046006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; name = "audioeffectx.cpp: 307"; diff --git a/plugins/MacVST/Loud/Loud.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Loud/Loud.xcodeproj/christopherjohnson.perspectivev3 index 7b79c6f..a60b90a 100755 --- a/plugins/MacVST/Loud/Loud.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Loud/Loud.xcodeproj/christopherjohnson.perspectivev3 @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BCEFAAE2042230B002E8187</string> + <string>8B793C7221F60046006E9731</string> <key>history</key> <array> - <string>8B277E0D1FD86E330038EA07</string> + <string>8BCEFAAE2042230B002E8187</string> </array> </dict> <key>SplitCount</key> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BCEFAAF2042230B002E8187</string> + <string>8B793C7321F60046006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BCEFAB02042230B002E8187</string> + <string>8B793C7421F60046006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BCEFAB12042230B002E8187</string> + <string>8B793C7521F60046006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>541205259.86103797</real> + <real>569770054.94940603</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,7 +651,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BCEFAB22042230B002E8187</string> <string>/Users/christopherjohnson/Desktop/MacVST/Loud/Loud.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Loud/source/Loud.cpp b/plugins/MacVST/Loud/source/Loud.cpp index 43f7ffc..009124d 100755 --- a/plugins/MacVST/Loud/source/Loud.cpp +++ b/plugins/MacVST/Loud/source/Loud.cpp @@ -15,11 +15,8 @@ Loud::Loud(audioMasterCallback audioMaster) : A = 0.0; B = 1.0; C = 1.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Loud/source/Loud.h b/plugins/MacVST/Loud/source/Loud.h index 85b66a2..17537c2 100755 --- a/plugins/MacVST/Loud/source/Loud.h +++ b/plugins/MacVST/Loud/source/Loud.h @@ -56,11 +56,8 @@ private: double lastSampleL; double lastSampleR; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/Loud/source/LoudProc.cpp b/plugins/MacVST/Loud/source/LoudProc.cpp index 8aedede..35ee29b 100755 --- a/plugins/MacVST/Loud/source/LoudProc.cpp +++ b/plugins/MacVST/Loud/source/LoudProc.cpp @@ -18,9 +18,6 @@ void Loud::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram overallscale /= 44100.0; overallscale *= getSampleRate(); double boost = pow(A+1.0,5); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double output = B; double wet = C; double dry = 1.0-wet; @@ -143,25 +140,14 @@ void Loud::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -184,9 +170,6 @@ void Loud::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa overallscale /= 44100.0; overallscale *= getSampleRate(); double boost = pow(A+1.0,5); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double output = B; double wet = C; double dry = 1.0-wet; @@ -308,25 +291,16 @@ void Loud::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Lowpass/Lowpass.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Lowpass/Lowpass.xcodeproj/christopherjohnson.pbxuser index e5aba92..8c9ad70 100755 --- a/plugins/MacVST/Lowpass/Lowpass.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Lowpass/Lowpass.xcodeproj/christopherjohnson.pbxuser @@ -49,14 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528461025; - PBXWorkspaceStateSaveDate = 528461025; + PBXPerProjectTemplateStateSaveDate = 569770101; + PBXWorkspaceStateSaveDate = 569770101; }; perUserProjectItems = { 8B22B1231DB18F4A0075D7AA /* PBXTextBookmark */ = 8B22B1231DB18F4A0075D7AA /* PBXTextBookmark */; 8B22B1531DB190EA0075D7AA /* PBXTextBookmark */ = 8B22B1531DB190EA0075D7AA /* PBXTextBookmark */; - 8B9D6DDA1F7EF2A5007AB60F /* PBXTextBookmark */ = 8B9D6DDA1F7EF2A5007AB60F /* PBXTextBookmark */; - 8B9D7BAB1F7FACF3007AB60F /* PBXTextBookmark */ = 8B9D7BAB1F7FACF3007AB60F /* PBXTextBookmark */; + 8B793C9021F6007F006E9731 /* PBXTextBookmark */ = 8B793C9021F6007F006E9731 /* PBXTextBookmark */; + 8B793C9521F600A2006E9731 /* PBXTextBookmark */ = 8B793C9521F600A2006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -64,17 +64,17 @@ }; 2407DEB6089929BA00EB68BF /* Lowpass.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 1911}}"; - sepNavSelRange = "{455, 0}"; - sepNavVisRange = "{0, 1921}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 1898}}"; + sepNavSelRange = "{598, 0}"; + sepNavVisRange = "{0, 1951}"; sepNavWindowFrame = "{{330, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* Lowpass.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {859, 936}}"; - sepNavSelRange = "{2574, 84}"; - sepNavVisRange = "{2517, 153}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 767}}"; + sepNavSelRange = "{2605, 0}"; + sepNavVisRange = "{2427, 182}"; sepNavWindowFrame = "{{61, 47}, {895, 831}}"; }; }; @@ -113,7 +113,7 @@ fRef = 2407DEB6089929BA00EB68BF /* Lowpass.cpp */; name = "Lowpass.cpp: 51"; rLen = 0; - rLoc = 1842; + rLoc = 1858; rType = 0; vrLen = 71; vrLoc = 1746; @@ -128,25 +128,25 @@ vrLen = 707; vrLoc = 10342; }; - 8B9D6DDA1F7EF2A5007AB60F /* PBXTextBookmark */ = { + 8B793C9021F6007F006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 245463B80991757100464AD3 /* Lowpass.h */; name = "Lowpass.h: 67"; - rLen = 84; + rLen = 43; rLoc = 2574; rType = 0; - vrLen = 167; - vrLoc = 2503; + vrLen = 194; + vrLoc = 2398; }; - 8B9D7BAB1F7FACF3007AB60F /* PBXTextBookmark */ = { + 8B793C9521F600A2006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 245463B80991757100464AD3 /* Lowpass.h */; - name = "Lowpass.h: 67"; - rLen = 84; - rLoc = 2574; + name = "Lowpass.h: 68"; + rLen = 0; + rLoc = 2605; rType = 0; - vrLen = 153; - vrLoc = 2517; + vrLen = 182; + vrLoc = 2427; }; 8D01CCC60486CAD60068D4B7 /* Lowpass */ = { activeExec = 0; diff --git a/plugins/MacVST/Lowpass/Lowpass.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Lowpass/Lowpass.xcodeproj/christopherjohnson.perspectivev3 index fcf5254..bb86e03 100755 --- a/plugins/MacVST/Lowpass/Lowpass.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Lowpass/Lowpass.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>6</integer> + <integer>5</integer> <integer>4</integer> <integer>0</integer> </array> @@ -351,12 +351,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D7BAB1F7FACF3007AB60F</string> + <string>8B793C9521F600A2006E9731</string> <key>history</key> <array> <string>8B22B1231DB18F4A0075D7AA</string> <string>8B22B1531DB190EA0075D7AA</string> - <string>8B9D6DDA1F7EF2A5007AB60F</string> + <string>8B793C9021F6007F006E9731</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 194}}</string> + <string>{{0, 0}, {603, 182}}</string> <key>RubberWindowFrame</key> <string>355 287 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>194pt</string> + <string>182pt</string> </dict> <dict> <key>Proportion</key> - <string>247pt</string> + <string>259pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 220}}</string> - <key>RubberWindowFrame</key> - <string>355 287 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 232}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -451,7 +449,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 178}}</string> + <string>{{10, 27}, {603, 232}}</string> + <key>RubberWindowFrame</key> + <string>355 287 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -479,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7BAC1F7FACF3007AB60F</string> + <string>8B793C9621F600A2006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7BAD1F7FACF3007AB60F</string> + <string>8B793C9721F600A2006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7BAE1F7FACF3007AB60F</string> + <string>8B793C9821F600A2006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528461043.96388102</real> + <real>569770146.430691</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,7 +653,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7BAF1F7FACF3007AB60F</string> + <string>8B793C9921F600A2006E9731</string> <string>/Users/christopherjohnson/Desktop/MacVST/Lowpass/Lowpass.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Lowpass/source/Lowpass.cpp b/plugins/MacVST/Lowpass/source/Lowpass.cpp index 8178799..18064fc 100755 --- a/plugins/MacVST/Lowpass/source/Lowpass.cpp +++ b/plugins/MacVST/Lowpass/source/Lowpass.cpp @@ -19,10 +19,8 @@ Lowpass::Lowpass(audioMasterCallback audioMaster) : iirSampleBL = 0.0; iirSampleAR = 0.0; iirSampleBR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; fpFlip = true; //this is reset: values being initialized only once. Startup values, whatever they are. diff --git a/plugins/MacVST/Lowpass/source/Lowpass.h b/plugins/MacVST/Lowpass/source/Lowpass.h index 1b99c55..40ac456 100755 --- a/plugins/MacVST/Lowpass/source/Lowpass.h +++ b/plugins/MacVST/Lowpass/source/Lowpass.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; @@ -68,7 +65,7 @@ private: double iirSampleBL; double iirSampleAR; double iirSampleBR; - + bool fpFlip; }; #endif diff --git a/plugins/MacVST/Lowpass/source/LowpassProc.cpp b/plugins/MacVST/Lowpass/source/LowpassProc.cpp index bcce714..bcc3690 100755 --- a/plugins/MacVST/Lowpass/source/LowpassProc.cpp +++ b/plugins/MacVST/Lowpass/source/LowpassProc.cpp @@ -27,9 +27,6 @@ void Lowpass::processReplacing(float **inputs, float **outputs, VstInt32 sampleF double inputSampleR; double outputSampleL; double outputSampleR; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; iirAmount += (iirAmount * tight * tight); if (tight > 0) tight /= 1.5; @@ -116,33 +113,21 @@ void Lowpass::processReplacing(float **inputs, float **outputs, VstInt32 sampleF iirSampleBR = (iirSampleBR * (1 - (offset * iirAmount))) + (inputSampleR * (offset * iirAmount)); outputSampleR = iirSampleBR; } + fpFlip = !fpFlip; if (wet < 1.0) outputSampleL = (outputSampleL * wet) + (inputSampleL * dry); if (wet < 1.0) outputSampleR = (outputSampleR * wet) + (inputSampleR * dry); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = outputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((outputSampleL-fpTemp)*fpNew); - outputSampleL += fpNShapeLA; - - fpTemp = outputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((outputSampleR-fpTemp)*fpNew); - outputSampleR += fpNShapeRA; - } - else { - fpTemp = outputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((outputSampleL-fpTemp)*fpNew); - outputSampleL += fpNShapeLB; - - fpTemp = outputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((outputSampleR-fpTemp)*fpNew); - outputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = outputSampleL; *out2 = outputSampleR; @@ -174,9 +159,6 @@ void Lowpass::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double inputSampleR; double outputSampleL; double outputSampleR; - double fpTemp; - double fpOld = 0.618033988749894848204586; //golden ratio! - double fpNew = 1.0 - fpOld; iirAmount += (iirAmount * tight * tight); if (tight > 0) tight /= 1.5; @@ -263,33 +245,23 @@ void Lowpass::processDoubleReplacing(double **inputs, double **outputs, VstInt32 iirSampleBR = (iirSampleBR * (1 - (offset * iirAmount))) + (inputSampleR * (offset * iirAmount)); outputSampleR = iirSampleBR; } + fpFlip = !fpFlip; if (wet < 1.0) outputSampleL = (outputSampleL * wet) + (inputSampleL * dry); if (wet < 1.0) outputSampleR = (outputSampleR * wet) + (inputSampleR * dry); - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = outputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((outputSampleL-fpTemp)*fpNew); - outputSampleL += fpNShapeLA; - - fpTemp = outputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((outputSampleR-fpTemp)*fpNew); - outputSampleR += fpNShapeRA; - } - else { - fpTemp = outputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((outputSampleL-fpTemp)*fpNew); - outputSampleL += fpNShapeLB; - - fpTemp = outputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((outputSampleR-fpTemp)*fpNew); - outputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = outputSampleL; *out2 = outputSampleR; diff --git a/plugins/MacVST/Melt/Melt.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Melt/Melt.xcodeproj/christopherjohnson.pbxuser index d275953..3b3fdf3 100755 --- a/plugins/MacVST/Melt/Melt.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Melt/Melt.xcodeproj/christopherjohnson.pbxuser @@ -51,11 +51,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528461053; - PBXWorkspaceStateSaveDate = 528461053; + PBXPerProjectTemplateStateSaveDate = 569770170; + PBXWorkspaceStateSaveDate = 569770170; }; perUserProjectItems = { - 8B9D6DFA1F7EF323007AB60F /* PBXTextBookmark */ = 8B9D6DFA1F7EF323007AB60F /* PBXTextBookmark */; + 8B793CB821F600C5006E9731 /* PBXTextBookmark */ = 8B793CB821F600C5006E9731 /* PBXTextBookmark */; 8B9D7BCD1F7FAD1A007AB60F /* PBXTextBookmark */ = 8B9D7BCD1F7FAD1A007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -88,7 +88,7 @@ }; 24D8286F09A914000093AEF8 /* MeltProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 7800}}"; + sepNavIntBoundsRect = "{{0, 0}, {621, 7371}}"; sepNavSelRange = "{19360, 0}"; sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{254, 39}, {895, 831}}"; @@ -108,10 +108,10 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B9D6DFA1F7EF323007AB60F /* PBXTextBookmark */ = { + 8B793CB821F600C5006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* MeltProc.cpp */; - name = "MeltProc.cpp: 558"; + name = "MeltProc.cpp: 553"; rLen = 0; rLoc = 19360; rType = 0; diff --git a/plugins/MacVST/Melt/Melt.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Melt/Melt.xcodeproj/christopherjohnson.perspectivev3 index edef64c..e6e1617 100755 --- a/plugins/MacVST/Melt/Melt.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Melt/Melt.xcodeproj/christopherjohnson.perspectivev3 @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D7BCD1F7FAD1A007AB60F</string> + <string>8B793CB821F600C5006E9731</string> <key>history</key> <array> - <string>8B9D6DFA1F7EF323007AB60F</string> + <string>8B9D7BCD1F7FAD1A007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 13}}</string> + <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> <string>339 331 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>13pt</string> + <string>0pt</string> </dict> <dict> <key>Proportion</key> - <string>428pt</string> + <string>441pt</string> <key>Tabs</key> <array> <dict> @@ -393,7 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 401}}</string> + <string>{{10, 27}, {603, 414}}</string> <key>RubberWindowFrame</key> <string>339 331 810 487 0 0 1440 878 </string> </dict> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7BCE1F7FAD1A007AB60F</string> + <string>8B793CB921F600C5006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7BCF1F7FAD1A007AB60F</string> + <string>8B793CBA21F600C5006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7BD01F7FAD1A007AB60F</string> + <string>8B793CBB21F600C5006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -654,7 +654,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528461082.07116401</real> + <real>569770181.85578704</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -671,7 +671,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7BD11F7FAD1A007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/Melt/Melt.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Melt/source/Melt.cpp b/plugins/MacVST/Melt/source/Melt.cpp index 9722e1f..35ede1e 100755 --- a/plugins/MacVST/Melt/source/Melt.cpp +++ b/plugins/MacVST/Melt/source/Melt.cpp @@ -26,11 +26,8 @@ Melt::Melt(audioMasterCallback audioMaster) : slowCount = 0; gcount = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Melt/source/Melt.h b/plugins/MacVST/Melt/source/Melt.h index a8e0f38..af11f0f 100755 --- a/plugins/MacVST/Melt/source/Melt.h +++ b/plugins/MacVST/Melt/source/Melt.h @@ -70,11 +70,8 @@ private: int slowCount; int gcount; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/Melt/source/MeltProc.cpp b/plugins/MacVST/Melt/source/MeltProc.cpp index 48a1c11..8a55732 100755 --- a/plugins/MacVST/Melt/source/MeltProc.cpp +++ b/plugins/MacVST/Melt/source/MeltProc.cpp @@ -21,9 +21,6 @@ void Melt::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram double wet = D; double dry = 1.0-wet; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -271,25 +268,14 @@ void Melt::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -315,9 +301,6 @@ void Melt::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa double wet = D; double dry = 1.0-wet; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -565,25 +548,16 @@ void Melt::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/MidSide/MidSide.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/MidSide/MidSide.xcodeproj/christopherjohnson.pbxuser index ec9df9a..62992ba 100755 --- a/plugins/MacVST/MidSide/MidSide.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/MidSide/MidSide.xcodeproj/christopherjohnson.pbxuser @@ -51,11 +51,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528461091; - PBXWorkspaceStateSaveDate = 528461091; + PBXPerProjectTemplateStateSaveDate = 569770425; + PBXWorkspaceStateSaveDate = 569770425; }; perUserProjectItems = { - 8B9D6E101F7EF349007AB60F /* PBXTextBookmark */ = 8B9D6E101F7EF349007AB60F /* PBXTextBookmark */; + 8B793CDA21F601C2006E9731 /* PBXTextBookmark */ = 8B793CDA21F601C2006E9731 /* PBXTextBookmark */; 8B9D7BED1F7FAD3F007AB60F /* PBXTextBookmark */ = 8B9D7BED1F7FAD3F007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -108,7 +108,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B9D6E101F7EF349007AB60F /* PBXTextBookmark */ = { + 8B793CDA21F601C2006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; name = "audioeffectx.cpp: 307"; diff --git a/plugins/MacVST/MidSide/MidSide.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/MidSide/MidSide.xcodeproj/christopherjohnson.perspectivev3 index b6def9d..721ff92 100755 --- a/plugins/MacVST/MidSide/MidSide.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/MidSide/MidSide.xcodeproj/christopherjohnson.perspectivev3 @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D7BED1F7FAD3F007AB60F</string> + <string>8B793CDA21F601C2006E9731</string> <key>history</key> <array> - <string>8B9D6E101F7EF349007AB60F</string> + <string>8B9D7BED1F7FAD3F007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7BEE1F7FAD3F007AB60F</string> + <string>8B793CDB21F601C2006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7BEF1F7FAD3F007AB60F</string> + <string>8B793CDC21F601C2006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7BF01F7FAD3F007AB60F</string> + <string>8B793CDD21F601C2006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -654,7 +654,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528461119.98817199</real> + <real>569770434.56493402</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -671,7 +671,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7BF11F7FAD3F007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/MidSide/MidSide.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/MidSide/source/MidSide.cpp b/plugins/MacVST/MidSide/source/MidSide.cpp index bc37393..8f61cff 100755 --- a/plugins/MacVST/MidSide/source/MidSide.cpp +++ b/plugins/MacVST/MidSide/source/MidSide.cpp @@ -13,11 +13,8 @@ MidSide::MidSide(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, kNumPrograms, kNumParameters) { A = 0.5; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/MidSide/source/MidSide.h b/plugins/MacVST/MidSide/source/MidSide.h index 28b2ae7..4d139c8 100755 --- a/plugins/MacVST/MidSide/source/MidSide.h +++ b/plugins/MacVST/MidSide/source/MidSide.h @@ -52,11 +52,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/MidSide/source/MidSideProc.cpp b/plugins/MacVST/MidSide/source/MidSideProc.cpp index 2df14f4..cca7a5c 100755 --- a/plugins/MacVST/MidSide/source/MidSideProc.cpp +++ b/plugins/MacVST/MidSide/source/MidSideProc.cpp @@ -14,9 +14,6 @@ void MidSide::processReplacing(float **inputs, float **outputs, VstInt32 sampleF float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -76,25 +73,14 @@ void MidSide::processReplacing(float **inputs, float **outputs, VstInt32 sampleF mid *= midgain; side *= sidegain; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = mid; - fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLA; - fpTemp = side; - fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRA; - } - else { - fpTemp = mid; - fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLB; - fpTemp = side; - fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)mid, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + mid += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)side, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + side += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = mid; *out2 = side; @@ -113,9 +99,6 @@ void MidSide::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -175,25 +158,16 @@ void MidSide::processDoubleReplacing(double **inputs, double **outputs, VstInt32 mid *= midgain; side *= sidegain; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = mid; - fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLA; - fpTemp = side; - fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRA; - } - else { - fpTemp = mid; - fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLB; - fpTemp = side; - fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)mid, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + mid += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)side, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + side += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = mid; *out2 = side; diff --git a/plugins/MacVST/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.pbxuser index 33122fe..b951dba 100755 --- a/plugins/MacVST/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.pbxuser @@ -49,16 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 531745203; - PBXWorkspaceStateSaveDate = 531745203; + PBXPerProjectTemplateStateSaveDate = 569770459; + PBXWorkspaceStateSaveDate = 569770459; }; perUserProjectItems = { 8B6692F41FB1C728007B3434 /* PBXTextBookmark */ = 8B6692F41FB1C728007B3434 /* PBXTextBookmark */; - 8B6692F61FB1C728007B3434 /* PBXTextBookmark */ = 8B6692F61FB1C728007B3434 /* PBXTextBookmark */; 8B67C7A21FA3B4CC008C64D6 /* PBXTextBookmark */ = 8B67C7A21FA3B4CC008C64D6 /* PBXTextBookmark */; - 8BE0C0611FB1C9B7000B2082 /* PBXBookmark */ = 8BE0C0611FB1C9B7000B2082 /* PBXBookmark */; + 8B793CFA21F601E6006E9731 /* PBXTextBookmark */ = 8B793CFA21F601E6006E9731 /* PBXTextBookmark */; 8BE0C0701FB1C9E6000B2082 /* PBXTextBookmark */ = 8BE0C0701FB1C9E6000B2082 /* PBXTextBookmark */; - 8BE0C0761FB1C9E6000B2082 /* PBXTextBookmark */ = 8BE0C0761FB1C9E6000B2082 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -74,9 +72,9 @@ }; 245463B80991757100464AD3 /* NCSeventeen.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {859, 1092}}"; + sepNavIntBoundsRect = "{{0, 0}, {817, 1105}}"; sepNavSelRange = "{2660, 0}"; - sepNavVisRange = "{2280, 147}"; + sepNavVisRange = "{2320, 107}"; sepNavWindowFrame = "{{20, 47}, {895, 831}}"; }; }; @@ -90,9 +88,9 @@ }; 24D8286F09A914000093AEF8 /* NCSeventeenProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1250, 9984}}"; + sepNavIntBoundsRect = "{{0, 0}, {1250, 9802}}"; sepNavSelRange = "{1603, 0}"; - sepNavVisRange = "{15480, 1916}"; + sepNavVisRange = "{15441, 2003}"; sepNavWindowFrame = "{{13, 39}, {1297, 839}}"; }; }; @@ -120,16 +118,6 @@ vrLen = 159; vrLoc = 16026; }; - 8B6692F61FB1C728007B3434 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 245463B80991757100464AD3 /* NCSeventeen.h */; - name = "NCSeventeen.h: 69"; - rLen = 0; - rLoc = 2660; - rType = 0; - vrLen = 258; - vrLoc = 2169; - }; 8B67C7A21FA3B4CC008C64D6 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; @@ -140,29 +128,25 @@ vrLen = 399; vrLoc = 10459; }; - 8BE0C0611FB1C9B7000B2082 /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 24D8286F09A914000093AEF8 /* NCSeventeenProc.cpp */; - }; - 8BE0C0701FB1C9E6000B2082 /* PBXTextBookmark */ = { + 8B793CFA21F601E6006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 245463B80991757100464AD3 /* NCSeventeen.h */; name = "NCSeventeen.h: 69"; rLen = 0; rLoc = 2660; rType = 0; - vrLen = 147; - vrLoc = 2280; + vrLen = 107; + vrLoc = 2320; }; - 8BE0C0761FB1C9E6000B2082 /* PBXTextBookmark */ = { + 8BE0C0701FB1C9E6000B2082 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 24D8286F09A914000093AEF8 /* NCSeventeenProc.cpp */; - name = "NCSeventeenProc.cpp: 58"; + fRef = 245463B80991757100464AD3 /* NCSeventeen.h */; + name = "NCSeventeen.h: 69"; rLen = 0; - rLoc = 1603; + rLoc = 2660; rType = 0; - vrLen = 1916; - vrLoc = 15480; + vrLen = 147; + vrLoc = 2280; }; 8D01CCC60486CAD60068D4B7 /* NCSeventeen */ = { activeExec = 0; diff --git a/plugins/MacVST/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.perspectivev3 index 3b7ecb3..89e1157 100755 --- a/plugins/MacVST/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.perspectivev3 @@ -222,48 +222,7 @@ </dict> </array> <key>OpenEditors</key> - <array> - <dict> - <key>Content</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>8BE0C0741FB1C9E6000B2082</string> - <key>PBXProjectModuleLabel</key> - <string>NCSeventeenProc.cpp</string> - <key>PBXSplitModuleInNavigatorKey</key> - <dict> - <key>Split0</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>8BE0C0751FB1C9E6000B2082</string> - <key>PBXProjectModuleLabel</key> - <string>NCSeventeenProc.cpp</string> - <key>_historyCapacity</key> - <integer>0</integer> - <key>bookmark</key> - <string>8BE0C0761FB1C9E6000B2082</string> - <key>history</key> - <array> - <string>8BE0C0611FB1C9B7000B2082</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}, {1297, 742}}</string> - <key>PBXModuleWindowStatusBarHidden2</key> - <false/> - <key>RubberWindowFrame</key> - <string>13 95 1297 783 0 0 1440 878 </string> - </dict> - </dict> - </array> + <array/> <key>PerspectiveWidths</key> <array> <integer>810</integer> @@ -392,12 +351,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BE0C0701FB1C9E6000B2082</string> + <string>8B793CFA21F601E6006E9731</string> <key>history</key> <array> <string>8B67C7A21FA3B4CC008C64D6</string> <string>8B6692F41FB1C728007B3434</string> - <string>8B6692F61FB1C728007B3434</string> + <string>8BE0C0701FB1C9E6000B2082</string> </array> </dict> <key>SplitCount</key> @@ -411,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 102}}</string> + <string>{{0, 0}, {603, 86}}</string> <key>RubberWindowFrame</key> <string>249 231 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>102pt</string> + <string>86pt</string> </dict> <dict> <key>Proportion</key> - <string>339pt</string> + <string>355pt</string> <key>Tabs</key> <array> <dict> @@ -436,7 +395,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 312}}</string> + <string>{{10, 27}, {603, 328}}</string> <key>RubberWindowFrame</key> <string>249 231 810 487 0 0 1440 878 </string> </dict> @@ -520,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BE0C0711FB1C9E6000B2082</string> + <string>8B793CFB21F601E6006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BE0C0721FB1C9E6000B2082</string> + <string>8B793CFC21F601E6006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BE0C0731FB1C9E6000B2082</string> + <string>8B793CFD21F601E6006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -677,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>531745254.79790598</real> + <real>569770470.40799499</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -695,7 +654,6 @@ <key>WindowOrderList</key> <array> <string>/Users/christopherjohnson/Desktop/MacVST/NCSeventeen/NCSeventeen.xcodeproj</string> - <string>8BE0C0741FB1C9E6000B2082</string> </array> <key>WindowString</key> <string>249 231 810 487 0 0 1440 878 </string> diff --git a/plugins/MacVST/NCSeventeen/source/NCSeventeen.cpp b/plugins/MacVST/NCSeventeen/source/NCSeventeen.cpp index 9bc129a..409f983 100755 --- a/plugins/MacVST/NCSeventeen/source/NCSeventeen.cpp +++ b/plugins/MacVST/NCSeventeen/source/NCSeventeen.cpp @@ -31,11 +31,8 @@ NCSeventeen::NCSeventeen(audioMasterCallback audioMaster) : flip = false; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/NCSeventeen/source/NCSeventeen.h b/plugins/MacVST/NCSeventeen/source/NCSeventeen.h index 01179e9..b3ecd94 100755 --- a/plugins/MacVST/NCSeventeen/source/NCSeventeen.h +++ b/plugins/MacVST/NCSeventeen/source/NCSeventeen.h @@ -70,11 +70,8 @@ private: bool flip; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/NCSeventeen/source/NCSeventeenProc.cpp b/plugins/MacVST/NCSeventeen/source/NCSeventeenProc.cpp index b2f2aa1..e124cb5 100755 --- a/plugins/MacVST/NCSeventeen/source/NCSeventeenProc.cpp +++ b/plugins/MacVST/NCSeventeen/source/NCSeventeenProc.cpp @@ -19,9 +19,6 @@ void NCSeventeen::processReplacing(float **inputs, float **outputs, VstInt32 sam double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double IIRscaleback = 0.0004716; double bassScaleback = 0.0002364; @@ -347,25 +344,14 @@ void NCSeventeen::processReplacing(float **inputs, float **outputs, VstInt32 sam if (inputSampleR < -0.95) inputSampleR = -0.95; //iron bar - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -389,9 +375,6 @@ void NCSeventeen::processDoubleReplacing(double **inputs, double **outputs, VstI double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double IIRscaleback = 0.0004716; double bassScaleback = 0.0002364; @@ -716,25 +699,16 @@ void NCSeventeen::processDoubleReplacing(double **inputs, double **outputs, VstI if (inputSampleR < -0.95) inputSampleR = -0.95; //iron bar - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Noise/Noise.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Noise/Noise.xcodeproj/christopherjohnson.pbxuser index bd35d43..6370236 100755 --- a/plugins/MacVST/Noise/Noise.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Noise/Noise.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 538707186; - PBXWorkspaceStateSaveDate = 538707186; + PBXPerProjectTemplateStateSaveDate = 569770541; + PBXWorkspaceStateSaveDate = 569770541; }; perUserProjectItems = { 8B4E5870201C0C8B00B5DC2A /* PBXTextBookmark */ = 8B4E5870201C0C8B00B5DC2A /* PBXTextBookmark */; - 8B7ADC6220157443005F895F /* PBXTextBookmark */ = 8B7ADC6220157443005F895F /* PBXTextBookmark */; + 8B793D1A21F60235006E9731 /* PBXTextBookmark */ = 8B793D1A21F60235006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -70,7 +70,7 @@ }; 245463B80991757100464AD3 /* Noise.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {859, 1170}}"; + sepNavIntBoundsRect = "{{0, 0}, {523, 1300}}"; sepNavSelRange = "{2962, 0}"; sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{895, 11}, {895, 831}}"; @@ -116,15 +116,15 @@ vrLen = 0; vrLoc = 0; }; - 8B7ADC6220157443005F895F /* PBXTextBookmark */ = { + 8B793D1A21F60235006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 245463B80991757100464AD3 /* Noise.h */; - name = "Noise.h: 95"; + name = "Noise.h: 93"; rLen = 0; rLoc = 2962; rType = 0; - vrLen = 638; - vrLoc = 1696; + vrLen = 0; + vrLoc = 0; }; 8D01CCC60486CAD60068D4B7 /* Noise */ = { activeExec = 0; diff --git a/plugins/MacVST/Noise/Noise.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Noise/Noise.xcodeproj/christopherjohnson.perspectivev3 index cddeac8..9dc310c 100755 --- a/plugins/MacVST/Noise/Noise.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Noise/Noise.xcodeproj/christopherjohnson.perspectivev3 @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B4E5870201C0C8B00B5DC2A</string> + <string>8B793D1A21F60235006E9731</string> <key>history</key> <array> - <string>8B7ADC6220157443005F895F</string> + <string>8B4E5870201C0C8B00B5DC2A</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {454, 9}}</string> + <string>{{0, 0}, {454, 0}}</string> <key>RubberWindowFrame</key> <string>26 91 661 394 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>9pt</string> + <string>0pt</string> </dict> <dict> <key>Proportion</key> - <string>339pt</string> + <string>348pt</string> <key>Tabs</key> <array> <dict> @@ -393,7 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {454, 312}}</string> + <string>{{10, 27}, {454, 321}}</string> <key>RubberWindowFrame</key> <string>26 91 661 394 0 0 1440 878 </string> </dict> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B4E5871201C0C8B00B5DC2A</string> + <string>8B793D1B21F60235006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B4E5872201C0C8B00B5DC2A</string> + <string>8B793D1C21F60235006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B4E5873201C0C8B00B5DC2A</string> + <string>8B793D1D21F60235006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>538709131.54011202</real> + <real>569770549.64791</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> diff --git a/plugins/MacVST/Noise/source/Noise.cpp b/plugins/MacVST/Noise/source/Noise.cpp index 76d00c8..d955a29 100755 --- a/plugins/MacVST/Noise/source/Noise.cpp +++ b/plugins/MacVST/Noise/source/Noise.cpp @@ -36,11 +36,8 @@ Noise::Noise(audioMasterCallback audioMaster) : flipR = false; filterflip = false; for(int count = 0; count < 11; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;} - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Noise/source/Noise.h b/plugins/MacVST/Noise/source/Noise.h index 0ee4d76..67c32bc 100755 --- a/plugins/MacVST/Noise/source/Noise.h +++ b/plugins/MacVST/Noise/source/Noise.h @@ -81,11 +81,8 @@ private: double f[11]; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/Noise/source/NoiseProc.cpp b/plugins/MacVST/Noise/source/NoiseProc.cpp index e185120..31cba20 100755 --- a/plugins/MacVST/Noise/source/NoiseProc.cpp +++ b/plugins/MacVST/Noise/source/NoiseProc.cpp @@ -104,9 +104,6 @@ void Noise::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra f[9] /= overallscale; //and now it's neatly scaled, too - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; @@ -299,25 +296,14 @@ void Noise::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra //sometimes I'm really tired and can't do stuff, and I remember trying to simplify this //and breaking it somehow. So, there ya go, strange obtuse code. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -426,9 +412,6 @@ void Noise::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s f[9] /= overallscale; //and now it's neatly scaled, too - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; while (--sampleFrames >= 0) { @@ -619,25 +602,16 @@ void Noise::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s //sometimes I'm really tired and can't do stuff, and I remember trying to simplify this //and breaking it somehow. So, there ya go, strange obtuse code. - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.pbxuser index 2cc6a7f..b0c63ea 100755 --- a/plugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* NonlinearSpace */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 541896738; - PBXWorkspaceStateSaveDate = 541896738; + PBXPerProjectTemplateStateSaveDate = 569770570; + PBXWorkspaceStateSaveDate = 569770570; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* NonlinearSpace */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.perspectivev3 index cbd5886..6658511 100755 --- a/plugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.perspectivev3 @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B945E71204CB08000DFB653</string> + <string>8B793D3A21F60255006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B945E72204CB08000DFB653</string> + <string>8B793D3B21F60255006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B945E73204CB08000DFB653</string> + <string>8B793D3C21F60255006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>541896832.40515304</real> + <real>569770581.31031001</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> diff --git a/plugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/project.pbxproj b/plugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/project.pbxproj index 745dea7..72507dd 100755 --- a/plugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/project.pbxproj +++ b/plugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* NonlinearSpace */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "NonlinearSpace" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* NonlinearSpace */, + 8D01CCC60486CAD60068D4B7 /* AudioUnit */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/NonlinearSpace/source/NonlinearSpace.cpp b/plugins/MacVST/NonlinearSpace/source/NonlinearSpace.cpp index 6941556..eb05bc3 100755 --- a/plugins/MacVST/NonlinearSpace/source/NonlinearSpace.cpp +++ b/plugins/MacVST/NonlinearSpace/source/NonlinearSpace.cpp @@ -195,11 +195,8 @@ NonlinearSpace::NonlinearSpace(audioMasterCallback audioMaster) : countdown = -1; flip = true; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/NonlinearSpace/source/NonlinearSpace.h b/plugins/MacVST/NonlinearSpace/source/NonlinearSpace.h index e915b21..dbaa0b3 100755 --- a/plugins/MacVST/NonlinearSpace/source/NonlinearSpace.h +++ b/plugins/MacVST/NonlinearSpace/source/NonlinearSpace.h @@ -208,11 +208,8 @@ private: double nonlin; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/NonlinearSpace/source/NonlinearSpaceProc.cpp b/plugins/MacVST/NonlinearSpace/source/NonlinearSpaceProc.cpp index 597e184..f9df9fc 100755 --- a/plugins/MacVST/NonlinearSpace/source/NonlinearSpaceProc.cpp +++ b/plugins/MacVST/NonlinearSpace/source/NonlinearSpaceProc.cpp @@ -14,9 +14,6 @@ void NonlinearSpace::processReplacing(float **inputs, float **outputs, VstInt32 float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double drySampleL; double drySampleR; @@ -746,25 +743,14 @@ void NonlinearSpace::processReplacing(float **inputs, float **outputs, VstInt32 inputSampleR += drySampleR; //here we combine the tanks with the dry signal - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither flip = !flip; *out1 = inputSampleL; @@ -784,9 +770,6 @@ void NonlinearSpace::processDoubleReplacing(double **inputs, double **outputs, V double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double drySampleL; double drySampleR; @@ -1516,25 +1499,16 @@ void NonlinearSpace::processDoubleReplacing(double **inputs, double **outputs, V inputSampleR += drySampleR; //here we combine the tanks with the dry signal - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither flip = !flip; *out1 = inputSampleL; diff --git a/plugins/MacVST/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.pbxuser index 0de16d2..baca580 100755 --- a/plugins/MacVST/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.pbxuser @@ -49,14 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 547779178; - PBXWorkspaceStateSaveDate = 547779178; + PBXPerProjectTemplateStateSaveDate = 557696448; + PBXWorkspaceStateSaveDate = 557696448; }; perUserProjectItems = { 8B7E3DCF20A6735C00482CB5 /* PBXTextBookmark */ = 8B7E3DCF20A6735C00482CB5 /* PBXTextBookmark */; 8B7E3DD020A6735C00482CB5 /* PBXTextBookmark */ = 8B7E3DD020A6735C00482CB5 /* PBXTextBookmark */; - 8B7E3DD120A6735C00482CB5 /* PBXTextBookmark */ = 8B7E3DD120A6735C00482CB5 /* PBXTextBookmark */; - 8B7E3DD220A6735C00482CB5 /* PBXTextBookmark */ = 8B7E3DD220A6735C00482CB5 /* PBXTextBookmark */; + 8B91401D213DC60B00BA6EEC /* PBXTextBookmark */ = 8B91401D213DC60B00BA6EEC /* PBXTextBookmark */; + 8B91401E213DC60B00BA6EEC /* PBXTextBookmark */ = 8B91401E213DC60B00BA6EEC /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -88,10 +88,10 @@ }; 24D8286F09A914000093AEF8 /* NotJustAnotherDitherProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {712, 6383}}"; + sepNavIntBoundsRect = "{{0, 0}, {677, 6474}}"; sepNavSelRange = "{2713, 0}"; - sepNavVisRange = "{1640, 303}"; - sepNavWindowFrame = "{{624, 47}, {895, 831}}"; + sepNavVisRange = "{1671, 272}"; + sepNavWindowFrame = "{{545, 47}, {895, 831}}"; }; }; 8B02375E1D42B1C400E1E8C8 /* Source Control */ = { @@ -128,25 +128,25 @@ vrLen = 451; vrLoc = 1431; }; - 8B7E3DD120A6735C00482CB5 /* PBXTextBookmark */ = { + 8B91401D213DC60B00BA6EEC /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* NotJustAnotherDitherProc.cpp */; name = "NotJustAnotherDitherProc.cpp: 73"; rLen = 0; rLoc = 2713; rType = 0; - vrLen = 303; - vrLoc = 1640; + vrLen = 272; + vrLoc = 1671; }; - 8B7E3DD220A6735C00482CB5 /* PBXTextBookmark */ = { + 8B91401E213DC60B00BA6EEC /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* NotJustAnotherDitherProc.cpp */; name = "NotJustAnotherDitherProc.cpp: 73"; rLen = 0; rLoc = 2713; rType = 0; - vrLen = 303; - vrLoc = 1640; + vrLen = 272; + vrLoc = 1671; }; 8D01CCC60486CAD60068D4B7 /* NotJustAnotherDither */ = { activeExec = 0; diff --git a/plugins/MacVST/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.perspectivev3 index 0c4cfd9..0bb2bde 100755 --- a/plugins/MacVST/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.perspectivev3 @@ -323,7 +323,7 @@ <real>258</real> </array> <key>RubberWindowFrame</key> - <string>639 259 810 487 0 0 1440 878 </string> + <string>630 259 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -351,12 +351,12 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B7E3DD220A6735C00482CB5</string> + <string>8B91401E213DC60B00BA6EEC</string> <key>history</key> <array> <string>8B7E3DCF20A6735C00482CB5</string> <string>8B7E3DD020A6735C00482CB5</string> - <string>8B7E3DD120A6735C00482CB5</string> + <string>8B91401D213DC60B00BA6EEC</string> </array> </dict> <key>SplitCount</key> @@ -370,18 +370,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {530, 132}}</string> + <string>{{0, 0}, {530, 117}}</string> <key>RubberWindowFrame</key> - <string>639 259 810 487 0 0 1440 878 </string> + <string>630 259 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -395,9 +395,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {530, 282}}</string> + <string>{{10, 27}, {530, 297}}</string> <key>RubberWindowFrame</key> - <string>639 259 810 487 0 0 1440 878 </string> + <string>630 259 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -479,11 +479,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B7E3DD320A6735C00482CB5</string> + <string>8B91401F213DC60B00BA6EEC</string> <string>1CA23ED40692098700951B8B</string> - <string>8B7E3DD420A6735C00482CB5</string> + <string>8B914020213DC60B00BA6EEC</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B7E3DD520A6735C00482CB5</string> + <string>8B914021213DC60B00BA6EEC</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -636,7 +636,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>547779420.72387397</real> + <real>557696523.36446095</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -653,11 +653,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B7E3DD620A6735C00482CB5</string> + <string>8B914022213DC60B00BA6EEC</string> <string>/Users/christopherjohnson/Desktop/MacVST/NotJustAnotherDither/NotJustAnotherDither.xcodeproj</string> </array> <key>WindowString</key> - <string>639 259 810 487 0 0 1440 878 </string> + <string>630 259 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.pbxuser index a659ad8..1f3a7c9 100755 --- a/plugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* OneCornerClip */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 541882923; - PBXWorkspaceStateSaveDate = 541882923; + PBXPerProjectTemplateStateSaveDate = 569770606; + PBXWorkspaceStateSaveDate = 569770606; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* OneCornerClip */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.perspectivev3 index 22f0aea..07b0810 100755 --- a/plugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.perspectivev3 @@ -256,6 +256,8 @@ <key>Layout</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -384,6 +386,8 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> + <key>RubberWindowFrame</key> + <string>19 372 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -438,8 +442,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> - <key>RubberWindowFrame</key> - <string>19 372 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -467,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B181A2A204C7A3200516BEE</string> + <string>8B793D5921F60278006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B181A2B204C7A3200516BEE</string> + <string>8B793D5A21F60278006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B181A2C204C7A3200516BEE</string> + <string>8B793D5B21F60278006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -624,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>541885613.92280805</real> + <real>569770616.13496995</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -641,9 +643,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B181A59204C84AD00516BEE</string> - <string>8B181A5A204C84AD00516BEE</string> - <string>/Users/christopherjohnson/Desktop/OneCornerClip/OneCornerClip.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/OneCornerClip/OneCornerClip.xcodeproj</string> </array> <key>WindowString</key> <string>19 372 810 487 0 0 1440 878 </string> diff --git a/plugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/project.pbxproj b/plugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/project.pbxproj index f6df3c9..8f62a88 100755 --- a/plugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/project.pbxproj +++ b/plugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* OneCornerClip */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "OneCornerClip" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* OneCornerClip */, + 8D01CCC60486CAD60068D4B7 /* AudioUnit */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/OneCornerClip/source/OneCornerClip.cpp b/plugins/MacVST/OneCornerClip/source/OneCornerClip.cpp index bf8828e..59e2824 100755 --- a/plugins/MacVST/OneCornerClip/source/OneCornerClip.cpp +++ b/plugins/MacVST/OneCornerClip/source/OneCornerClip.cpp @@ -25,11 +25,8 @@ OneCornerClip::OneCornerClip(audioMasterCallback audioMaster) : limitPosR = 0.0; limitNegR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/OneCornerClip/source/OneCornerClip.h b/plugins/MacVST/OneCornerClip/source/OneCornerClip.h index 07f480a..4f039fa 100755 --- a/plugins/MacVST/OneCornerClip/source/OneCornerClip.h +++ b/plugins/MacVST/OneCornerClip/source/OneCornerClip.h @@ -56,11 +56,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double lastSampleL; diff --git a/plugins/MacVST/OneCornerClip/source/OneCornerClipProc.cpp b/plugins/MacVST/OneCornerClip/source/OneCornerClipProc.cpp index 0398b60..c45c69b 100755 --- a/plugins/MacVST/OneCornerClip/source/OneCornerClipProc.cpp +++ b/plugins/MacVST/OneCornerClip/source/OneCornerClipProc.cpp @@ -17,9 +17,6 @@ void OneCornerClip::processReplacing(float **inputs, float **outputs, VstInt32 s double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputGain = pow(10.0,(((A*36.0)-12.0)/20.0)); double posThreshold = B; @@ -157,25 +154,14 @@ void OneCornerClip::processReplacing(float **inputs, float **outputs, VstInt32 s inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither if (clipEngage == false) { @@ -204,9 +190,6 @@ void OneCornerClip::processDoubleReplacing(double **inputs, double **outputs, Vs double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputGain = pow(10.0,(((A*36.0)-12.0)/20.0)); double posThreshold = B; @@ -345,25 +328,16 @@ void OneCornerClip::processDoubleReplacing(double **inputs, double **outputs, Vs inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither if (clipEngage == false) { diff --git a/plugins/MacVST/PDBuss/PDBuss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/PDBuss/PDBuss.xcodeproj/christopherjohnson.pbxuser index 1d8c78b..37b5241 100755 --- a/plugins/MacVST/PDBuss/PDBuss.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/PDBuss/PDBuss.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 538696868; - PBXWorkspaceStateSaveDate = 538696868; + PBXPerProjectTemplateStateSaveDate = 569770752; + PBXWorkspaceStateSaveDate = 569770752; }; perUserProjectItems = { - 8B4E5710201BE13900B5DC2A /* PBXTextBookmark */ = 8B4E5710201BE13900B5DC2A /* PBXTextBookmark */; 8B4E574B201BE1E100B5DC2A /* PBXTextBookmark */ = 8B4E574B201BE1E100B5DC2A /* PBXTextBookmark */; + 8B793D7821F60308006E9731 /* PBXTextBookmark */ = 8B793D7821F60308006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -62,9 +62,9 @@ }; 2407DEB6089929BA00EB68BF /* PDBuss.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 1742}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 1820}}"; sepNavSelRange = "{2794, 0}"; - sepNavVisRange = "{2616, 272}"; + sepNavVisRange = "{2688, 198}"; sepNavWindowFrame = "{{337, 47}, {895, 831}}"; }; }; @@ -106,7 +106,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B4E5710201BE13900B5DC2A /* PBXTextBookmark */ = { + 8B4E574B201BE1E100B5DC2A /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 2407DEB6089929BA00EB68BF /* PDBuss.cpp */; name = "PDBuss.cpp: 85"; @@ -116,15 +116,15 @@ vrLen = 272; vrLoc = 2616; }; - 8B4E574B201BE1E100B5DC2A /* PBXTextBookmark */ = { + 8B793D7821F60308006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 2407DEB6089929BA00EB68BF /* PDBuss.cpp */; - name = "PDBuss.cpp: 85"; + name = "PDBuss.cpp: 83"; rLen = 0; rLoc = 2794; rType = 0; - vrLen = 272; - vrLoc = 2616; + vrLen = 198; + vrLoc = 2688; }; 8D01CCC60486CAD60068D4B7 /* PDBuss */ = { activeExec = 0; diff --git a/plugins/MacVST/PDBuss/PDBuss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/PDBuss/PDBuss.xcodeproj/christopherjohnson.perspectivev3 index 419ed77..2dcefe9 100755 --- a/plugins/MacVST/PDBuss/PDBuss.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/PDBuss/PDBuss.xcodeproj/christopherjohnson.perspectivev3 @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B4E574B201BE1E100B5DC2A</string> + <string>8B793D7821F60308006E9731</string> <key>history</key> <array> - <string>8B4E5710201BE13900B5DC2A</string> + <string>8B4E574B201BE1E100B5DC2A</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 132}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> <string>27 370 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -393,7 +393,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {603, 297}}</string> + <key>RubberWindowFrame</key> + <string>27 370 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -448,8 +450,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 282}}</string> - <key>RubberWindowFrame</key> - <string>27 370 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B4E574C201BE1E100B5DC2A</string> + <string>8B793D7921F60308006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B4E574D201BE1E100B5DC2A</string> + <string>8B793D7A21F60308006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B4E574E201BE1E100B5DC2A</string> + <string>8B793D7B21F60308006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>538698209.87022996</real> + <real>569770760.80971301</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,7 +651,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>/Users/christopherjohnson/Desktop/PDBuss/PDBuss.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/PDBuss/PDBuss.xcodeproj</string> </array> <key>WindowString</key> <string>27 370 810 487 0 0 1440 878 </string> diff --git a/plugins/MacVST/PDBuss/source/PDBuss.cpp b/plugins/MacVST/PDBuss/source/PDBuss.cpp index 323d8cf..8b31d8b 100755 --- a/plugins/MacVST/PDBuss/source/PDBuss.cpp +++ b/plugins/MacVST/PDBuss/source/PDBuss.cpp @@ -21,11 +21,8 @@ PDBuss::PDBuss(audioMasterCallback audioMaster) : previousSampleL = 0.0; previousSampleR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/PDBuss/source/PDBuss.h b/plugins/MacVST/PDBuss/source/PDBuss.h index 5c7a504..3e6d9b8 100755 --- a/plugins/MacVST/PDBuss/source/PDBuss.h +++ b/plugins/MacVST/PDBuss/source/PDBuss.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double gainchase; double settingchase; diff --git a/plugins/MacVST/PDBuss/source/PDBussProc.cpp b/plugins/MacVST/PDBuss/source/PDBussProc.cpp index c099057..6da8fa0 100755 --- a/plugins/MacVST/PDBuss/source/PDBussProc.cpp +++ b/plugins/MacVST/PDBuss/source/PDBussProc.cpp @@ -13,9 +13,6 @@ void PDBuss::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr float* in2 = inputs[1]; float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double intensity = B; @@ -122,25 +119,14 @@ void PDBuss::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr previousSampleR = sin(drySampleR); //apply the sine while storing previous sample - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -158,9 +144,6 @@ void PDBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double* in2 = inputs[1]; double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double intensity = B; @@ -267,25 +250,16 @@ void PDBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 previousSampleR = sin(drySampleR); //apply the sine while storing previous sample - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/PDChannel/PDChannel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/PDChannel/PDChannel.xcodeproj/christopherjohnson.pbxuser index ed7f54d..80f815a 100755 --- a/plugins/MacVST/PDChannel/PDChannel.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/PDChannel/PDChannel.xcodeproj/christopherjohnson.pbxuser @@ -49,13 +49,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 538696873; - PBXWorkspaceStateSaveDate = 538696873; + PBXPerProjectTemplateStateSaveDate = 569770782; + PBXWorkspaceStateSaveDate = 569770782; }; perUserProjectItems = { 8B4E574F201BE1E300B5DC2A /* PBXTextBookmark */ = 8B4E574F201BE1E300B5DC2A /* PBXTextBookmark */; - 8B4E5750201BE1E300B5DC2A /* XCBuildMessageTextBookmark */ = 8B4E5750201BE1E300B5DC2A /* XCBuildMessageTextBookmark */; 8B4E5751201BE1E300B5DC2A /* PBXTextBookmark */ = 8B4E5751201BE1E300B5DC2A /* PBXTextBookmark */; + 8B793D9821F60328006E9731 /* PBXTextBookmark */ = 8B793D9821F60328006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -87,9 +87,9 @@ }; 24D8286F09A914000093AEF8 /* PDChannelProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {691, 3705}}"; + sepNavIntBoundsRect = "{{0, 0}, {614, 3341}}"; sepNavSelRange = "{3644, 0}"; - sepNavVisRange = "{3544, 467}"; + sepNavVisRange = "{3529, 442}"; sepNavWindowFrame = "{{42, 47}, {895, 831}}"; }; }; @@ -117,15 +117,6 @@ vrLen = 244; vrLoc = 227; }; - 8B4E5750201BE1E300B5DC2A /* XCBuildMessageTextBookmark */ = { - isa = PBXTextBookmark; - comments = "'previousSampleR' was not declared in this scope"; - fRef = 24D8286F09A914000093AEF8 /* PDChannelProc.cpp */; - fallbackIsa = XCBuildMessageTextBookmark; - rLen = 1; - rLoc = 105; - rType = 1; - }; 8B4E5751201BE1E300B5DC2A /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* PDChannelProc.cpp */; @@ -136,6 +127,16 @@ vrLen = 467; vrLoc = 3544; }; + 8B793D9821F60328006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 24D8286F09A914000093AEF8 /* PDChannelProc.cpp */; + name = "PDChannelProc.cpp: 104"; + rLen = 0; + rLoc = 3644; + rType = 0; + vrLen = 442; + vrLoc = 3529; + }; 8D01CCC60486CAD60068D4B7 /* PDChannel */ = { activeExec = 0; }; diff --git a/plugins/MacVST/PDChannel/PDChannel.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/PDChannel/PDChannel.xcodeproj/christopherjohnson.perspectivev3 index 524cd88..4ed8256 100755 --- a/plugins/MacVST/PDChannel/PDChannel.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/PDChannel/PDChannel.xcodeproj/christopherjohnson.perspectivev3 @@ -256,6 +256,8 @@ <key>Layout</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -349,11 +351,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B4E5751201BE1E300B5DC2A</string> + <string>8B793D9821F60328006E9731</string> <key>history</key> <array> <string>8B4E574F201BE1E300B5DC2A</string> - <string>8B4E5750201BE1E300B5DC2A</string> + <string>8B4E5751201BE1E300B5DC2A</string> </array> </dict> <key>SplitCount</key> @@ -367,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 132}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> <string>24 89 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -392,7 +394,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {603, 297}}</string> + <key>RubberWindowFrame</key> + <string>24 89 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -447,8 +451,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 282}}</string> - <key>RubberWindowFrame</key> - <string>24 89 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -476,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B4E5752201BE1E300B5DC2A</string> + <string>8B793D9921F60328006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B4E5753201BE1E300B5DC2A</string> + <string>8B793D9A21F60328006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B4E5754201BE1E300B5DC2A</string> + <string>8B793D9B21F60328006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -633,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>538698211.51852405</real> + <real>569770792.98222196</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -650,7 +652,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>/Users/christopherjohnson/Desktop/PDChannel/PDChannel.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/PDChannel/PDChannel.xcodeproj</string> </array> <key>WindowString</key> <string>24 89 810 487 0 0 1440 878 </string> diff --git a/plugins/MacVST/PDChannel/source/PDChannel.cpp b/plugins/MacVST/PDChannel/source/PDChannel.cpp index d300fc8..aef639d 100755 --- a/plugins/MacVST/PDChannel/source/PDChannel.cpp +++ b/plugins/MacVST/PDChannel/source/PDChannel.cpp @@ -21,11 +21,8 @@ PDChannel::PDChannel(audioMasterCallback audioMaster) : previousSampleL = 0.0; previousSampleR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/PDChannel/source/PDChannel.h b/plugins/MacVST/PDChannel/source/PDChannel.h index e92117c..ea233e2 100755 --- a/plugins/MacVST/PDChannel/source/PDChannel.h +++ b/plugins/MacVST/PDChannel/source/PDChannel.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double gainchase; double settingchase; diff --git a/plugins/MacVST/PDChannel/source/PDChannelProc.cpp b/plugins/MacVST/PDChannel/source/PDChannelProc.cpp index d8f79df..fb5932d 100755 --- a/plugins/MacVST/PDChannel/source/PDChannelProc.cpp +++ b/plugins/MacVST/PDChannel/source/PDChannelProc.cpp @@ -13,9 +13,6 @@ void PDChannel::processReplacing(float **inputs, float **outputs, VstInt32 sampl float* in2 = inputs[1]; float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double intensity = B; @@ -115,25 +112,14 @@ void PDChannel::processReplacing(float **inputs, float **outputs, VstInt32 sampl previousSampleR = sin(drySampleR); //apply the sine while storing previous sample - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -151,9 +137,6 @@ void PDChannel::processDoubleReplacing(double **inputs, double **outputs, VstInt double* in2 = inputs[1]; double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double intensity = B; @@ -253,25 +236,16 @@ void PDChannel::processDoubleReplacing(double **inputs, double **outputs, VstInt previousSampleR = sin(drySampleR); //apply the sine while storing previous sample - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.pbxuser index 912d676..5bc2f16 100755 --- a/plugins/MacVST/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.pbxuser @@ -49,11 +49,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528461482; - PBXWorkspaceStateSaveDate = 528461482; + PBXPerProjectTemplateStateSaveDate = 569770816; + PBXWorkspaceStateSaveDate = 569770816; }; perUserProjectItems = { - 8B9D6EC41F7EF3B7007AB60F /* PBXTextBookmark */ = 8B9D6EC41F7EF3B7007AB60F /* PBXTextBookmark */; + 8B793DB821F60356006E9731 /* PBXTextBookmark */ = 8B793DB821F60356006E9731 /* PBXTextBookmark */; 8B9D7CAA1F7FAEC4007AB60F /* PBXTextBookmark */ = 8B9D7CAA1F7FAEC4007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -62,7 +62,7 @@ }; 2407DEB6089929BA00EB68BF /* PhaseNudge.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 1768}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 1703}}"; sepNavSelRange = "{565, 0}"; sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{12, 47}, {895, 831}}"; @@ -106,7 +106,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B9D6EC41F7EF3B7007AB60F /* PBXTextBookmark */ = { + 8B793DB821F60356006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 2407DEB6089929BA00EB68BF /* PhaseNudge.cpp */; name = "PhaseNudge.cpp: 18"; diff --git a/plugins/MacVST/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.perspectivev3 index 987bfeb..0540e81 100755 --- a/plugins/MacVST/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.perspectivev3 @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D7CAA1F7FAEC4007AB60F</string> + <string>8B793DB821F60356006E9731</string> <key>history</key> <array> - <string>8B9D6EC41F7EF3B7007AB60F</string> + <string>8B9D7CAA1F7FAEC4007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7CAB1F7FAEC4007AB60F</string> + <string>8B793DB921F60356006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7CAC1F7FAEC4007AB60F</string> + <string>8B793DBA21F60356006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7CAD1F7FAEC4007AB60F</string> + <string>8B793DBB21F60356006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528461508.86837101</real> + <real>569770838.654899</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,7 +651,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7CAE1F7FAEC4007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/PhaseNudge/PhaseNudge.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/PhaseNudge/source/PhaseNudge.cpp b/plugins/MacVST/PhaseNudge/source/PhaseNudge.cpp index 8a77175..e9e5c8d 100755 --- a/plugins/MacVST/PhaseNudge/source/PhaseNudge.cpp +++ b/plugins/MacVST/PhaseNudge/source/PhaseNudge.cpp @@ -16,11 +16,8 @@ PhaseNudge::PhaseNudge(audioMasterCallback audioMaster) : B = 1.0; for(int count = 0; count < 1502; count++) {dL[count] = 0.0; dR[count] = 0.0;} one = 1; maxdelay = 9001; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/PhaseNudge/source/PhaseNudge.h b/plugins/MacVST/PhaseNudge/source/PhaseNudge.h index cba0ac8..2926ccb 100755 --- a/plugins/MacVST/PhaseNudge/source/PhaseNudge.h +++ b/plugins/MacVST/PhaseNudge/source/PhaseNudge.h @@ -57,11 +57,8 @@ private: double dR[1503]; int one, maxdelay; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/PhaseNudge/source/PhaseNudgeProc.cpp b/plugins/MacVST/PhaseNudge/source/PhaseNudgeProc.cpp index 494c841..150ecd5 100755 --- a/plugins/MacVST/PhaseNudge/source/PhaseNudgeProc.cpp +++ b/plugins/MacVST/PhaseNudge/source/PhaseNudgeProc.cpp @@ -14,9 +14,6 @@ void PhaseNudge::processReplacing(float **inputs, float **outputs, VstInt32 samp float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; int allpasstemp; double outallpass = 0.618033988749894848204586; //golden ratio! @@ -136,25 +133,14 @@ void PhaseNudge::processReplacing(float **inputs, float **outputs, VstInt32 samp inputSampleR = (drySampleR * dry)+(inputSampleR * wet); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -173,9 +159,6 @@ void PhaseNudge::processDoubleReplacing(double **inputs, double **outputs, VstIn double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; int allpasstemp; double outallpass = 0.618033988749894848204586; //golden ratio! @@ -294,25 +277,16 @@ void PhaseNudge::processDoubleReplacing(double **inputs, double **outputs, VstIn inputSampleR = (drySampleR * dry)+(inputSampleR * wet); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Point/Point.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Point/Point.xcodeproj/christopherjohnson.pbxuser index 1e91a67..5dc4070 100755 --- a/plugins/MacVST/Point/Point.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Point/Point.xcodeproj/christopherjohnson.pbxuser @@ -51,11 +51,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528461517; - PBXWorkspaceStateSaveDate = 528461517; + PBXPerProjectTemplateStateSaveDate = 569770893; + PBXWorkspaceStateSaveDate = 569770893; }; perUserProjectItems = { - 8B9D6EEE1F7EF3E2007AB60F /* PBXTextBookmark */ = 8B9D6EEE1F7EF3E2007AB60F /* PBXTextBookmark */; + 8B793DE421F603B1006E9731 /* PBXTextBookmark */ = 8B793DE421F603B1006E9731 /* PBXTextBookmark */; 8B9D7CCC1F7FAEE4007AB60F /* PBXTextBookmark */ = 8B9D7CCC1F7FAEE4007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -64,17 +64,17 @@ }; 2407DEB6089929BA00EB68BF /* Point.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 1924}}"; - sepNavSelRange = "{4284, 0}"; - sepNavVisRange = "{3036, 2173}"; - sepNavWindowFrame = "{{63, 36}, {895, 831}}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 1963}}"; + sepNavSelRange = "{618, 0}"; + sepNavVisRange = "{0, 1832}"; + sepNavWindowFrame = "{{63, 39}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* Point.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 949}}"; - sepNavSelRange = "{2638, 0}"; - sepNavVisRange = "{268, 2297}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 988}}"; + sepNavSelRange = "{2450, 0}"; + sepNavVisRange = "{389, 2251}"; sepNavWindowFrame = "{{8, 41}, {895, 831}}"; }; }; @@ -88,7 +88,7 @@ }; 24D8286F09A914000093AEF8 /* PointProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 4030}}"; + sepNavIntBoundsRect = "{{0, 0}, {670, 3783}}"; sepNavSelRange = "{5732, 0}"; sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{458, 47}, {895, 831}}"; @@ -108,10 +108,10 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B9D6EEE1F7EF3E2007AB60F /* PBXTextBookmark */ = { + 8B793DE421F603B1006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* PointProc.cpp */; - name = "PointProc.cpp: 187"; + name = "PointProc.cpp: 181"; rLen = 0; rLoc = 5732; rType = 0; diff --git a/plugins/MacVST/Point/Point.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Point/Point.xcodeproj/christopherjohnson.perspectivev3 index f8109c7..384a575 100755 --- a/plugins/MacVST/Point/Point.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Point/Point.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>6</integer> + <integer>5</integer> <integer>4</integer> <integer>0</integer> </array> @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D7CCC1F7FAEE4007AB60F</string> + <string>8B793DE421F603B1006E9731</string> <key>history</key> <array> - <string>8B9D6EEE1F7EF3E2007AB60F</string> + <string>8B9D7CCC1F7FAEE4007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 13}}</string> + <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> <string>304 344 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>13pt</string> + <string>0pt</string> </dict> <dict> <key>Proportion</key> - <string>428pt</string> + <string>441pt</string> <key>Tabs</key> <array> <dict> @@ -393,9 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 401}}</string> - <key>RubberWindowFrame</key> - <string>304 344 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 414}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -449,7 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 363}}</string> + <string>{{10, 27}, {603, 414}}</string> + <key>RubberWindowFrame</key> + <string>304 344 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7CCD1F7FAEE4007AB60F</string> + <string>8B793DE521F603B1006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7CCE1F7FAEE4007AB60F</string> + <string>8B793DE621F603B1006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7CCF1F7FAEE4007AB60F</string> + <string>8B793DE721F603B1006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -654,7 +654,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528461540.135059</real> + <real>569770929.49119902</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -671,7 +671,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7CD01F7FAEE4007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/Point/Point.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Point/source/Point.cpp b/plugins/MacVST/Point/source/Point.cpp index 22885b5..f795470 100755 --- a/plugins/MacVST/Point/source/Point.cpp +++ b/plugins/MacVST/Point/source/Point.cpp @@ -24,10 +24,8 @@ Point::Point(audioMasterCallback audioMaster) : nibBR = 0.0; nobBR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; fpFlip = true; //this is reset: values being initialized only once. Startup values, whatever they are. diff --git a/plugins/MacVST/Point/source/Point.h b/plugins/MacVST/Point/source/Point.h index 12c8001..ff898cb 100755 --- a/plugins/MacVST/Point/source/Point.h +++ b/plugins/MacVST/Point/source/Point.h @@ -54,10 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; + long double fpNShapeL; + long double fpNShapeR; bool fpFlip; //default stuff double nibAL; diff --git a/plugins/MacVST/Point/source/PointProc.cpp b/plugins/MacVST/Point/source/PointProc.cpp index a00263d..a3bbe3c 100755 --- a/plugins/MacVST/Point/source/PointProc.cpp +++ b/plugins/MacVST/Point/source/PointProc.cpp @@ -27,9 +27,6 @@ void Point::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra double nibnobFactor = 0.0; //start with the fallthrough value, why not double absolute; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -128,26 +125,16 @@ void Point::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra } } inputSampleR *= nibnobFactor; - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -179,9 +166,6 @@ void Point::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s double nibnobFactor = 0.0; //start with the fallthrough value, why not double absolute; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -280,26 +264,18 @@ void Point::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s } } inputSampleR *= nibnobFactor; - - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } fpFlip = !fpFlip; - //end noise shaping on 64 bit output + + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Pop/Pop.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Pop/Pop.xcodeproj/christopherjohnson.pbxuser index 899cc09..f19a7b1 100755 --- a/plugins/MacVST/Pop/Pop.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Pop/Pop.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* Pop */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 557537791; - PBXWorkspaceStateSaveDate = 557537791; + PBXPerProjectTemplateStateSaveDate = 569770952; + PBXWorkspaceStateSaveDate = 569770952; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* Pop */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/Pop/Pop.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Pop/Pop.xcodeproj/christopherjohnson.perspectivev3 index 85b0e48..58d4d71 100755 --- a/plugins/MacVST/Pop/Pop.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Pop/Pop.xcodeproj/christopherjohnson.perspectivev3 @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B6DBAC4213B60BA00E44739</string> + <string>8B793DFA21F603D1006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B6DBAC5213B60BA00E44739</string> + <string>8B793DFB21F603D1006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B6DBAC6213B60BA00E44739</string> + <string>8B793DFC21F603D1006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>557539514.49375904</real> + <real>569770961.06224799</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,8 +643,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B6DBAC7213B60BA00E44739</string> - <string>/Users/christopherjohnson/Desktop/Pop/Pop.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/Pop/Pop.xcodeproj</string> </array> <key>WindowString</key> <string>181 239 810 487 0 0 1440 878 </string> diff --git a/plugins/MacVST/Pop/Pop.xcodeproj/project.pbxproj b/plugins/MacVST/Pop/Pop.xcodeproj/project.pbxproj index a8ba4b6..1a2bcdf 100755 --- a/plugins/MacVST/Pop/Pop.xcodeproj/project.pbxproj +++ b/plugins/MacVST/Pop/Pop.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* Pop */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "Pop" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* Pop */, + 8D01CCC60486CAD60068D4B7 /* AudioUnit */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/Pop/source/PopProc.cpp b/plugins/MacVST/Pop/source/PopProc.cpp index ae7dd4d..baa9420 100755 --- a/plugins/MacVST/Pop/source/PopProc.cpp +++ b/plugins/MacVST/Pop/source/PopProc.cpp @@ -268,18 +268,14 @@ void Pop::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame inputSampleR = (drySampleR*(1.0-wet))+(inputSampleR*wet); } - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -289,12 +285,6 @@ void Pop::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Pop::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -558,18 +548,16 @@ void Pop::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam inputSampleR = (drySampleR*(1.0-wet))+(inputSampleR*wet); } - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -579,10 +567,4 @@ void Pop::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacVST/PowerSag/PowerSag.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/PowerSag/PowerSag.xcodeproj/christopherjohnson.pbxuser index 7297e69..f09d1b9 100755 --- a/plugins/MacVST/PowerSag/PowerSag.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/PowerSag/PowerSag.xcodeproj/christopherjohnson.pbxuser @@ -49,11 +49,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528461548; - PBXWorkspaceStateSaveDate = 528461548; + PBXPerProjectTemplateStateSaveDate = 569771002; + PBXWorkspaceStateSaveDate = 569771002; }; perUserProjectItems = { - 8B9D6F151F7EF53E007AB60F /* PBXTextBookmark */ = 8B9D6F151F7EF53E007AB60F /* PBXTextBookmark */; + 8B793E1921F60406006E9731 /* PBXTextBookmark */ = 8B793E1921F60406006E9731 /* PBXTextBookmark */; 8B9D7CF61F7FAF1B007AB60F /* PBXTextBookmark */ = 8B9D7CF61F7FAF1B007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -94,7 +94,7 @@ }; 24D8286F09A914000093AEF8 /* PowerSagProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {691, 3679}}"; + sepNavIntBoundsRect = "{{0, 0}, {677, 3497}}"; sepNavSelRange = "{6117, 1892}"; sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{373, 47}, {895, 831}}"; @@ -114,10 +114,10 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B9D6F151F7EF53E007AB60F /* PBXTextBookmark */ = { + 8B793E1921F60406006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* PowerSagProc.cpp */; - name = "PowerSagProc.cpp: 182"; + name = "PowerSagProc.cpp: 171"; rLen = 1892; rLoc = 6117; rType = 0; diff --git a/plugins/MacVST/PowerSag/PowerSag.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/PowerSag/PowerSag.xcodeproj/christopherjohnson.perspectivev3 index ae6f413..bfea37c 100755 --- a/plugins/MacVST/PowerSag/PowerSag.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/PowerSag/PowerSag.xcodeproj/christopherjohnson.perspectivev3 @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D7CF61F7FAF1B007AB60F</string> + <string>8B793E1921F60406006E9731</string> <key>history</key> <array> - <string>8B9D6F151F7EF53E007AB60F</string> + <string>8B9D7CF61F7FAF1B007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 13}}</string> + <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> <string>260 312 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>13pt</string> + <string>0pt</string> </dict> <dict> <key>Proportion</key> - <string>428pt</string> + <string>441pt</string> <key>Tabs</key> <array> <dict> @@ -393,7 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 401}}</string> + <string>{{10, 27}, {603, 414}}</string> <key>RubberWindowFrame</key> <string>260 312 810 487 0 0 1440 878 </string> </dict> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7CF71F7FAF1B007AB60F</string> + <string>8B793E1A21F60406006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7CF81F7FAF1B007AB60F</string> + <string>8B793E1B21F60406006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7CF91F7FAF1B007AB60F</string> + <string>8B793E1C21F60406006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528461595.073053</real> + <real>569771014.65125096</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,7 +651,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7CFA1F7FAF1B007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/PowerSag/PowerSag.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/PowerSag/source/PowerSag.cpp b/plugins/MacVST/PowerSag/source/PowerSag.cpp index 0218186..d1d0745 100755 --- a/plugins/MacVST/PowerSag/source/PowerSag.cpp +++ b/plugins/MacVST/PowerSag/source/PowerSag.cpp @@ -18,11 +18,8 @@ PowerSag::PowerSag(audioMasterCallback audioMaster) : gcount = 0; A = 0.0; B = 0.3; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/PowerSag/source/PowerSag.h b/plugins/MacVST/PowerSag/source/PowerSag.h index 930f05b..38839b6 100755 --- a/plugins/MacVST/PowerSag/source/PowerSag.h +++ b/plugins/MacVST/PowerSag/source/PowerSag.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double dL[9000]; double dR[9000]; diff --git a/plugins/MacVST/PowerSag/source/PowerSagProc.cpp b/plugins/MacVST/PowerSag/source/PowerSagProc.cpp index d1afa31..de43be6 100755 --- a/plugins/MacVST/PowerSag/source/PowerSagProc.cpp +++ b/plugins/MacVST/PowerSag/source/PowerSagProc.cpp @@ -22,9 +22,6 @@ void PowerSag::processReplacing(float **inputs, float **outputs, VstInt32 sample double out; double bridgerectifier; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -123,25 +120,14 @@ void PowerSag::processReplacing(float **inputs, float **outputs, VstInt32 sample gcount--; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -168,9 +154,6 @@ void PowerSag::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double out; double bridgerectifier; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -269,25 +252,16 @@ void PowerSag::processDoubleReplacing(double **inputs, double **outputs, VstInt3 gcount--; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Pressure4/Pressure4.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Pressure4/Pressure4.xcodeproj/christopherjohnson.pbxuser index 3c1525b..37f6135 100755 --- a/plugins/MacVST/Pressure4/Pressure4.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Pressure4/Pressure4.xcodeproj/christopherjohnson.pbxuser @@ -49,13 +49,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528461605; - PBXWorkspaceStateSaveDate = 528461605; + PBXPerProjectTemplateStateSaveDate = 569771037; + PBXWorkspaceStateSaveDate = 569771037; }; perUserProjectItems = { 8B2E04191D8381D1001B9E01 /* PBXTextBookmark */ = 8B2E04191D8381D1001B9E01 /* PBXTextBookmark */; - 8B9D6F2A1F7EF568007AB60F /* PBXTextBookmark */ = 8B9D6F2A1F7EF568007AB60F /* PBXTextBookmark */; - 8B9D7D161F7FAF5A007AB60F /* PBXTextBookmark */ = 8B9D7D161F7FAF5A007AB60F /* PBXTextBookmark */; + 8B793E3721F60423006E9731 /* PBXTextBookmark */ = 8B793E3721F60423006E9731 /* PBXTextBookmark */; + 8B793E3C21F60454006E9731 /* PBXTextBookmark */ = 8B793E3C21F60454006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -63,15 +63,15 @@ }; 2407DEB6089929BA00EB68BF /* Pressure4.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 2184}}"; - sepNavSelRange = "{4340, 0}"; - sepNavVisRange = "{0, 1911}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 2158}}"; + sepNavSelRange = "{527, 0}"; + sepNavVisRange = "{0, 1930}"; sepNavWindowFrame = "{{535, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* Pressure4.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 1170}}"; + sepNavIntBoundsRect = "{{0, 0}, {600, 1105}}"; sepNavSelRange = "{453, 0}"; sepNavVisRange = "{419, 41}"; sepNavWindowFrame = "{{530, 47}, {895, 831}}"; @@ -112,22 +112,22 @@ fRef = 2407DEB6089929BA00EB68BF /* Pressure4.cpp */; name = "Pressure4.cpp: 52"; rLen = 0; - rLoc = 1865; + rLoc = 1825; rType = 0; vrLen = 312; vrLoc = 44; }; - 8B9D6F2A1F7EF568007AB60F /* PBXTextBookmark */ = { + 8B793E3721F60423006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 245463B80991757100464AD3 /* Pressure4.h */; name = "Pressure4.h: 23"; rLen = 0; rLoc = 453; rType = 0; - vrLen = 69; - vrLoc = 391; + vrLen = 41; + vrLoc = 419; }; - 8B9D7D161F7FAF5A007AB60F /* PBXTextBookmark */ = { + 8B793E3C21F60454006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 245463B80991757100464AD3 /* Pressure4.h */; name = "Pressure4.h: 23"; diff --git a/plugins/MacVST/Pressure4/Pressure4.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Pressure4/Pressure4.xcodeproj/christopherjohnson.perspectivev3 index 3f05d07..a83121a 100755 --- a/plugins/MacVST/Pressure4/Pressure4.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Pressure4/Pressure4.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>6</integer> + <integer>5</integer> <integer>4</integer> <integer>0</integer> </array> @@ -351,11 +351,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D7D161F7FAF5A007AB60F</string> + <string>8B793E3C21F60454006E9731</string> <key>history</key> <array> <string>8B2E04191D8381D1001B9E01</string> - <string>8B9D6F2A1F7EF568007AB60F</string> + <string>8B793E3721F60423006E9731</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 69}}</string> + <string>{{0, 0}, {603, 51}}</string> <key>RubberWindowFrame</key> <string>630 371 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>69pt</string> + <string>51pt</string> </dict> <dict> <key>Proportion</key> - <string>372pt</string> + <string>390pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 345}}</string> - <key>RubberWindowFrame</key> - <string>630 371 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 363}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -450,7 +448,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {603, 363}}</string> + <key>RubberWindowFrame</key> + <string>630 371 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -478,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7D171F7FAF5A007AB60F</string> + <string>8B793E3D21F60454006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7D181F7FAF5A007AB60F</string> + <string>8B793E3E21F60454006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7D191F7FAF5A007AB60F</string> + <string>8B793E3F21F60454006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528461658.22323</real> + <real>569771092.74144006</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,7 +652,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7D1A1F7FAF5A007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/Pressure4/Pressure4.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Pressure4/source/Pressure4.cpp b/plugins/MacVST/Pressure4/source/Pressure4.cpp index 8ae2adc..10ed5fa 100755 --- a/plugins/MacVST/Pressure4/source/Pressure4.cpp +++ b/plugins/MacVST/Pressure4/source/Pressure4.cpp @@ -16,10 +16,8 @@ Pressure4::Pressure4(audioMasterCallback audioMaster) : B = 0.2; C = 1.0; D = 1.0; - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; muSpeedA = 10000; muSpeedB = 10000; muCoefficientA = 1; diff --git a/plugins/MacVST/Pressure4/source/Pressure4.h b/plugins/MacVST/Pressure4/source/Pressure4.h index 29d20eb..6cf3448 100755 --- a/plugins/MacVST/Pressure4/source/Pressure4.h +++ b/plugins/MacVST/Pressure4/source/Pressure4.h @@ -62,10 +62,8 @@ private: double muSpeedB; double muCoefficientA; double muCoefficientB; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; + long double fpNShapeL; + long double fpNShapeR; bool flip; float A; diff --git a/plugins/MacVST/Pressure4/source/Pressure4Proc.cpp b/plugins/MacVST/Pressure4/source/Pressure4Proc.cpp index 02b8a78..7e285df 100755 --- a/plugins/MacVST/Pressure4/source/Pressure4Proc.cpp +++ b/plugins/MacVST/Pressure4/source/Pressure4Proc.cpp @@ -43,9 +43,6 @@ void Pressure4::processReplacing(float **inputs, float **outputs, VstInt32 sampl unmewiness = 1.0-mewiness; } // µ µ µ µ µ µ µ µ µ µ µ µ is the kitten song o/~ - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -195,27 +192,14 @@ void Pressure4::processReplacing(float **inputs, float **outputs, VstInt32 sampl else {inputSampleR = -bridgerectifier;} //second stage of overdrive to prevent overs and allow bloody loud extremeness - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *outputL = inputSampleL; *outputR = inputSampleR; @@ -263,9 +247,6 @@ void Pressure4::processDoubleReplacing(double **inputs, double **outputs, VstInt unmewiness = 1.0-mewiness; } // µ µ µ µ µ µ µ µ µ µ µ µ is the kitten song o/~ - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -416,27 +397,16 @@ void Pressure4::processDoubleReplacing(double **inputs, double **outputs, VstInt else {inputSampleR = -bridgerectifier;} //second stage of overdrive to prevent overs and allow bloody loud extremeness - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *outputL = inputSampleL; *outputR = inputSampleR; diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.pbxuser index a4b799a..05bbaee 100644..100755 --- a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.pbxuser @@ -49,11 +49,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 535163595; - PBXWorkspaceStateSaveDate = 535163595; + PBXPerProjectTemplateStateSaveDate = 569771116; + PBXWorkspaceStateSaveDate = 569771116; }; perUserProjectItems = { - 8BBE455F1FE5F4550022E6F7 /* XCBuildMessageTextBookmark */ = 8BBE455F1FE5F4550022E6F7 /* XCBuildMessageTextBookmark */; + 8B793E5C21F60475006E9731 /* PBXTextBookmark */ = 8B793E5C21F60475006E9731 /* PBXTextBookmark */; 8BBE45601FE5F4550022E6F7 /* PBXTextBookmark */ = 8BBE45601FE5F4550022E6F7 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -62,9 +62,9 @@ }; 2407DEB6089929BA00EB68BF /* PurestConsoleBuss.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {733, 1404}}"; + sepNavIntBoundsRect = "{{0, 0}, {663, 1391}}"; sepNavSelRange = "{2244, 0}"; - sepNavVisRange = "{2157, 260}"; + sepNavVisRange = "{2188, 173}"; sepNavWindowFrame = "{{12, 47}, {895, 831}}"; }; }; @@ -106,14 +106,15 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8BBE455F1FE5F4550022E6F7 /* XCBuildMessageTextBookmark */ = { + 8B793E5C21F60475006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - comments = "Unused variable 'chunkData'"; fRef = 2407DEB6089929BA00EB68BF /* PurestConsoleBuss.cpp */; - fallbackIsa = XCBuildMessageTextBookmark; - rLen = 1; - rLoc = 53; - rType = 1; + name = "PurestConsoleBuss.cpp: 54"; + rLen = 0; + rLoc = 2244; + rType = 0; + vrLen = 173; + vrLoc = 2188; }; 8BBE45601FE5F4550022E6F7 /* PBXTextBookmark */ = { isa = PBXTextBookmark; diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.perspectivev3 index 735d7a1..a64a099 100644..100755 --- a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.perspectivev3 @@ -256,6 +256,8 @@ <key>Layout</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -349,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BBE45601FE5F4550022E6F7</string> + <string>8B793E5C21F60475006E9731</string> <key>history</key> <array> - <string>8BBE455F1FE5F4550022E6F7</string> + <string>8BBE45601FE5F4550022E6F7</string> </array> </dict> <key>SplitCount</key> @@ -366,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 132}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> <string>10 385 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -391,7 +393,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 297}}</string> + <key>RubberWindowFrame</key> + <string>10 385 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -446,8 +450,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 282}}</string> - <key>RubberWindowFrame</key> - <string>10 385 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -475,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBE45611FE5F4550022E6F7</string> + <string>8B793E5D21F60475006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBE45621FE5F4550022E6F7</string> + <string>8B793E5E21F60475006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BBE45631FE5F4550022E6F7</string> + <string>8B793E5F21F60475006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -632,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>535163989.59433597</real> + <real>569771125.16991305</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -649,8 +651,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BBE45641FE5F4550022E6F7</string> - <string>/Users/christopherjohnson/Desktop/PurestConsoleBuss/PurestConsoleBuss.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj</string> </array> <key>WindowString</key> <string>10 385 810 487 0 0 1440 878 </string> diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/contents.xcworkspacedata index a80c038..a80c038 100644..100755 --- a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate Binary files differindex 5c38f94..5c38f94 100644..100755 --- a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate +++ b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate Binary files differindex 314de0f..314de0f 100644..100755 --- a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate +++ b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/spiadmin.mode1v3 index c572326..c572326 100644..100755 --- a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/spiadmin.mode1v3 +++ b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/spiadmin.mode1v3 diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/spiadmin.pbxuser index df94780..df94780 100644..100755 --- a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/spiadmin.pbxuser +++ b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/spiadmin.pbxuser diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme index 8ee693f..8ee693f 100644..100755 --- a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme +++ b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist index 5bccbcb..5bccbcb 100644..100755 --- a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist index a7bdd62..a7bdd62 100644..100755 --- a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme index 0df2de4..0df2de4 100644..100755 --- a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme +++ b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme diff --git a/plugins/MacVST/PurestConsoleBuss/source/PurestConsoleBuss.cpp b/plugins/MacVST/PurestConsoleBuss/source/PurestConsoleBuss.cpp index ed0b223..2d8e619 100755 --- a/plugins/MacVST/PurestConsoleBuss/source/PurestConsoleBuss.cpp +++ b/plugins/MacVST/PurestConsoleBuss/source/PurestConsoleBuss.cpp @@ -12,11 +12,8 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new P PurestConsoleBuss::PurestConsoleBuss(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, kNumPrograms, kNumParameters) { - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/PurestConsoleBuss/source/PurestConsoleBuss.h b/plugins/MacVST/PurestConsoleBuss/source/PurestConsoleBuss.h index 0d237ec..51495fc 100755 --- a/plugins/MacVST/PurestConsoleBuss/source/PurestConsoleBuss.h +++ b/plugins/MacVST/PurestConsoleBuss/source/PurestConsoleBuss.h @@ -51,11 +51,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff }; diff --git a/plugins/MacVST/PurestConsoleBuss/source/PurestConsoleBussProc.cpp b/plugins/MacVST/PurestConsoleBuss/source/PurestConsoleBussProc.cpp index c06258a..6211eeb 100755 --- a/plugins/MacVST/PurestConsoleBuss/source/PurestConsoleBussProc.cpp +++ b/plugins/MacVST/PurestConsoleBuss/source/PurestConsoleBussProc.cpp @@ -14,9 +14,6 @@ void PurestConsoleBuss::processReplacing(float **inputs, float **outputs, VstInt float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -74,25 +71,14 @@ void PurestConsoleBuss::processReplacing(float **inputs, float **outputs, VstInt inputSampleR = asin(inputSampleR); //amplitude aspect - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -111,9 +97,6 @@ void PurestConsoleBuss::processDoubleReplacing(double **inputs, double **outputs double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -171,25 +154,16 @@ void PurestConsoleBuss::processDoubleReplacing(double **inputs, double **outputs inputSampleR = asin(inputSampleR); //amplitude aspect - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.pbxuser index cd6b4c4..9f0edd0 100644..100755 --- a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.pbxuser @@ -49,14 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 535163135; - PBXWorkspaceStateSaveDate = 535163135; + PBXPerProjectTemplateStateSaveDate = 569771151; + PBXWorkspaceStateSaveDate = 569771151; }; perUserProjectItems = { - 8BBE45161FE5F1980022E6F7 /* PBXBookmark */ = 8BBE45161FE5F1980022E6F7 /* PBXBookmark */; - 8BBE45251FE5F2760022E6F7 /* XCBuildMessageTextBookmark */ = 8BBE45251FE5F2760022E6F7 /* XCBuildMessageTextBookmark */; - 8BBE45261FE5F2760022E6F7 /* PBXTextBookmark */ = 8BBE45261FE5F2760022E6F7 /* PBXTextBookmark */; - 8BBE45291FE5F2760022E6F7 /* PBXTextBookmark */ = 8BBE45291FE5F2760022E6F7 /* PBXTextBookmark */; + 8B793E7C21F604AB006E9731 /* XCBuildMessageTextBookmark */ = 8B793E7C21F604AB006E9731 /* XCBuildMessageTextBookmark */; + 8B793E7D21F604AB006E9731 /* PBXTextBookmark */ = 8B793E7D21F604AB006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -64,9 +62,9 @@ }; 2407DEB6089929BA00EB68BF /* PurestConsoleChannel.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {663, 1508}}"; - sepNavSelRange = "{2286, 0}"; - sepNavVisRange = "{2321, 276}"; + sepNavIntBoundsRect = "{{0, 0}, {663, 1417}}"; + sepNavSelRange = "{2230, 0}"; + sepNavVisRange = "{2139, 260}"; sepNavWindowFrame = "{{12, 47}, {895, 831}}"; }; }; @@ -88,9 +86,9 @@ }; 24D8286F09A914000093AEF8 /* PurestConsoleChannelProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 2522}}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 2132}}"; sepNavSelRange = "{5889, 0}"; - sepNavVisRange = "{94, 2079}"; + sepNavVisRange = "{899, 2244}"; sepNavWindowFrame = "{{8, 47}, {895, 831}}"; }; }; @@ -108,38 +106,24 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8BBE45161FE5F1980022E6F7 /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 24D8286F09A914000093AEF8 /* PurestConsoleChannelProc.cpp */; - }; - 8BBE45251FE5F2760022E6F7 /* XCBuildMessageTextBookmark */ = { + 8B793E7C21F604AB006E9731 /* XCBuildMessageTextBookmark */ = { isa = PBXTextBookmark; comments = "Unused variable 'chunkData'"; fRef = 2407DEB6089929BA00EB68BF /* PurestConsoleChannel.cpp */; fallbackIsa = XCBuildMessageTextBookmark; rLen = 1; - rLoc = 53; + rLoc = 50; rType = 1; }; - 8BBE45261FE5F2760022E6F7 /* PBXTextBookmark */ = { + 8B793E7D21F604AB006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 2407DEB6089929BA00EB68BF /* PurestConsoleChannel.cpp */; - name = "PurestConsoleChannel.cpp: 54"; - rLen = 0; - rLoc = 2286; - rType = 0; - vrLen = 276; - vrLoc = 2321; - }; - 8BBE45291FE5F2760022E6F7 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 24D8286F09A914000093AEF8 /* PurestConsoleChannelProc.cpp */; - name = "PurestConsoleChannelProc.cpp: 158"; + name = "PurestConsoleChannel.cpp: 51"; rLen = 0; - rLoc = 5889; + rLoc = 2230; rType = 0; - vrLen = 2079; - vrLoc = 94; + vrLen = 260; + vrLoc = 2139; }; 8D01CCC60486CAD60068D4B7 /* PurestConsoleChannel */ = { activeExec = 0; diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.perspectivev3 index 91b4416..948cc4a 100644..100755 --- a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.perspectivev3 @@ -222,48 +222,7 @@ </dict> </array> <key>OpenEditors</key> - <array> - <dict> - <key>Content</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>8BBE45271FE5F2760022E6F7</string> - <key>PBXProjectModuleLabel</key> - <string>PurestConsoleChannelProc.cpp</string> - <key>PBXSplitModuleInNavigatorKey</key> - <dict> - <key>Split0</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>8BBE45281FE5F2760022E6F7</string> - <key>PBXProjectModuleLabel</key> - <string>PurestConsoleChannelProc.cpp</string> - <key>_historyCapacity</key> - <integer>0</integer> - <key>bookmark</key> - <string>8BBE45291FE5F2760022E6F7</string> - <key>history</key> - <array> - <string>8BBE45161FE5F1980022E6F7</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, 734}}</string> - <key>PBXModuleWindowStatusBarHidden2</key> - <false/> - <key>RubberWindowFrame</key> - <string>8 103 895 775 0 0 1440 878 </string> - </dict> - </dict> - </array> + <array/> <key>PerspectiveWidths</key> <array> <integer>810</integer> @@ -362,7 +321,7 @@ <real>236</real> </array> <key>RubberWindowFrame</key> - <string>13 375 810 487 0 0 1440 878 </string> + <string>406 301 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -390,10 +349,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BBE45261FE5F2760022E6F7</string> + <string>8B793E7D21F604AB006E9731</string> <key>history</key> <array> - <string>8BBE45251FE5F2760022E6F7</string> + <string>8B793E7C21F604AB006E9731</string> </array> </dict> <key>SplitCount</key> @@ -407,18 +366,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {552, 132}}</string> + <string>{{0, 0}, {552, 117}}</string> <key>RubberWindowFrame</key> - <string>13 375 810 487 0 0 1440 878 </string> + <string>406 301 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -432,7 +391,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {552, 414}}</string> + <string>{{10, 27}, {552, 297}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -486,9 +445,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {552, 282}}</string> + <string>{{10, 27}, {552, 297}}</string> <key>RubberWindowFrame</key> - <string>13 375 810 487 0 0 1440 878 </string> + <string>406 301 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -516,11 +475,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBE45051FE5F1020022E6F7</string> + <string>8B793E7E21F604AB006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBE45061FE5F1020022E6F7</string> + <string>8B793E7F21F604AB006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BBE45071FE5F1020022E6F7</string> + <string>8B793E8021F604AB006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -673,7 +632,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>535163510.630979</real> + <real>569771179.00788903</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -690,12 +649,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BBE452A1FE5F2760022E6F7</string> <string>8BBE45271FE5F2760022E6F7</string> - <string>/Users/christopherjohnson/Desktop/PurestConsoleChannel/PurestConsoleChannel.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj</string> </array> <key>WindowString</key> - <string>13 375 810 487 0 0 1440 878 </string> + <string>406 301 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/contents.xcworkspacedata index a80c038..a80c038 100644..100755 --- a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate Binary files differindex 5c38f94..5c38f94 100644..100755 --- a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate +++ b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate Binary files differindex 314de0f..314de0f 100644..100755 --- a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate +++ b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/spiadmin.mode1v3 index c572326..c572326 100644..100755 --- a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/spiadmin.mode1v3 +++ b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/spiadmin.mode1v3 diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/spiadmin.pbxuser index df94780..df94780 100644..100755 --- a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/spiadmin.pbxuser +++ b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/spiadmin.pbxuser diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme index 8ee693f..8ee693f 100644..100755 --- a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme +++ b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist index 5bccbcb..5bccbcb 100644..100755 --- a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist index a7bdd62..a7bdd62 100644..100755 --- a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme index 0df2de4..0df2de4 100644..100755 --- a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme +++ b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme diff --git a/plugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannel.cpp b/plugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannel.cpp index b9f3e04..35649a6 100755 --- a/plugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannel.cpp +++ b/plugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannel.cpp @@ -12,11 +12,8 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new P PurestConsoleChannel::PurestConsoleChannel(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, kNumPrograms, kNumParameters) { - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannel.h b/plugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannel.h index c0a1648..51e728f 100755 --- a/plugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannel.h +++ b/plugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannel.h @@ -51,11 +51,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff }; diff --git a/plugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannelProc.cpp b/plugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannelProc.cpp index 630cba7..2fc513a 100755 --- a/plugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannelProc.cpp +++ b/plugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannelProc.cpp @@ -14,9 +14,6 @@ void PurestConsoleChannel::processReplacing(float **inputs, float **outputs, Vst float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -68,25 +65,14 @@ void PurestConsoleChannel::processReplacing(float **inputs, float **outputs, Vst inputSampleR = sin(inputSampleR); //amplitude aspect - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -105,9 +91,6 @@ void PurestConsoleChannel::processDoubleReplacing(double **inputs, double **outp double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -159,25 +142,16 @@ void PurestConsoleChannel::processDoubleReplacing(double **inputs, double **outp inputSampleR = sin(inputSampleR); //amplitude aspect - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.pbxuser index 12c4f1e..d8eeda2 100644..100755 --- a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* PurestDrive */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 538683677; - PBXWorkspaceStateSaveDate = 538683677; + PBXPerProjectTemplateStateSaveDate = 569771199; + PBXWorkspaceStateSaveDate = 569771199; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* PurestDrive */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.perspectivev3 index 41e246d..461e4df 100644..100755 --- a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.perspectivev3 @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B4E5444201BA92300B5DC2A</string> + <string>8B793E9D21F604DA006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B4E5445201BA92300B5DC2A</string> + <string>8B793E9E21F604DA006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B4E5446201BA92300B5DC2A</string> + <string>8B793E9F21F604DA006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>538684550.59728301</real> + <real>569771226.28827202</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,7 +643,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>/Users/christopherjohnson/Desktop/PurestDrive/PurestDrive.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/PurestDrive/PurestDrive.xcodeproj</string> </array> <key>WindowString</key> <string>9 381 810 487 0 0 1440 878 </string> diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/contents.xcworkspacedata index a80c038..a80c038 100644..100755 --- a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate Binary files differindex 5c38f94..5c38f94 100644..100755 --- a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate +++ b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate Binary files differindex 314de0f..314de0f 100644..100755 --- a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate +++ b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/spiadmin.mode1v3 index c572326..c572326 100644..100755 --- a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/spiadmin.mode1v3 +++ b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/spiadmin.mode1v3 diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/spiadmin.pbxuser index df94780..df94780 100644..100755 --- a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/spiadmin.pbxuser +++ b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/spiadmin.pbxuser diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme index 8ee693f..8ee693f 100644..100755 --- a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme +++ b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist index 5bccbcb..5bccbcb 100644..100755 --- a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist index a7bdd62..a7bdd62 100644..100755 --- a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme index 0df2de4..0df2de4 100644..100755 --- a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme +++ b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme diff --git a/plugins/MacVST/PurestDrive/source/PurestDrive.cpp b/plugins/MacVST/PurestDrive/source/PurestDrive.cpp index e2451fe..a1d9264 100755 --- a/plugins/MacVST/PurestDrive/source/PurestDrive.cpp +++ b/plugins/MacVST/PurestDrive/source/PurestDrive.cpp @@ -17,11 +17,8 @@ PurestDrive::PurestDrive(audioMasterCallback audioMaster) : previousSampleL = 0.0; previousSampleR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/PurestDrive/source/PurestDrive.h b/plugins/MacVST/PurestDrive/source/PurestDrive.h index 1f5b349..abcd65b 100755 --- a/plugins/MacVST/PurestDrive/source/PurestDrive.h +++ b/plugins/MacVST/PurestDrive/source/PurestDrive.h @@ -52,11 +52,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double previousSampleL; diff --git a/plugins/MacVST/PurestDrive/source/PurestDriveProc.cpp b/plugins/MacVST/PurestDrive/source/PurestDriveProc.cpp index e453883..f5cc804 100755 --- a/plugins/MacVST/PurestDrive/source/PurestDriveProc.cpp +++ b/plugins/MacVST/PurestDrive/source/PurestDriveProc.cpp @@ -14,9 +14,6 @@ void PurestDrive::processReplacing(float **inputs, float **outputs, VstInt32 sam float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double intensity = A; double drySampleL; @@ -90,25 +87,14 @@ void PurestDrive::processReplacing(float **inputs, float **outputs, VstInt32 sam previousSampleR = sin(drySampleR); //apply the sine while storing previous sample - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -127,9 +113,6 @@ void PurestDrive::processDoubleReplacing(double **inputs, double **outputs, VstI double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double intensity = A; double drySampleL; @@ -204,25 +187,16 @@ void PurestDrive::processDoubleReplacing(double **inputs, double **outputs, VstI previousSampleR = sin(drySampleR); //apply the sine while storing previous sample - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.pbxuser index fcc45c3..87fae12 100755 --- a/plugins/MacVST/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* PurestEcho */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528461666; - PBXWorkspaceStateSaveDate = 528461666; + PBXPerProjectTemplateStateSaveDate = 569771267; + PBXWorkspaceStateSaveDate = 569771267; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { + 8D01CCC60486CAD60068D4B7 /* PurestEcho */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.perspectivev3 index f80d304..a80a475 100755 --- a/plugins/MacVST/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.perspectivev3 @@ -360,18 +360,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 13}}</string> + <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> <string>612 265 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>13pt</string> + <string>0pt</string> </dict> <dict> <key>Proportion</key> - <string>428pt</string> + <string>441pt</string> <key>Tabs</key> <array> <dict> @@ -385,7 +385,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 401}}</string> + <string>{{10, 27}, {603, 414}}</string> <key>RubberWindowFrame</key> <string>612 265 810 487 0 0 1440 878 </string> </dict> @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7D2C1F7FAF74007AB60F</string> + <string>8B793EC621F6054B006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7D2D1F7FAF74007AB60F</string> + <string>8B793EC721F6054B006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7D2E1F7FAF74007AB60F</string> + <string>8B793EC821F6054B006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528461684.32955098</real> + <real>569771339.31522799</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,7 +643,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7D2F1F7FAF74007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/PurestEcho/PurestEcho.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/PurestEcho/PurestEcho.xcodeproj/project.pbxproj b/plugins/MacVST/PurestEcho/PurestEcho.xcodeproj/project.pbxproj index 02231e4..43171c9 100755 --- a/plugins/MacVST/PurestEcho/PurestEcho.xcodeproj/project.pbxproj +++ b/plugins/MacVST/PurestEcho/PurestEcho.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { + 8D01CCC60486CAD60068D4B7 /* PurestEcho */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "PurestEcho" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* AudioUnit */, + 8D01CCC60486CAD60068D4B7 /* PurestEcho */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/PurestEcho/source/PurestEcho.cpp b/plugins/MacVST/PurestEcho/source/PurestEcho.cpp index 6b8c302..6bcaa3f 100755 --- a/plugins/MacVST/PurestEcho/source/PurestEcho.cpp +++ b/plugins/MacVST/PurestEcho/source/PurestEcho.cpp @@ -19,11 +19,8 @@ PurestEcho::PurestEcho(audioMasterCallback audioMaster) : E = 0.0; for(int count = 0; count < totalsamples-1; count++) {dL[count] = 0;dR[count] = 0;} gcount = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/PurestEcho/source/PurestEcho.h b/plugins/MacVST/PurestEcho/source/PurestEcho.h index a298dd2..870e158 100755 --- a/plugins/MacVST/PurestEcho/source/PurestEcho.h +++ b/plugins/MacVST/PurestEcho/source/PurestEcho.h @@ -62,11 +62,8 @@ private: int gcount; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/PurestEcho/source/PurestEchoProc.cpp b/plugins/MacVST/PurestEcho/source/PurestEchoProc.cpp index 77e4b2f..e8e141c 100755 --- a/plugins/MacVST/PurestEcho/source/PurestEchoProc.cpp +++ b/plugins/MacVST/PurestEcho/source/PurestEchoProc.cpp @@ -76,9 +76,6 @@ void PurestEcho::processReplacing(float **inputs, float **outputs, VstInt32 samp double delaysBufferL; double delaysBufferR; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -177,25 +174,14 @@ void PurestEcho::processReplacing(float **inputs, float **outputs, VstInt32 samp gcount--; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -276,9 +262,6 @@ void PurestEcho::processDoubleReplacing(double **inputs, double **outputs, VstIn double delaysBufferL; double delaysBufferR; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -377,25 +360,16 @@ void PurestEcho::processDoubleReplacing(double **inputs, double **outputs, VstIn gcount--; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/christopherjohnson.pbxuser index 11a21ab..60f46c3 100644..100755 --- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* PurestGain */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 530661522; - PBXWorkspaceStateSaveDate = 530661522; + PBXPerProjectTemplateStateSaveDate = 569771364; + PBXWorkspaceStateSaveDate = 569771364; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -82,9 +82,9 @@ }; 24D8286F09A914000093AEF8 /* PurestGainProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 4095}}"; - sepNavSelRange = "{8041, 1892}"; - sepNavVisRange = "{2228, 2390}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 3484}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{7696, 2006}"; sepNavWindowFrame = "{{488, 47}, {895, 831}}"; }; }; @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* PurestGain */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/christopherjohnson.perspectivev3 index f4f1de3..3986363 100644..100755 --- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>5</integer> + <integer>6</integer> <integer>4</integer> <integer>0</integer> </array> @@ -323,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>711 333 810 487 0 0 1440 878 </string> + <string>630 333 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -362,7 +362,7 @@ <key>Frame</key> <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> - <string>711 333 810 487 0 0 1440 878 </string> + <string>630 333 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -387,7 +387,7 @@ <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> <key>RubberWindowFrame</key> - <string>711 333 810 487 0 0 1440 878 </string> + <string>630 333 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BA972EE1FA145A50032B992</string> + <string>8B793EDC21F6057A006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BA972EF1FA145A50032B992</string> + <string>8B793EDD21F6057A006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BA972F01FA145A50032B992</string> + <string>8B793EDE21F6057A006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>530662821.72906101</real> + <real>569771386.05235398</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,11 +643,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BA972F11FA145A50032B992</string> <string>/Users/christopherjohnson/Desktop/MacVST/PurestGain/PurestGain.xcodeproj</string> </array> <key>WindowString</key> - <string>711 333 810 487 0 0 1440 878 </string> + <string>630 333 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.pbxproj b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.pbxproj index b89fc20..511f09f 100755 --- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.pbxproj +++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* PurestGain */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "PurestGain" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* PurestGain */, + 8D01CCC60486CAD60068D4B7 /* AudioUnit */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/contents.xcworkspacedata index a80c038..a80c038 100644..100755 --- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate Binary files differindex 5c38f94..5c38f94 100644..100755 --- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate +++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate Binary files differindex 314de0f..314de0f 100644..100755 --- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate +++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/spiadmin.mode1v3 index c572326..c572326 100644..100755 --- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/spiadmin.mode1v3 +++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/spiadmin.mode1v3 diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/spiadmin.pbxuser index df94780..df94780 100644..100755 --- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/spiadmin.pbxuser +++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/spiadmin.pbxuser diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme index 8ee693f..8ee693f 100644..100755 --- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme +++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist index 5bccbcb..5bccbcb 100644..100755 --- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist index a7bdd62..a7bdd62 100644..100755 --- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme index 0df2de4..0df2de4 100644..100755 --- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme +++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme diff --git a/plugins/MacVST/PurestGain/source/PurestGain.cpp b/plugins/MacVST/PurestGain/source/PurestGain.cpp index 3091a12..b1b77fe 100755 --- a/plugins/MacVST/PurestGain/source/PurestGain.cpp +++ b/plugins/MacVST/PurestGain/source/PurestGain.cpp @@ -18,11 +18,8 @@ PurestGain::PurestGain(audioMasterCallback audioMaster) : settingchase = -90.0; gainBchase = -90.0; chasespeed = 350.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/PurestGain/source/PurestGain.h b/plugins/MacVST/PurestGain/source/PurestGain.h index 7869425..9e2baea 100755 --- a/plugins/MacVST/PurestGain/source/PurestGain.h +++ b/plugins/MacVST/PurestGain/source/PurestGain.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double gainchase; double settingchase; diff --git a/plugins/MacVST/PurestGain/source/PurestGainProc.cpp b/plugins/MacVST/PurestGain/source/PurestGainProc.cpp index 38f2849..4aa6d96 100755 --- a/plugins/MacVST/PurestGain/source/PurestGainProc.cpp +++ b/plugins/MacVST/PurestGain/source/PurestGainProc.cpp @@ -43,9 +43,6 @@ void PurestGain::processReplacing(float **inputs, float **outputs, VstInt32 samp //done with slow fade controller double outputgain; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -118,45 +115,19 @@ void PurestGain::processReplacing(float **inputs, float **outputs, VstInt32 samp if (1.0 == outputgain) { - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output *out1 = *in1; *out2 = *in2; } else { inputSampleL *= outputgain; inputSampleR *= outputgain; - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; } @@ -204,9 +175,6 @@ void PurestGain::processDoubleReplacing(double **inputs, double **outputs, VstIn //done with slow fade controller double outputgain; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -273,45 +241,21 @@ void PurestGain::processDoubleReplacing(double **inputs, double **outputs, VstIn if (1.0 == outputgain) { - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output *out1 = *in1; *out2 = *in2; } else { inputSampleL *= outputgain; inputSampleR *= outputgain; - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; } diff --git a/plugins/MacVST/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.pbxuser index d3ee7f1..f6f6607 100755 --- a/plugins/MacVST/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 532825574; - PBXWorkspaceStateSaveDate = 532825574; + PBXPerProjectTemplateStateSaveDate = 569771412; + PBXWorkspaceStateSaveDate = 569771412; }; perUserProjectItems = { - 8B2C4C211FC246470023028A /* PBXTextBookmark */ = 8B2C4C211FC246470023028A /* PBXTextBookmark */; 8B2C4C221FC246470023028A /* PBXTextBookmark */ = 8B2C4C221FC246470023028A /* PBXTextBookmark */; + 8B793EFC21F605B1006E9731 /* PBXTextBookmark */ = 8B793EFC21F605B1006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -86,9 +86,9 @@ }; 24D8286F09A914000093AEF8 /* PurestWarmProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {684, 4498}}"; + sepNavIntBoundsRect = "{{0, 0}, {677, 3367}}"; sepNavSelRange = "{8348, 0}"; - sepNavVisRange = "{1656, 322}"; + sepNavVisRange = "{1663, 324}"; sepNavWindowFrame = "{{40, 47}, {895, 831}}"; }; }; @@ -106,25 +106,25 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B2C4C211FC246470023028A /* PBXTextBookmark */ = { + 8B2C4C221FC246470023028A /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* PurestWarmProc.cpp */; name = "PurestWarmProc.cpp: 246"; rLen = 0; rLoc = 8348; rType = 0; - vrLen = 339; - vrLoc = 1684; + vrLen = 322; + vrLoc = 1656; }; - 8B2C4C221FC246470023028A /* PBXTextBookmark */ = { + 8B793EFC21F605B1006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* PurestWarmProc.cpp */; - name = "PurestWarmProc.cpp: 246"; + name = "PurestWarmProc.cpp: 212"; rLen = 0; rLoc = 8348; rType = 0; - vrLen = 322; - vrLoc = 1656; + vrLen = 324; + vrLoc = 1663; }; 8D01CCC60486CAD60068D4B7 /* PurestWarm */ = { activeExec = 0; diff --git a/plugins/MacVST/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.perspectivev3 index a787ecd..c7c8a82 100755 --- a/plugins/MacVST/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.perspectivev3 @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B2C4C221FC246470023028A</string> + <string>8B793EFC21F605B1006E9731</string> <key>history</key> <array> - <string>8B2C4C211FC246470023028A</string> + <string>8B2C4C221FC246470023028A</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 132}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> <string>168 216 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -393,7 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {603, 297}}</string> <key>RubberWindowFrame</key> <string>168 216 810 487 0 0 1440 878 </string> </dict> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B2C4C231FC246470023028A</string> + <string>8B793EFD21F605B1006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B2C4C241FC246470023028A</string> + <string>8B793EFE21F605B1006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B2C4C251FC246470023028A</string> + <string>8B793EFF21F605B1006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>532825671.66727102</real> + <real>569771441.44578099</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,7 +651,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B2C4C261FC246470023028A</string> <string>/Users/christopherjohnson/Desktop/MacVST/PurestWarm/PurestWarm.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/PurestWarm/source/PurestWarm.cpp b/plugins/MacVST/PurestWarm/source/PurestWarm.cpp index 475e845..eeee37b 100755 --- a/plugins/MacVST/PurestWarm/source/PurestWarm.cpp +++ b/plugins/MacVST/PurestWarm/source/PurestWarm.cpp @@ -13,11 +13,8 @@ PurestWarm::PurestWarm(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, kNumPrograms, kNumParameters) { A = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/PurestWarm/source/PurestWarm.h b/plugins/MacVST/PurestWarm/source/PurestWarm.h index c67a91e..98bb0ce 100755 --- a/plugins/MacVST/PurestWarm/source/PurestWarm.h +++ b/plugins/MacVST/PurestWarm/source/PurestWarm.h @@ -52,11 +52,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/PurestWarm/source/PurestWarmProc.cpp b/plugins/MacVST/PurestWarm/source/PurestWarmProc.cpp index b5a5070..101c931 100755 --- a/plugins/MacVST/PurestWarm/source/PurestWarmProc.cpp +++ b/plugins/MacVST/PurestWarm/source/PurestWarmProc.cpp @@ -14,9 +14,6 @@ void PurestWarm::processReplacing(float **inputs, float **outputs, VstInt32 samp float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; int polarity = (int) ( A * 1.999 ); @@ -71,103 +68,55 @@ void PurestWarm::processReplacing(float **inputs, float **outputs, VstInt32 samp if (inputSampleL < 0) { inputSampleL = -(sin(-inputSampleL*1.57079634)/1.57079634); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - } - } else { - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - } + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither } - if (inputSampleR < 0) { inputSampleR = -(sin(-inputSampleR*1.57079634)/1.57079634); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } else { - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - } else { - if (fpFlip) { - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - } else { - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - } + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither } - } else { - if (inputSampleL > 0) { inputSampleL = sin(inputSampleL*1.57079634)/1.57079634; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - } - } else { - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - } - } + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither + } if (inputSampleR > 0) { inputSampleR = sin(inputSampleR*1.57079634)/1.57079634; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } else { - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - } else { - if (fpFlip) { - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - } else { - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - } - } - + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither + } } //that's it. Only applies on one half of the waveform, other half is passthrough untouched. - //even the floating point noise shaping to the 32 bit buss is only applied as needed. - - fpFlip = !fpFlip; - //end noise shaping on 32 bit output *out1 = inputSampleL; *out2 = inputSampleR; @@ -186,9 +135,6 @@ void PurestWarm::processDoubleReplacing(double **inputs, double **outputs, VstIn double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; int polarity = (int) ( A * 1.999 ); @@ -243,103 +189,63 @@ void PurestWarm::processDoubleReplacing(double **inputs, double **outputs, VstIn if (inputSampleL < 0) { inputSampleL = -(sin(-inputSampleL*1.57079634)/1.57079634); - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - } - } else { - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - } + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither } if (inputSampleR < 0) { inputSampleR = -(sin(-inputSampleR*1.57079634)/1.57079634); - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } else { - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - } else { - if (fpFlip) { - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - } else { - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - } + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither } - } else { - if (inputSampleL > 0) { inputSampleL = sin(inputSampleL*1.57079634)/1.57079634; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - } - } else { - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - } + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither } - if (inputSampleR > 0) { inputSampleR = sin(inputSampleR*1.57079634)/1.57079634; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } else { - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - } else { - if (fpFlip) { - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - } else { - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - } + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither } - } //that's it. Only applies on one half of the waveform, other half is passthrough untouched. - //even the floating point noise shaping to the 32 bit buss is only applied as needed. - - fpFlip = !fpFlip; - //end noise shaping on 64 bit output *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.pbxuser index 7900b2c..378f89f 100755 --- a/plugins/MacVST/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.pbxuser @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528461728; - PBXWorkspaceStateSaveDate = 528461728; + PBXPerProjectTemplateStateSaveDate = 569771462; + PBXWorkspaceStateSaveDate = 569771462; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { diff --git a/plugins/MacVST/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.perspectivev3 index c05f255..6841380 100755 --- a/plugins/MacVST/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.perspectivev3 @@ -360,18 +360,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 32}}</string> + <string>{{0, 0}, {603, 13}}</string> <key>RubberWindowFrame</key> <string>498 357 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>32pt</string> + <string>13pt</string> </dict> <dict> <key>Proportion</key> - <string>409pt</string> + <string>428pt</string> <key>Tabs</key> <array> <dict> @@ -385,7 +385,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 382}}</string> + <string>{{10, 27}, {603, 401}}</string> <key>RubberWindowFrame</key> <string>498 357 810 487 0 0 1440 878 </string> </dict> @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7D6A1F7FAFB4007AB60F</string> + <string>8B793F1C21F605CE006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7D6B1F7FAFB4007AB60F</string> + <string>8B793F1D21F605CE006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7D6C1F7FAFB4007AB60F</string> + <string>8B793F1E21F605CE006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528461748.86590397</real> + <real>569771470.99615598</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,7 +643,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7D6D1F7FAFB4007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/Pyewacket/Pyewacket.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Pyewacket/source/Pyewacket.cpp b/plugins/MacVST/Pyewacket/source/Pyewacket.cpp index ee2db40..d500e74 100755 --- a/plugins/MacVST/Pyewacket/source/Pyewacket.cpp +++ b/plugins/MacVST/Pyewacket/source/Pyewacket.cpp @@ -18,11 +18,8 @@ Pyewacket::Pyewacket(audioMasterCallback audioMaster) : chase = 1.0; lastrectifierL = 0.0; lastrectifierR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Pyewacket/source/Pyewacket.h b/plugins/MacVST/Pyewacket/source/Pyewacket.h index 593001f..087a198 100755 --- a/plugins/MacVST/Pyewacket/source/Pyewacket.h +++ b/plugins/MacVST/Pyewacket/source/Pyewacket.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double chase; double lastrectifierL; diff --git a/plugins/MacVST/Pyewacket/source/PyewacketProc.cpp b/plugins/MacVST/Pyewacket/source/PyewacketProc.cpp index 83112a2..8b3021a 100755 --- a/plugins/MacVST/Pyewacket/source/PyewacketProc.cpp +++ b/plugins/MacVST/Pyewacket/source/PyewacketProc.cpp @@ -17,9 +17,8 @@ void Pyewacket::processReplacing(float **inputs, float **outputs, VstInt32 sampl double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; + long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; long double drySampleL; @@ -134,25 +133,14 @@ void Pyewacket::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleR *= outputGain; } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -174,9 +162,8 @@ void Pyewacket::processDoubleReplacing(double **inputs, double **outputs, VstInt double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; + long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; long double drySampleL; @@ -291,25 +278,16 @@ void Pyewacket::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleR *= outputGain; } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Righteous4/Righteous4.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Righteous4/Righteous4.xcodeproj/christopherjohnson.pbxuser index c893227..8c45194 100755 --- a/plugins/MacVST/Righteous4/Righteous4.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Righteous4/Righteous4.xcodeproj/christopherjohnson.pbxuser @@ -49,11 +49,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 548242463; - PBXWorkspaceStateSaveDate = 548242463; + PBXPerProjectTemplateStateSaveDate = 569771492; + PBXWorkspaceStateSaveDate = 569771492; }; perUserProjectItems = { - 8BBFF86120AD84A2005650EF /* PBXTextBookmark */ = 8BBFF86120AD84A2005650EF /* PBXTextBookmark */; + 8B793F3B21F605EC006E9731 /* PBXTextBookmark */ = 8B793F3B21F605EC006E9731 /* PBXTextBookmark */; 8BBFF86220AD84A2005650EF /* PBXTextBookmark */ = 8BBFF86220AD84A2005650EF /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -62,9 +62,9 @@ }; 2407DEB6089929BA00EB68BF /* Righteous4.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {740, 3198}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 3081}}"; sepNavSelRange = "{1957, 0}"; - sepNavVisRange = "{1892, 150}"; + sepNavVisRange = "{1892, 108}"; sepNavWindowFrame = "{{9, 39}, {895, 831}}"; }; }; @@ -106,14 +106,14 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8BBFF86120AD84A2005650EF /* PBXTextBookmark */ = { + 8B793F3B21F605EC006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 2407DEB6089929BA00EB68BF /* Righteous4.cpp */; name = "Righteous4.cpp: 98"; rLen = 0; rLoc = 1957; rType = 0; - vrLen = 150; + vrLen = 108; vrLoc = 1892; }; 8BBFF86220AD84A2005650EF /* PBXTextBookmark */ = { diff --git a/plugins/MacVST/Righteous4/Righteous4.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Righteous4/Righteous4.xcodeproj/christopherjohnson.perspectivev3 index 54f4b98..8e2d830 100755 --- a/plugins/MacVST/Righteous4/Righteous4.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Righteous4/Righteous4.xcodeproj/christopherjohnson.perspectivev3 @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BBFF86220AD84A2005650EF</string> + <string>8B793F3B21F605EC006E9731</string> <key>history</key> <array> - <string>8BBFF86120AD84A2005650EF</string> + <string>8BBFF86220AD84A2005650EF</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 132}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> <string>595 333 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -393,7 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {603, 297}}</string> <key>RubberWindowFrame</key> <string>595 333 810 487 0 0 1440 878 </string> </dict> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBFF86320AD84A2005650EF</string> + <string>8B793F3C21F605EC006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBFF86420AD84A2005650EF</string> + <string>8B793F3D21F605EC006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BBFF86520AD84A2005650EF</string> + <string>8B793F3E21F605EC006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>548242594.083197</real> + <real>569771500.34394598</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,7 +651,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BBFF86620AD84A2005650EF</string> <string>/Users/christopherjohnson/Desktop/MacVST/Righteous4/Righteous4.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Righteous4/source/Righteous4Proc.cpp b/plugins/MacVST/Righteous4/source/Righteous4Proc.cpp index 7ed44cf..630360f 100755 --- a/plugins/MacVST/Righteous4/source/Righteous4Proc.cpp +++ b/plugins/MacVST/Righteous4/source/Righteous4Proc.cpp @@ -300,17 +300,14 @@ void Righteous4::processReplacing(float **inputs, float **outputs, VstInt32 samp //output dither section if (bitDepth == 3) { - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither } else { //entire Naturalize section used when not on 32 bit out @@ -515,12 +512,6 @@ void Righteous4::processReplacing(float **inputs, float **outputs, VstInt32 samp *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Righteous4::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -529,11 +520,11 @@ void Righteous4::processDoubleReplacing(double **inputs, double **outputs, VstIn double* in2 = inputs[1]; double* out1 = outputs[0]; double* out2 = outputs[1]; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); + long double fpOld = 0.618033988749894848204586; //golden ratio! + long double fpNew = 1.0 - fpOld; double IIRscaleback = 0.0002597;//scaleback of harmonic avg IIRscaleback /= overallscale; IIRscaleback = 1.0 - IIRscaleback; @@ -816,17 +807,16 @@ void Righteous4::processDoubleReplacing(double **inputs, double **outputs, VstIn //output dither section if (bitDepth == 3) { - //noise shaping to 32-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither } else { //entire Naturalize section used when not on 32 bit out @@ -1031,10 +1021,4 @@ void Righteous4::processDoubleReplacing(double **inputs, double **outputs, VstIn *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. }
\ No newline at end of file diff --git a/plugins/MacVST/SideDull/SideDull.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/SideDull/SideDull.xcodeproj/christopherjohnson.pbxuser index 6a2257b..4d8e56b 100755 --- a/plugins/MacVST/SideDull/SideDull.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/SideDull/SideDull.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* SideDull */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528461758; - PBXWorkspaceStateSaveDate = 528461758; + PBXPerProjectTemplateStateSaveDate = 569771557; + PBXWorkspaceStateSaveDate = 569771557; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -58,17 +58,17 @@ }; 2407DEB6089929BA00EB68BF /* SideDull.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 1625}}"; - sepNavSelRange = "{3760, 0}"; - sepNavVisRange = "{2540, 1852}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 1586}}"; + sepNavSelRange = "{542, 0}"; + sepNavVisRange = "{0, 2119}"; sepNavWindowFrame = "{{12, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* SideDull.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 871}}"; - sepNavSelRange = "{2409, 0}"; - sepNavVisRange = "{313, 2247}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 845}}"; + sepNavSelRange = "{2482, 0}"; + sepNavVisRange = "{280, 2228}"; sepNavWindowFrame = "{{20, 47}, {895, 831}}"; }; }; @@ -82,9 +82,9 @@ }; 24D8286F09A914000093AEF8 /* SideDullProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 2990}}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 2704}}"; sepNavSelRange = "{5347, 0}"; - sepNavVisRange = "{0, 1946}"; + sepNavVisRange = "{5028, 1960}"; sepNavWindowFrame = "{{430, 47}, {895, 831}}"; }; }; @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { + 8D01CCC60486CAD60068D4B7 /* SideDull */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/SideDull/SideDull.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/SideDull/SideDull.xcodeproj/christopherjohnson.perspectivev3 index a8f957e..d35103a 100755 --- a/plugins/MacVST/SideDull/SideDull.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/SideDull/SideDull.xcodeproj/christopherjohnson.perspectivev3 @@ -386,8 +386,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> - <key>RubberWindowFrame</key> - <string>428 317 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -441,7 +439,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {603, 414}}</string> + <key>RubberWindowFrame</key> + <string>428 317 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7D891F7FAFCE007AB60F</string> + <string>8B793F6821F60667006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7D8A1F7FAFCE007AB60F</string> + <string>8B793F6921F60667006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7D8B1F7FAFCE007AB60F</string> + <string>8B793F6A21F60667006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528461774.64021301</real> + <real>569771623.27479804</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,7 +643,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7D8C1F7FAFCE007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/SideDull/SideDull.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/SideDull/SideDull.xcodeproj/project.pbxproj b/plugins/MacVST/SideDull/SideDull.xcodeproj/project.pbxproj index ba99bc0..7e35731 100755 --- a/plugins/MacVST/SideDull/SideDull.xcodeproj/project.pbxproj +++ b/plugins/MacVST/SideDull/SideDull.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { + 8D01CCC60486CAD60068D4B7 /* SideDull */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "SideDull" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* AudioUnit */, + 8D01CCC60486CAD60068D4B7 /* SideDull */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/SideDull/source/SideDull.cpp b/plugins/MacVST/SideDull/source/SideDull.cpp index 547f1fd..479bdfd 100755 --- a/plugins/MacVST/SideDull/source/SideDull.cpp +++ b/plugins/MacVST/SideDull/source/SideDull.cpp @@ -16,10 +16,8 @@ SideDull::SideDull(audioMasterCallback audioMaster) : iirSampleA = 0.0; iirSampleB = 0.0; flip = true; - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/SideDull/source/SideDull.h b/plugins/MacVST/SideDull/source/SideDull.h index 6f431ac..ef5e892 100755 --- a/plugins/MacVST/SideDull/source/SideDull.h +++ b/plugins/MacVST/SideDull/source/SideDull.h @@ -55,10 +55,8 @@ private: double iirSampleA; double iirSampleB; bool flip; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; + long double fpNShapeL; + long double fpNShapeR; float A; }; diff --git a/plugins/MacVST/SideDull/source/SideDullProc.cpp b/plugins/MacVST/SideDull/source/SideDullProc.cpp index 347e5e8..7b77744 100755 --- a/plugins/MacVST/SideDull/source/SideDullProc.cpp +++ b/plugins/MacVST/SideDull/source/SideDullProc.cpp @@ -17,9 +17,6 @@ void SideDull::processReplacing(float **inputs, float **outputs, VstInt32 sample double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -88,27 +85,14 @@ void SideDull::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -130,9 +114,6 @@ void SideDull::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -201,27 +182,16 @@ void SideDull::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; - //noise shaping to 64-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Sidepass/Sidepass.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Sidepass/Sidepass.xcodeproj/christopherjohnson.pbxuser index 12ff98b..92e6c81 100755 --- a/plugins/MacVST/Sidepass/Sidepass.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Sidepass/Sidepass.xcodeproj/christopherjohnson.pbxuser @@ -49,11 +49,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528461783; - PBXWorkspaceStateSaveDate = 528461783; + PBXPerProjectTemplateStateSaveDate = 569771653; + PBXWorkspaceStateSaveDate = 569771653; }; perUserProjectItems = { - 8B9D6FCC1F7EF6A6007AB60F /* PBXTextBookmark */ = 8B9D6FCC1F7EF6A6007AB60F /* PBXTextBookmark */; + 8B793F8921F606AF006E9731 /* PBXTextBookmark */ = 8B793F8921F606AF006E9731 /* PBXTextBookmark */; 8B9D7DB21F7FB00A007AB60F /* PBXTextBookmark */ = 8B9D7DB21F7FB00A007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -62,17 +62,17 @@ }; 2407DEB6089929BA00EB68BF /* Sidepass.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 1625}}"; - sepNavSelRange = "{3758, 0}"; - sepNavVisRange = "{173, 2048}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 1599}}"; + sepNavSelRange = "{542, 0}"; + sepNavVisRange = "{173, 2011}"; sepNavWindowFrame = "{{12, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* Sidepass.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 897}}"; - sepNavSelRange = "{2409, 0}"; - sepNavVisRange = "{329, 2248}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 871}}"; + sepNavSelRange = "{2482, 0}"; + sepNavVisRange = "{313, 2212}"; sepNavWindowFrame = "{{20, 47}, {895, 831}}"; }; }; @@ -86,7 +86,7 @@ }; 24D8286F09A914000093AEF8 /* SidepassProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 2977}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 2613}}"; sepNavSelRange = "{6779, 0}"; sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{425, 47}, {895, 831}}"; @@ -106,10 +106,10 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B9D6FCC1F7EF6A6007AB60F /* PBXTextBookmark */ = { + 8B793F8921F606AF006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* SidepassProc.cpp */; - name = "SidepassProc.cpp: 199"; + name = "SidepassProc.cpp: 190"; rLen = 0; rLoc = 6779; rType = 0; diff --git a/plugins/MacVST/Sidepass/Sidepass.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Sidepass/Sidepass.xcodeproj/christopherjohnson.perspectivev3 index b4e2cb8..bc5c2b8 100755 --- a/plugins/MacVST/Sidepass/Sidepass.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Sidepass/Sidepass.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>6</integer> + <integer>5</integer> <integer>4</integer> <integer>0</integer> </array> @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D7DB21F7FB00A007AB60F</string> + <string>8B793F8921F606AF006E9731</string> <key>history</key> <array> - <string>8B9D6FCC1F7EF6A6007AB60F</string> + <string>8B9D7DB21F7FB00A007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -394,8 +394,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> - <key>RubberWindowFrame</key> - <string>376 351 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -449,7 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 382}}</string> + <string>{{10, 27}, {603, 414}}</string> + <key>RubberWindowFrame</key> + <string>376 351 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7DB31F7FB00A007AB60F</string> + <string>8B793F8A21F606AF006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7DB41F7FB00A007AB60F</string> + <string>8B793F8B21F606AF006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7DB51F7FB00A007AB60F</string> + <string>8B793F8C21F606AF006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528461834.34984702</real> + <real>569771695.78669202</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,7 +651,8 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7DB61F7FB00A007AB60F</string> + <string>8B793F8D21F606AF006E9731</string> + <string>8B793F8E21F606AF006E9731</string> <string>/Users/christopherjohnson/Desktop/MacVST/Sidepass/Sidepass.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Sidepass/source/Sidepass.cpp b/plugins/MacVST/Sidepass/source/Sidepass.cpp index 98f6f3a..a28c212 100755 --- a/plugins/MacVST/Sidepass/source/Sidepass.cpp +++ b/plugins/MacVST/Sidepass/source/Sidepass.cpp @@ -16,10 +16,8 @@ Sidepass::Sidepass(audioMasterCallback audioMaster) : iirSampleA = 0.0; iirSampleB = 0.0; flip = true; - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Sidepass/source/Sidepass.h b/plugins/MacVST/Sidepass/source/Sidepass.h index 0e496f5..1b31b91 100755 --- a/plugins/MacVST/Sidepass/source/Sidepass.h +++ b/plugins/MacVST/Sidepass/source/Sidepass.h @@ -55,10 +55,8 @@ private: double iirSampleA; double iirSampleB; bool flip; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/Sidepass/source/SidepassProc.cpp b/plugins/MacVST/Sidepass/source/SidepassProc.cpp index d022df3..834ae3e 100755 --- a/plugins/MacVST/Sidepass/source/SidepassProc.cpp +++ b/plugins/MacVST/Sidepass/source/SidepassProc.cpp @@ -17,9 +17,6 @@ void Sidepass::processReplacing(float **inputs, float **outputs, VstInt32 sample double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double iirAmount = pow(A,3)/overallscale; long double inputSampleL; long double inputSampleR; @@ -87,25 +84,14 @@ void Sidepass::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -127,9 +113,6 @@ void Sidepass::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double iirAmount = pow(A,3)/overallscale; long double inputSampleL; long double inputSampleR; @@ -197,25 +180,16 @@ void Sidepass::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; - //noise shaping to 64-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.pbxuser index 666e6a8..76b994a 100755 --- a/plugins/MacVST/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.pbxuser @@ -49,14 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 547786592; - PBXWorkspaceStateSaveDate = 547786592; + PBXPerProjectTemplateStateSaveDate = 569771858; + PBXWorkspaceStateSaveDate = 569771858; }; perUserProjectItems = { - 8B7E3E7A20A690EE00482CB5 /* PBXBookmark */ = 8B7E3E7A20A690EE00482CB5 /* PBXBookmark */; - 8B7E3E8320A6930B00482CB5 /* XCBuildMessageTextBookmark */ = 8B7E3E8320A6930B00482CB5 /* XCBuildMessageTextBookmark */; + 8B793FA121F60766006E9731 /* PBXTextBookmark */ = 8B793FA121F60766006E9731 /* PBXTextBookmark */; 8B7E3E8420A6930B00482CB5 /* PBXTextBookmark */ = 8B7E3E8420A6930B00482CB5 /* PBXTextBookmark */; - 8B7E3E8720A6930B00482CB5 /* PBXTextBookmark */ = 8B7E3E8720A6930B00482CB5 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -80,17 +78,17 @@ }; 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {838, 19747}}"; + sepNavIntBoundsRect = "{{0, 0}, {838, 19877}}"; sepNavSelRange = "{10616, 0}"; - sepNavVisRange = "{10459, 399}"; + sepNavVisRange = "{10459, 280}"; sepNavWindowFrame = "{{15, 42}, {895, 831}}"; }; }; 24D8286F09A914000093AEF8 /* SingleEndedTriodeProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 3978}}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 3744}}"; sepNavSelRange = "{10510, 0}"; - sepNavVisRange = "{1431, 2096}"; + sepNavVisRange = "{3404, 1933}"; sepNavWindowFrame = "{{26, 47}, {895, 831}}"; }; }; @@ -108,18 +106,15 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B7E3E7A20A690EE00482CB5 /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 24D8286F09A914000093AEF8 /* SingleEndedTriodeProc.cpp */; - }; - 8B7E3E8320A6930B00482CB5 /* XCBuildMessageTextBookmark */ = { + 8B793FA121F60766006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - comments = "Deprecated conversion from string constant to 'char*'"; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; - fallbackIsa = XCBuildMessageTextBookmark; - rLen = 1; - rLoc = 306; - rType = 1; + name = "audioeffectx.cpp: 307"; + rLen = 0; + rLoc = 10616; + rType = 0; + vrLen = 280; + vrLoc = 10459; }; 8B7E3E8420A6930B00482CB5 /* PBXTextBookmark */ = { isa = PBXTextBookmark; @@ -131,16 +126,6 @@ vrLen = 399; vrLoc = 10459; }; - 8B7E3E8720A6930B00482CB5 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 24D8286F09A914000093AEF8 /* SingleEndedTriodeProc.cpp */; - name = "SingleEndedTriodeProc.cpp: 279"; - rLen = 0; - rLoc = 10510; - rType = 0; - vrLen = 2096; - vrLoc = 1431; - }; 8D01CCC60486CAD60068D4B7 /* SingleEndedTriode */ = { activeExec = 0; }; diff --git a/plugins/MacVST/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.perspectivev3 index 7b7baa9..8ba4686 100755 --- a/plugins/MacVST/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.perspectivev3 @@ -222,48 +222,7 @@ </dict> </array> <key>OpenEditors</key> - <array> - <dict> - <key>Content</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>8B7E3E8520A6930B00482CB5</string> - <key>PBXProjectModuleLabel</key> - <string>SingleEndedTriodeProc.cpp</string> - <key>PBXSplitModuleInNavigatorKey</key> - <dict> - <key>Split0</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>8B7E3E8620A6930B00482CB5</string> - <key>PBXProjectModuleLabel</key> - <string>SingleEndedTriodeProc.cpp</string> - <key>_historyCapacity</key> - <integer>0</integer> - <key>bookmark</key> - <string>8B7E3E8720A6930B00482CB5</string> - <key>history</key> - <array> - <string>8B7E3E7A20A690EE00482CB5</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, 734}}</string> - <key>PBXModuleWindowStatusBarHidden2</key> - <false/> - <key>RubberWindowFrame</key> - <string>26 103 895 775 0 0 1440 878 </string> - </dict> - </dict> - </array> + <array/> <key>PerspectiveWidths</key> <array> <integer>810</integer> @@ -297,6 +256,8 @@ <key>Layout</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -362,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>27 292 810 487 0 0 1440 878 </string> + <string>143 323 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -390,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B7E3E8420A6930B00482CB5</string> + <string>8B793FA121F60766006E9731</string> <key>history</key> <array> - <string>8B7E3E8320A6930B00482CB5</string> + <string>8B7E3E8420A6930B00482CB5</string> </array> </dict> <key>SplitCount</key> @@ -407,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 132}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> - <string>27 292 810 487 0 0 1440 878 </string> + <string>143 323 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -432,7 +393,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 297}}</string> + <key>RubberWindowFrame</key> + <string>143 323 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -487,8 +450,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 282}}</string> - <key>RubberWindowFrame</key> - <string>27 292 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -516,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B7E3E5D20A68F7800482CB5</string> + <string>8B793FA221F60766006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B7E3E5E20A68F7800482CB5</string> + <string>8B793FA321F60766006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B7E3E5F20A68F7800482CB5</string> + <string>8B793FA421F60766006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -673,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>547787531.91072297</real> + <real>569771878.44873595</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -691,10 +652,10 @@ <key>WindowOrderList</key> <array> <string>8B7E3E8520A6930B00482CB5</string> - <string>/Users/christopherjohnson/Desktop/SingleEndedTriode/SingleEndedTriode.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/SingleEndedTriode/SingleEndedTriode.xcodeproj</string> </array> <key>WindowString</key> - <string>27 292 810 487 0 0 1440 878 </string> + <string>143 323 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/SingleEndedTriode/source/SingleEndedTriodeProc.cpp b/plugins/MacVST/SingleEndedTriode/source/SingleEndedTriodeProc.cpp index 5781165..ef6694c 100755 --- a/plugins/MacVST/SingleEndedTriode/source/SingleEndedTriodeProc.cpp +++ b/plugins/MacVST/SingleEndedTriode/source/SingleEndedTriodeProc.cpp @@ -127,18 +127,14 @@ void SingleEndedTriode::processReplacing(float **inputs, float **outputs, VstInt inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -148,12 +144,6 @@ void SingleEndedTriode::processReplacing(float **inputs, float **outputs, VstInt *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void SingleEndedTriode::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -276,18 +266,16 @@ void SingleEndedTriode::processDoubleReplacing(double **inputs, double **outputs inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -297,10 +285,4 @@ void SingleEndedTriode::processDoubleReplacing(double **inputs, double **outputs *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. }
\ No newline at end of file diff --git a/plugins/MacVST/Slew/Slew.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Slew/Slew.xcodeproj/christopherjohnson.pbxuser index 74e2298..2f3f896 100755 --- a/plugins/MacVST/Slew/Slew.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Slew/Slew.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528461843; - PBXWorkspaceStateSaveDate = 528461843; + PBXPerProjectTemplateStateSaveDate = 569772166; + PBXWorkspaceStateSaveDate = 569772166; }; perUserProjectItems = { 8B38EA6F1D5BFCFD003DFCC5 /* PBXTextBookmark */ = 8B38EA6F1D5BFCFD003DFCC5 /* PBXTextBookmark */; - 8B9D6FEC1F7EF6DF007AB60F /* PBXTextBookmark */ = 8B9D6FEC1F7EF6DF007AB60F /* PBXTextBookmark */; + 8B793FC121F6088F006E9731 /* PBXTextBookmark */ = 8B793FC121F6088F006E9731 /* PBXTextBookmark */; 8B9D7DC81F7FB021007AB60F /* PBXTextBookmark */ = 8B9D7DC81F7FB021007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -71,9 +71,9 @@ }; 245463B80991757100464AD3 /* Slew.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 1131}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 1092}}"; sepNavSelRange = "{2877, 0}"; - sepNavVisRange = "{2783, 41}"; + sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{15, 42}, {895, 831}}"; }; }; @@ -117,15 +117,15 @@ vrLen = 222; vrLoc = 2891; }; - 8B9D6FEC1F7EF6DF007AB60F /* PBXTextBookmark */ = { + 8B793FC121F6088F006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 245463B80991757100464AD3 /* Slew.h */; name = "Slew.h: 76"; rLen = 0; rLoc = 2877; rType = 0; - vrLen = 88; - vrLoc = 2736; + vrLen = 0; + vrLoc = 0; }; 8B9D7DC81F7FB021007AB60F /* PBXTextBookmark */ = { isa = PBXTextBookmark; diff --git a/plugins/MacVST/Slew/Slew.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Slew/Slew.xcodeproj/christopherjohnson.perspectivev3 index 9040f1c..bfb6744 100755 --- a/plugins/MacVST/Slew/Slew.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Slew/Slew.xcodeproj/christopherjohnson.perspectivev3 @@ -351,11 +351,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D7DC81F7FB021007AB60F</string> + <string>8B793FC121F6088F006E9731</string> <key>history</key> <array> <string>8B38EA6F1D5BFCFD003DFCC5</string> - <string>8B9D6FEC1F7EF6DF007AB60F</string> + <string>8B9D7DC81F7FB021007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 51}}</string> + <string>{{0, 0}, {603, 32}}</string> <key>RubberWindowFrame</key> <string>490 362 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>51pt</string> + <string>32pt</string> </dict> <dict> <key>Proportion</key> - <string>390pt</string> + <string>409pt</string> <key>Tabs</key> <array> <dict> @@ -394,7 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 363}}</string> + <string>{{10, 27}, {603, 382}}</string> <key>RubberWindowFrame</key> <string>490 362 810 487 0 0 1440 878 </string> </dict> @@ -478,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7DC91F7FB021007AB60F</string> + <string>8B793FC221F6088F006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7DCA1F7FB021007AB60F</string> + <string>8B793FC321F6088F006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7DCB1F7FB021007AB60F</string> + <string>8B793FC421F6088F006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528461857.798751</real> + <real>569772175.32019699</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,7 +652,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7DCC1F7FB021007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/Slew/Slew.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Slew2/Slew2.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Slew2/Slew2.xcodeproj/christopherjohnson.pbxuser index 439a734..418e2e4 100755 --- a/plugins/MacVST/Slew2/Slew2.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Slew2/Slew2.xcodeproj/christopherjohnson.pbxuser @@ -51,8 +51,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528461866; - PBXWorkspaceStateSaveDate = 528461866; + PBXPerProjectTemplateStateSaveDate = 569772312; + PBXWorkspaceStateSaveDate = 569772312; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { diff --git a/plugins/MacVST/Slew2/Slew2.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Slew2/Slew2.xcodeproj/christopherjohnson.perspectivev3 index d6da55d..fb00966 100755 --- a/plugins/MacVST/Slew2/Slew2.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Slew2/Slew2.xcodeproj/christopherjohnson.perspectivev3 @@ -339,13 +339,15 @@ <key>PBXProjectModuleGUID</key> <string>8B0237581D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string><No Editor></string> + <string></string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> <dict> <key>PBXProjectModuleGUID</key> <string>8B0237591D42B1C400E1E8C8</string> + <key>PBXProjectModuleLabel</key> + <string></string> </dict> <key>SplitCount</key> <string>1</string> @@ -467,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7DE81F7FB03B007AB60F</string> + <string>8B793FE121F60920006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7DE91F7FB03B007AB60F</string> + <string>8B793FE221F60920006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7DEA1F7FB03B007AB60F</string> + <string>8B793FE321F60920006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -644,7 +646,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528461883.34153903</real> + <real>569772320.81251204</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -661,7 +663,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7DEB1F7FB03B007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/Slew2/Slew2.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.pbxuser index 1f24b3b..edacd41 100755 --- a/plugins/MacVST/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* SlewOnly */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528461894; - PBXWorkspaceStateSaveDate = 528461894; + PBXPerProjectTemplateStateSaveDate = 569772340; + PBXWorkspaceStateSaveDate = 569772340; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* SlewOnly */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.perspectivev3 index 1c0ad59..a8cc6e6 100755 --- a/plugins/MacVST/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.perspectivev3 @@ -360,18 +360,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 69}}</string> + <string>{{0, 0}, {603, 51}}</string> <key>RubberWindowFrame</key> <string>471 286 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>69pt</string> + <string>51pt</string> </dict> <dict> <key>Proportion</key> - <string>372pt</string> + <string>390pt</string> <key>Tabs</key> <array> <dict> @@ -385,7 +385,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 345}}</string> + <string>{{10, 27}, {603, 363}}</string> <key>RubberWindowFrame</key> <string>471 286 810 487 0 0 1440 878 </string> </dict> @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7E111F7FB071007AB60F</string> + <string>8B79400021F6093C006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7E121F7FB071007AB60F</string> + <string>8B79400121F6093C006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7E131F7FB071007AB60F</string> + <string>8B79400221F6093C006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528461937.63799101</real> + <real>569772348.11004496</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,7 +643,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7E141F7FB071007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/SlewOnly/SlewOnly.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/SlewOnly/SlewOnly.xcodeproj/project.pbxproj b/plugins/MacVST/SlewOnly/SlewOnly.xcodeproj/project.pbxproj index 7da4109..fc3c402 100755 --- a/plugins/MacVST/SlewOnly/SlewOnly.xcodeproj/project.pbxproj +++ b/plugins/MacVST/SlewOnly/SlewOnly.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* SlewOnly */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "SlewOnly" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* SlewOnly */, + 8D01CCC60486CAD60068D4B7 /* AudioUnit */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/Spiral/Spiral.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Spiral/Spiral.xcodeproj/christopherjohnson.pbxuser index af4c470..6e07b6a 100755 --- a/plugins/MacVST/Spiral/Spiral.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Spiral/Spiral.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 548242309; - PBXWorkspaceStateSaveDate = 548242309; + PBXPerProjectTemplateStateSaveDate = 569772524; + PBXWorkspaceStateSaveDate = 569772524; }; perUserProjectItems = { - 8BBFF88A20AD86E4005650EF /* XCBuildMessageTextBookmark */ = 8BBFF88A20AD86E4005650EF /* XCBuildMessageTextBookmark */; - 8BBFF88B20AD86E4005650EF /* PBXTextBookmark */ = 8BBFF88B20AD86E4005650EF /* PBXTextBookmark */; + 8B79401F21F60A00006E9731 /* XCBuildMessageTextBookmark */ = 8B79401F21F60A00006E9731 /* XCBuildMessageTextBookmark */; + 8B79402021F60A00006E9731 /* PBXTextBookmark */ = 8B79402021F60A00006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -62,9 +62,9 @@ }; 2407DEB6089929BA00EB68BF /* Spiral.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {712, 1560}}"; + sepNavIntBoundsRect = "{{0, 0}, {663, 1469}}"; sepNavSelRange = "{2153, 0}"; - sepNavVisRange = "{2034, 288}"; + sepNavVisRange = "{2076, 246}"; sepNavWindowFrame = "{{12, 47}, {895, 831}}"; }; }; @@ -106,7 +106,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8BBFF88A20AD86E4005650EF /* XCBuildMessageTextBookmark */ = { + 8B79401F21F60A00006E9731 /* XCBuildMessageTextBookmark */ = { isa = PBXTextBookmark; comments = "Unused variable 'chunkData'"; fRef = 2407DEB6089929BA00EB68BF /* Spiral.cpp */; @@ -115,15 +115,15 @@ rLoc = 57; rType = 1; }; - 8BBFF88B20AD86E4005650EF /* PBXTextBookmark */ = { + 8B79402021F60A00006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 2407DEB6089929BA00EB68BF /* Spiral.cpp */; name = "Spiral.cpp: 58"; rLen = 0; rLoc = 2153; rType = 0; - vrLen = 288; - vrLoc = 2034; + vrLen = 246; + vrLoc = 2076; }; 8D01CCC60486CAD60068D4B7 /* Spiral */ = { activeExec = 0; diff --git a/plugins/MacVST/Spiral/Spiral.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Spiral/Spiral.xcodeproj/christopherjohnson.perspectivev3 index 77cc949..4c7e827 100755 --- a/plugins/MacVST/Spiral/Spiral.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Spiral/Spiral.xcodeproj/christopherjohnson.perspectivev3 @@ -321,7 +321,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>21 283 810 487 0 0 1440 878 </string> + <string>283 293 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -349,10 +349,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BBFF88B20AD86E4005650EF</string> + <string>8B79402021F60A00006E9731</string> <key>history</key> <array> - <string>8BBFF88A20AD86E4005650EF</string> + <string>8B79401F21F60A00006E9731</string> </array> </dict> <key>SplitCount</key> @@ -366,18 +366,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 132}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> - <string>21 283 810 487 0 0 1440 878 </string> + <string>283 293 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -391,7 +391,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 297}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -445,9 +445,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {603, 297}}</string> <key>RubberWindowFrame</key> - <string>21 283 810 487 0 0 1440 878 </string> + <string>283 293 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -475,11 +475,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBFF88C20AD86E4005650EF</string> + <string>8B79402121F60A00006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBFF88D20AD86E4005650EF</string> + <string>8B79402221F60A00006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BBFF88E20AD86E4005650EF</string> + <string>8B79402321F60A00006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -632,7 +632,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>548243172.70111001</real> + <real>569772544.89690602</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -649,11 +649,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BBFF88F20AD86E4005650EF</string> - <string>/Users/christopherjohnson/Desktop/Spiral/Spiral.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/Spiral/Spiral.xcodeproj</string> </array> <key>WindowString</key> - <string>21 283 810 487 0 0 1440 878 </string> + <string>283 293 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/Spiral/source/SpiralProc.cpp b/plugins/MacVST/Spiral/source/SpiralProc.cpp index d43a93a..4aea5bc 100755 --- a/plugins/MacVST/Spiral/source/SpiralProc.cpp +++ b/plugins/MacVST/Spiral/source/SpiralProc.cpp @@ -60,18 +60,14 @@ void Spiral::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr inputSampleL = sin(inputSampleL * fabs(inputSampleL)) / ((inputSampleL == 0.0) ?1:fabs(inputSampleL)); inputSampleR = sin(inputSampleR * fabs(inputSampleR)) / ((inputSampleR == 0.0) ?1:fabs(inputSampleR)); - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -81,12 +77,6 @@ void Spiral::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Spiral::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -142,18 +132,16 @@ void Spiral::processDoubleReplacing(double **inputs, double **outputs, VstInt32 inputSampleL = sin(inputSampleL * fabs(inputSampleL)) / ((inputSampleL == 0.0) ?1:fabs(inputSampleL)); inputSampleR = sin(inputSampleR * fabs(inputSampleR)) / ((inputSampleR == 0.0) ?1:fabs(inputSampleR)); - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -163,10 +151,4 @@ void Spiral::processDoubleReplacing(double **inputs, double **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacVST/Spiral2/Spiral2.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Spiral2/Spiral2.xcodeproj/christopherjohnson.pbxuser index 998d404..73c6829 100755 --- a/plugins/MacVST/Spiral2/Spiral2.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Spiral2/Spiral2.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 553978416; - PBXWorkspaceStateSaveDate = 553978416; + PBXPerProjectTemplateStateSaveDate = 569772566; + PBXWorkspaceStateSaveDate = 569772566; }; perUserProjectItems = { - 8BBD182B21050DB30015A233 /* PBXBookmark */ = 8BBD182B21050DB30015A233 /* PBXBookmark */; - 8BBD1834210525AC0015A233 /* XCBuildMessageTextBookmark */ = 8BBD1834210525AC0015A233 /* XCBuildMessageTextBookmark */; + 8B79404021F60A24006E9731 /* PBXTextBookmark */ = 8B79404021F60A24006E9731 /* PBXTextBookmark */; + 8B79404421F60A24006E9731 /* PBXTextBookmark */ = 8B79404421F60A24006E9731 /* PBXTextBookmark */; 8BBD1835210525AC0015A233 /* PBXTextBookmark */ = 8BBD1835210525AC0015A233 /* PBXTextBookmark */; 8BBD1838210525AC0015A233 /* PBXTextBookmark */ = 8BBD1838210525AC0015A233 /* PBXTextBookmark */; }; @@ -80,17 +80,17 @@ }; 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {838, 19747}}"; + sepNavIntBoundsRect = "{{0, 0}, {838, 19877}}"; sepNavSelRange = "{10616, 0}"; - sepNavVisRange = "{10459, 399}"; + sepNavVisRange = "{10459, 280}"; sepNavWindowFrame = "{{15, 42}, {895, 831}}"; }; }; 24D8286F09A914000093AEF8 /* Spiral2Proc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 3913}}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 3497}}"; sepNavSelRange = "{8913, 0}"; - sepNavVisRange = "{6147, 2094}"; + sepNavVisRange = "{3322, 1681}"; sepNavWindowFrame = "{{18, 47}, {895, 831}}"; }; }; @@ -108,18 +108,25 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8BBD182B21050DB30015A233 /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 24D8286F09A914000093AEF8 /* Spiral2Proc.cpp */; - }; - 8BBD1834210525AC0015A233 /* XCBuildMessageTextBookmark */ = { + 8B79404021F60A24006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - comments = "Deprecated conversion from string constant to 'char*'"; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; - fallbackIsa = XCBuildMessageTextBookmark; - rLen = 1; - rLoc = 306; - rType = 1; + name = "audioeffectx.cpp: 307"; + rLen = 0; + rLoc = 10616; + rType = 0; + vrLen = 280; + vrLoc = 10459; + }; + 8B79404421F60A24006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 24D8286F09A914000093AEF8 /* Spiral2Proc.cpp */; + name = "Spiral2Proc.cpp: 260"; + rLen = 0; + rLoc = 8913; + rType = 0; + vrLen = 1681; + vrLoc = 3322; }; 8BBD1835210525AC0015A233 /* PBXTextBookmark */ = { isa = PBXTextBookmark; diff --git a/plugins/MacVST/Spiral2/Spiral2.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Spiral2/Spiral2.xcodeproj/christopherjohnson.perspectivev3 index 376de96..08c20ea 100755 --- a/plugins/MacVST/Spiral2/Spiral2.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Spiral2/Spiral2.xcodeproj/christopherjohnson.perspectivev3 @@ -241,10 +241,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BBD1838210525AC0015A233</string> + <string>8B79404421F60A24006E9731</string> <key>history</key> <array> - <string>8BBD182B21050DB30015A233</string> + <string>8BBD1838210525AC0015A233</string> </array> </dict> <key>SplitCount</key> @@ -297,6 +297,8 @@ <key>Layout</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -362,7 +364,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>5 340 810 487 0 0 1440 878 </string> + <string>432 361 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -390,10 +392,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BBD1835210525AC0015A233</string> + <string>8B79404021F60A24006E9731</string> <key>history</key> <array> - <string>8BBD1834210525AC0015A233</string> + <string>8BBD1835210525AC0015A233</string> </array> </dict> <key>SplitCount</key> @@ -407,18 +409,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 132}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> - <string>5 340 810 487 0 0 1440 878 </string> + <string>432 361 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -432,7 +434,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 297}}</string> + <key>RubberWindowFrame</key> + <string>432 361 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -487,8 +491,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 282}}</string> - <key>RubberWindowFrame</key> - <string>5 340 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -516,11 +518,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBD181021050A370015A233</string> + <string>8B79404121F60A24006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBD181121050A370015A233</string> + <string>8B79404221F60A24006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BBD181221050A370015A233</string> + <string>8B79404321F60A24006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -673,7 +675,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>553985452.30988598</real> + <real>569772580.33098996</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -691,10 +693,10 @@ <key>WindowOrderList</key> <array> <string>8BBD1836210525AC0015A233</string> - <string>/Users/christopherjohnson/Desktop/Spiral2/Spiral2.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/Spiral2/Spiral2.xcodeproj</string> </array> <key>WindowString</key> - <string>5 340 810 487 0 0 1440 878 </string> + <string>432 361 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/Spiral2/source/Spiral2Proc.cpp b/plugins/MacVST/Spiral2/source/Spiral2Proc.cpp index d309448..a8669c5 100755 --- a/plugins/MacVST/Spiral2/source/Spiral2Proc.cpp +++ b/plugins/MacVST/Spiral2/source/Spiral2Proc.cpp @@ -118,18 +118,14 @@ void Spiral2::processReplacing(float **inputs, float **outputs, VstInt32 sampleF prevSampleR = drySampleR; flip = !flip; - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -139,12 +135,6 @@ void Spiral2::processReplacing(float **inputs, float **outputs, VstInt32 sampleF *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Spiral2::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -259,18 +249,16 @@ void Spiral2::processDoubleReplacing(double **inputs, double **outputs, VstInt32 prevSampleR = drySampleR; flip = !flip; - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -280,10 +268,4 @@ void Spiral2::processDoubleReplacing(double **inputs, double **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacVST/StarChild/StarChild.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/StarChild/StarChild.xcodeproj/christopherjohnson.pbxuser index 82b4c8d..dd67748 100755 --- a/plugins/MacVST/StarChild/StarChild.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/StarChild/StarChild.xcodeproj/christopherjohnson.pbxuser @@ -49,11 +49,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528462002; - PBXWorkspaceStateSaveDate = 528462002; + PBXPerProjectTemplateStateSaveDate = 569772605; + PBXWorkspaceStateSaveDate = 569772605; }; perUserProjectItems = { - 8B9D70751F7EF81B007AB60F /* PBXTextBookmark */ = 8B9D70751F7EF81B007AB60F /* PBXTextBookmark */; + 8B79406121F60A46006E9731 /* PBXTextBookmark */ = 8B79406121F60A46006E9731 /* PBXTextBookmark */; 8B9D7E451F7FB0C9007AB60F /* PBXTextBookmark */ = 8B9D7E451F7FB0C9007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -106,15 +106,15 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B9D70751F7EF81B007AB60F /* PBXTextBookmark */ = { + 8B79406121F60A46006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; name = "audioeffectx.cpp: 307"; rLen = 0; rLoc = 10616; rType = 0; - vrLen = 123; - vrLoc = 10613; + vrLen = 0; + vrLoc = 0; }; 8B9D7E451F7FB0C9007AB60F /* PBXTextBookmark */ = { isa = PBXTextBookmark; diff --git a/plugins/MacVST/StarChild/StarChild.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/StarChild/StarChild.xcodeproj/christopherjohnson.perspectivev3 index dbfa3aa..7a37b96 100755 --- a/plugins/MacVST/StarChild/StarChild.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/StarChild/StarChild.xcodeproj/christopherjohnson.perspectivev3 @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D7E451F7FB0C9007AB60F</string> + <string>8B79406121F60A46006E9731</string> <key>history</key> <array> - <string>8B9D70751F7EF81B007AB60F</string> + <string>8B9D7E451F7FB0C9007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 32}}</string> + <string>{{0, 0}, {603, 13}}</string> <key>RubberWindowFrame</key> <string>423 305 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>32pt</string> + <string>13pt</string> </dict> <dict> <key>Proportion</key> - <string>409pt</string> + <string>428pt</string> <key>Tabs</key> <array> <dict> @@ -393,7 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 382}}</string> + <string>{{10, 27}, {603, 401}}</string> <key>RubberWindowFrame</key> <string>423 305 810 487 0 0 1440 878 </string> </dict> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7E461F7FB0C9007AB60F</string> + <string>8B79406221F60A46006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7E471F7FB0C9007AB60F</string> + <string>8B79406321F60A46006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7E481F7FB0C9007AB60F</string> + <string>8B79406421F60A46006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528462025.44259501</real> + <real>569772614.68796301</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,7 +651,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7E491F7FB0C9007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/StarChild/StarChild.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/StarChild/source/StarChild.cpp b/plugins/MacVST/StarChild/source/StarChild.cpp index 84becbc..1b29d50 100755 --- a/plugins/MacVST/StarChild/source/StarChild.cpp +++ b/plugins/MacVST/StarChild/source/StarChild.cpp @@ -65,11 +65,8 @@ StarChild::StarChild(audioMasterCallback audioMaster) : increment = 1; dutyCycle = 1; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/StarChild/source/StarChild.h b/plugins/MacVST/StarChild/source/StarChild.h index 7ae986a..630be3c 100755 --- a/plugins/MacVST/StarChild/source/StarChild.h +++ b/plugins/MacVST/StarChild/source/StarChild.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double d[45102]; diff --git a/plugins/MacVST/StarChild/source/StarChildProc.cpp b/plugins/MacVST/StarChild/source/StarChildProc.cpp index 03c8e31..047948a 100755 --- a/plugins/MacVST/StarChild/source/StarChildProc.cpp +++ b/plugins/MacVST/StarChild/source/StarChildProc.cpp @@ -14,9 +14,6 @@ void StarChild::processReplacing(float **inputs, float **outputs, VstInt32 sampl float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double drySampleL; double drySampleR; @@ -392,25 +389,14 @@ void StarChild::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleR += drySampleR; //here we combine the tanks with the dry signal - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -429,9 +415,6 @@ void StarChild::processDoubleReplacing(double **inputs, double **outputs, VstInt double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double drySampleL; double drySampleR; @@ -807,25 +790,16 @@ void StarChild::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleR += drySampleR; //here we combine the tanks with the dry signal - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/StereoFX/StereoFX.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/StereoFX/StereoFX.xcodeproj/christopherjohnson.pbxuser index 59f72aa..06f0165 100755 --- a/plugins/MacVST/StereoFX/StereoFX.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/StereoFX/StereoFX.xcodeproj/christopherjohnson.pbxuser @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 546569458; - PBXWorkspaceStateSaveDate = 546569458; + PBXPerProjectTemplateStateSaveDate = 569772631; + PBXWorkspaceStateSaveDate = 569772631; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -58,17 +58,17 @@ }; 2407DEB6089929BA00EB68BF /* StereoFX.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 1833}}"; - sepNavSelRange = "{601, 0}"; - sepNavVisRange = "{2949, 2162}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 1846}}"; + sepNavSelRange = "{548, 0}"; + sepNavVisRange = "{0, 1959}"; sepNavWindowFrame = "{{12, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* StereoFX.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 936}}"; - sepNavSelRange = "{2618, 0}"; - sepNavVisRange = "{0, 2405}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 910}}"; + sepNavSelRange = "{2498, 0}"; + sepNavVisRange = "{347, 2231}"; sepNavWindowFrame = "{{20, 47}, {895, 831}}"; }; }; diff --git a/plugins/MacVST/StereoFX/StereoFX.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/StereoFX/StereoFX.xcodeproj/christopherjohnson.perspectivev3 index 2a5be24..1e8fb00 100755 --- a/plugins/MacVST/StereoFX/StereoFX.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/StereoFX/StereoFX.xcodeproj/christopherjohnson.perspectivev3 @@ -256,6 +256,8 @@ <key>Layout</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -298,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>6</integer> + <integer>5</integer> <integer>4</integer> <integer>0</integer> </array> @@ -321,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>19 357 810 487 0 0 1440 878 </string> + <string>326 318 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -360,7 +362,7 @@ <key>Frame</key> <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> - <string>19 357 810 487 0 0 1440 878 </string> + <string>326 318 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -439,7 +441,7 @@ <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> <key>RubberWindowFrame</key> - <string>19 357 810 487 0 0 1440 878 </string> + <string>326 318 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -467,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BC5CFB52093FD050058B257</string> + <string>8B79408D21F60A83006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BC5CFB62093FD050058B257</string> + <string>8B79408E21F60A83006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BC5CFB72093FD050058B257</string> + <string>8B79408F21F60A83006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -624,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>546571504.84971404</real> + <real>569772675.65113199</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -641,11 +643,11 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BC5CFDD209404F00058B257</string> - <string>/Users/christopherjohnson/Desktop/StereoFX/StereoFX.xcodeproj</string> + <string>8B79409021F60A83006E9731</string> + <string>/Users/christopherjohnson/Desktop/MacVST/StereoFX/StereoFX.xcodeproj</string> </array> <key>WindowString</key> - <string>19 357 810 487 0 0 1440 878 </string> + <string>326 318 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/StereoFX/source/StereoFX.cpp b/plugins/MacVST/StereoFX/source/StereoFX.cpp index 63c23db..704cbf3 100755 --- a/plugins/MacVST/StereoFX/source/StereoFX.cpp +++ b/plugins/MacVST/StereoFX/source/StereoFX.cpp @@ -17,10 +17,8 @@ StereoFX::StereoFX(audioMasterCallback audioMaster) : C = 0.0; iirSampleA = 0.0; iirSampleB = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; flip = false; //this is reset: values being initialized only once. Startup values, whatever they are. diff --git a/plugins/MacVST/StereoFX/source/StereoFX.h b/plugins/MacVST/StereoFX/source/StereoFX.h index 6748d1e..7a36059 100755 --- a/plugins/MacVST/StereoFX/source/StereoFX.h +++ b/plugins/MacVST/StereoFX/source/StereoFX.h @@ -56,10 +56,8 @@ private: double iirSampleA; double iirSampleB; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; + long double fpNShapeL; + long double fpNShapeR; bool flip; //default stuff diff --git a/plugins/MacVST/StereoFX/source/StereoFXProc.cpp b/plugins/MacVST/StereoFX/source/StereoFXProc.cpp index 49be44f..0e9de74 100755 --- a/plugins/MacVST/StereoFX/source/StereoFXProc.cpp +++ b/plugins/MacVST/StereoFX/source/StereoFXProc.cpp @@ -17,9 +17,6 @@ void StereoFX::processReplacing(float **inputs, float **outputs, VstInt32 sample double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; long double mid; @@ -138,25 +135,14 @@ void StereoFX::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -178,9 +164,6 @@ void StereoFX::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; long double mid; @@ -299,25 +282,16 @@ void StereoFX::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; - //noise shaping to 64-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - flip = !flip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.pbxuser index bb7bda4..d59c2aa 100755 --- a/plugins/MacVST/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* SubsOnly */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528462034; - PBXWorkspaceStateSaveDate = 528462034; + PBXPerProjectTemplateStateSaveDate = 569772699; + PBXWorkspaceStateSaveDate = 569772699; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { + 8D01CCC60486CAD60068D4B7 /* SubsOnly */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.perspectivev3 index d989da0..1708702 100755 --- a/plugins/MacVST/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.perspectivev3 @@ -360,18 +360,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 32}}</string> + <string>{{0, 0}, {603, 13}}</string> <key>RubberWindowFrame</key> <string>397 265 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>32pt</string> + <string>13pt</string> </dict> <dict> <key>Proportion</key> - <string>409pt</string> + <string>428pt</string> <key>Tabs</key> <array> <dict> @@ -385,7 +385,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 382}}</string> + <string>{{10, 27}, {603, 401}}</string> <key>RubberWindowFrame</key> <string>397 265 810 487 0 0 1440 878 </string> </dict> @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7E651F7FB0E3007AB60F</string> + <string>8B7940AD21F60AEF006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7E661F7FB0E3007AB60F</string> + <string>8B7940AE21F60AEF006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7E671F7FB0E3007AB60F</string> + <string>8B7940AF21F60AEF006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528462051.69883603</real> + <real>569772783.81786597</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,7 +643,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7E681F7FB0E3007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/SubsOnly/SubsOnly.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/SubsOnly/SubsOnly.xcodeproj/project.pbxproj b/plugins/MacVST/SubsOnly/SubsOnly.xcodeproj/project.pbxproj index 4143c63..27466c7 100755 --- a/plugins/MacVST/SubsOnly/SubsOnly.xcodeproj/project.pbxproj +++ b/plugins/MacVST/SubsOnly/SubsOnly.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { + 8D01CCC60486CAD60068D4B7 /* SubsOnly */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "SubsOnly" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* AudioUnit */, + 8D01CCC60486CAD60068D4B7 /* SubsOnly */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/Surge/Surge.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Surge/Surge.xcodeproj/christopherjohnson.pbxuser index ed57dee..80718cb 100755 --- a/plugins/MacVST/Surge/Surge.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Surge/Surge.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* Surge */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528463544; - PBXWorkspaceStateSaveDate = 528463544; + PBXPerProjectTemplateStateSaveDate = 569772809; + PBXWorkspaceStateSaveDate = 569772809; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -58,17 +58,17 @@ }; 2407DEB6089929BA00EB68BF /* Surge.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 1690}}"; - sepNavSelRange = "{609, 0}"; - sepNavVisRange = "{0, 1883}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 1807}}"; + sepNavSelRange = "{459, 0}"; + sepNavVisRange = "{0, 1913}"; sepNavWindowFrame = "{{12, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* Surge.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 936}}"; - sepNavSelRange = "{2622, 0}"; - sepNavVisRange = "{354, 2279}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 910}}"; + sepNavSelRange = "{2423, 0}"; + sepNavVisRange = "{335, 2246}"; sepNavWindowFrame = "{{20, 47}, {895, 831}}"; }; }; @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { + 8D01CCC60486CAD60068D4B7 /* Surge */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/Surge/Surge.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Surge/Surge.xcodeproj/christopherjohnson.perspectivev3 index 2e5daef..149ac16 100755 --- a/plugins/MacVST/Surge/Surge.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Surge/Surge.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>6</integer> + <integer>5</integer> <integer>4</integer> <integer>0</integer> </array> @@ -386,8 +386,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> - <key>RubberWindowFrame</key> - <string>456 253 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -441,7 +439,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 282}}</string> + <string>{{10, 27}, {603, 414}}</string> + <key>RubberWindowFrame</key> + <string>456 253 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7E841F7FB6D2007AB60F</string> + <string>8B7940CE21F60B33006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7E851F7FB6D2007AB60F</string> + <string>8B7940CF21F60B33006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7E861F7FB6D2007AB60F</string> + <string>8B7940D021F60B33006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528463570.73526001</real> + <real>569772851.163517</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,7 +643,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7E871F7FB6D2007AB60F</string> + <string>8B7940D121F60B33006E9731</string> <string>/Users/christopherjohnson/Desktop/MacVST/Surge/Surge.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Surge/Surge.xcodeproj/project.pbxproj b/plugins/MacVST/Surge/Surge.xcodeproj/project.pbxproj index 20bb253..f42ed0d 100755 --- a/plugins/MacVST/Surge/Surge.xcodeproj/project.pbxproj +++ b/plugins/MacVST/Surge/Surge.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { + 8D01CCC60486CAD60068D4B7 /* Surge */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "Surge" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* AudioUnit */, + 8D01CCC60486CAD60068D4B7 /* Surge */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/Surge/source/Surge.cpp b/plugins/MacVST/Surge/source/Surge.cpp index 711c0df..222fbcf 100755 --- a/plugins/MacVST/Surge/source/Surge.cpp +++ b/plugins/MacVST/Surge/source/Surge.cpp @@ -12,10 +12,8 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new S Surge::Surge(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, kNumPrograms, kNumParameters) { - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; flip = true; chaseA = 0.0; chaseB = 0.0; diff --git a/plugins/MacVST/Surge/source/Surge.h b/plugins/MacVST/Surge/source/Surge.h index 0e485c3..7f42c9f 100755 --- a/plugins/MacVST/Surge/source/Surge.h +++ b/plugins/MacVST/Surge/source/Surge.h @@ -53,10 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; + long double fpNShapeL; + long double fpNShapeR; bool flip; long double chaseA; long double chaseB; diff --git a/plugins/MacVST/Surge/source/SurgeProc.cpp b/plugins/MacVST/Surge/source/SurgeProc.cpp index 7a72b2f..cd82bad 100755 --- a/plugins/MacVST/Surge/source/SurgeProc.cpp +++ b/plugins/MacVST/Surge/source/SurgeProc.cpp @@ -17,9 +17,6 @@ void Surge::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -120,27 +117,14 @@ void Surge::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra inputSampleR = drySampleR - (inputSampleR * intensity); inputSampleR = (drySampleR * dry) + (inputSampleR * wet); - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -162,9 +146,6 @@ void Surge::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -264,27 +245,16 @@ void Surge::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s inputSampleR = drySampleR - (inputSampleR * intensity); inputSampleR = (drySampleR * dry) + (inputSampleR * wet); - //noise shaping to 64-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.pbxuser index c98ccc2..4f6f5f0 100755 --- a/plugins/MacVST/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.pbxuser @@ -49,11 +49,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528463581; - PBXWorkspaceStateSaveDate = 528463581; + PBXPerProjectTemplateStateSaveDate = 569772872; + PBXWorkspaceStateSaveDate = 569772872; }; perUserProjectItems = { - 8B9D70D31F7EF8CC007AB60F /* PBXTextBookmark */ = 8B9D70D31F7EF8CC007AB60F /* PBXTextBookmark */; + 8B7940F021F60B71006E9731 /* PBXTextBookmark */ = 8B7940F021F60B71006E9731 /* PBXTextBookmark */; 8B9D7EA31F7FB6EC007AB60F /* PBXTextBookmark */ = 8B9D7EA31F7FB6EC007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -62,23 +62,23 @@ }; 2407DEB6089929BA00EB68BF /* SurgeTide.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 1846}}"; - sepNavSelRange = "{4583, 0}"; - sepNavVisRange = "{0, 1913}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 1859}}"; + sepNavSelRange = "{517, 0}"; + sepNavVisRange = "{0, 1960}"; sepNavWindowFrame = "{{12, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* SurgeTide.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 949}}"; - sepNavSelRange = "{2633, 0}"; - sepNavVisRange = "{377, 2268}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 923}}"; + sepNavSelRange = "{2465, 0}"; + sepNavVisRange = "{369, 2224}"; sepNavWindowFrame = "{{20, 47}, {895, 831}}"; }; }; 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {747, 19864}}"; + sepNavIntBoundsRect = "{{0, 0}, {747, 19877}}"; sepNavSelRange = "{10616, 0}"; sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{15, 42}, {895, 831}}"; @@ -106,7 +106,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B9D70D31F7EF8CC007AB60F /* PBXTextBookmark */ = { + 8B7940F021F60B71006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; name = "audioeffectx.cpp: 307"; diff --git a/plugins/MacVST/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.perspectivev3 index 4c96578..ad29a23 100755 --- a/plugins/MacVST/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>6</integer> + <integer>5</integer> <integer>4</integer> <integer>0</integer> </array> @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D7EA31F7FB6EC007AB60F</string> + <string>8B7940F021F60B71006E9731</string> <key>history</key> <array> - <string>8B9D70D31F7EF8CC007AB60F</string> + <string>8B9D7EA31F7FB6EC007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 13}}</string> + <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> <string>384 385 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>13pt</string> + <string>0pt</string> </dict> <dict> <key>Proportion</key> - <string>428pt</string> + <string>441pt</string> <key>Tabs</key> <array> <dict> @@ -393,9 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 401}}</string> - <key>RubberWindowFrame</key> - <string>384 385 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 414}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -449,7 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 363}}</string> + <string>{{10, 27}, {603, 414}}</string> + <key>RubberWindowFrame</key> + <string>384 385 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7EA41F7FB6EC007AB60F</string> + <string>8B7940F121F60B71006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7EA51F7FB6EC007AB60F</string> + <string>8B7940F221F60B71006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7EA61F7FB6EC007AB60F</string> + <string>8B7940F321F60B71006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528463596.67712098</real> + <real>569772913.08327401</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,7 +651,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7EA71F7FB6EC007AB60F</string> + <string>8B7940F421F60B71006E9731</string> <string>/Users/christopherjohnson/Desktop/MacVST/SurgeTide/SurgeTide.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/SurgeTide/source/SurgeTide.cpp b/plugins/MacVST/SurgeTide/source/SurgeTide.cpp index 8df46c0..494e886 100755 --- a/plugins/MacVST/SurgeTide/source/SurgeTide.cpp +++ b/plugins/MacVST/SurgeTide/source/SurgeTide.cpp @@ -15,10 +15,8 @@ SurgeTide::SurgeTide(audioMasterCallback audioMaster) : A = 0.5; B = 0.3; C = 1.0; - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; flip = true; chaseA = 0.0; chaseB = 0.0; diff --git a/plugins/MacVST/SurgeTide/source/SurgeTide.h b/plugins/MacVST/SurgeTide/source/SurgeTide.h index 27495d7..8f8cd42 100755 --- a/plugins/MacVST/SurgeTide/source/SurgeTide.h +++ b/plugins/MacVST/SurgeTide/source/SurgeTide.h @@ -54,10 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; + long double fpNShapeL; + long double fpNShapeR; bool flip; long double chaseA; long double chaseB; diff --git a/plugins/MacVST/SurgeTide/source/SurgeTideProc.cpp b/plugins/MacVST/SurgeTide/source/SurgeTideProc.cpp index 2fc6a1a..59a92aa 100755 --- a/plugins/MacVST/SurgeTide/source/SurgeTideProc.cpp +++ b/plugins/MacVST/SurgeTide/source/SurgeTideProc.cpp @@ -17,9 +17,6 @@ void SurgeTide::processReplacing(float **inputs, float **outputs, VstInt32 sampl double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -110,27 +107,14 @@ void SurgeTide::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleR = drySampleR - (inputSampleR * intensity); inputSampleR = (drySampleR * dry) + (inputSampleR * wet); - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -152,9 +136,6 @@ void SurgeTide::processDoubleReplacing(double **inputs, double **outputs, VstInt double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -245,27 +226,16 @@ void SurgeTide::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleR = drySampleR - (inputSampleR * intensity); inputSampleR = (drySampleR * dry) + (inputSampleR * wet); - //noise shaping to 64-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Swell/Swell.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Swell/Swell.xcodeproj/christopherjohnson.pbxuser index dcb6a41..6dbf178 100755 --- a/plugins/MacVST/Swell/Swell.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Swell/Swell.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* Swell */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 532491124; - PBXWorkspaceStateSaveDate = 532491124; + PBXPerProjectTemplateStateSaveDate = 569772934; + PBXWorkspaceStateSaveDate = 569772934; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* Swell */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/Swell/Swell.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Swell/Swell.xcodeproj/christopherjohnson.perspectivev3 index c2e2adb..4bb2aa5 100755 --- a/plugins/MacVST/Swell/Swell.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Swell/Swell.xcodeproj/christopherjohnson.perspectivev3 @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BCC7CDC1FBD2FDD00982BD6</string> + <string>8B79410721F60B8F006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BCC7CDD1FBD2FDD00982BD6</string> + <string>8B79410821F60B8F006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BCC7CDE1FBD2FDD00982BD6</string> + <string>8B79410921F60B8F006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>532492253.86718899</real> + <real>569772943.08427894</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,7 +643,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>/Users/christopherjohnson/Desktop/Swell/Swell.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/Swell/Swell.xcodeproj</string> </array> <key>WindowString</key> <string>21 352 810 487 0 0 1440 878 </string> diff --git a/plugins/MacVST/Swell/Swell.xcodeproj/project.pbxproj b/plugins/MacVST/Swell/Swell.xcodeproj/project.pbxproj index 30d06b4..eb22bb1 100755 --- a/plugins/MacVST/Swell/Swell.xcodeproj/project.pbxproj +++ b/plugins/MacVST/Swell/Swell.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* Swell */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "Swell" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* Swell */, + 8D01CCC60486CAD60068D4B7 /* AudioUnit */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/Swell/source/Swell.cpp b/plugins/MacVST/Swell/source/Swell.cpp index 30518d8..e197cfb 100755 --- a/plugins/MacVST/Swell/source/Swell.cpp +++ b/plugins/MacVST/Swell/source/Swell.cpp @@ -21,11 +21,8 @@ Swell::Swell(audioMasterCallback audioMaster) : louderL = false; louderR = false; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Swell/source/Swell.h b/plugins/MacVST/Swell/source/Swell.h index c383df2..7c108b7 100755 --- a/plugins/MacVST/Swell/source/Swell.h +++ b/plugins/MacVST/Swell/source/Swell.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff diff --git a/plugins/MacVST/Swell/source/SwellProc.cpp b/plugins/MacVST/Swell/source/SwellProc.cpp index 28c0aba..3ab1e9b 100755 --- a/plugins/MacVST/Swell/source/SwellProc.cpp +++ b/plugins/MacVST/Swell/source/SwellProc.cpp @@ -17,9 +17,6 @@ void Swell::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double thresholdOn = pow(A,2) * B; double speedOn = (pow(B,2)*0.001)/overallscale; @@ -97,25 +94,14 @@ void Swell::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -137,9 +123,6 @@ void Swell::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double thresholdOn = pow(A,2) * B; double speedOn = (pow(B,2)*0.001)/overallscale; @@ -217,25 +200,16 @@ void Swell::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.pbxuser index be05dd0..be05dd0 100644..100755 --- a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.pbxuser diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.perspectivev3 index 79249f6..79249f6 100644..100755 --- a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.perspectivev3 diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/contents.xcworkspacedata index a80c038..a80c038 100644..100755 --- a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate Binary files differindex 5c38f94..5c38f94 100644..100755 --- a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate +++ b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate Binary files differindex 314de0f..314de0f 100644..100755 --- a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate +++ b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/spiadmin.mode1v3 index c572326..c572326 100644..100755 --- a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/spiadmin.mode1v3 +++ b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/spiadmin.mode1v3 diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/spiadmin.pbxuser index df94780..df94780 100644..100755 --- a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/spiadmin.pbxuser +++ b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/spiadmin.pbxuser diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme index 8ee693f..8ee693f 100644..100755 --- a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme +++ b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist index 5bccbcb..5bccbcb 100644..100755 --- a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist index a7bdd62..a7bdd62 100644..100755 --- a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme index 0df2de4..0df2de4 100644..100755 --- a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme +++ b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme diff --git a/plugins/MacVST/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.pbxuser index c5631ab..c3bc4aa 100755 --- a/plugins/MacVST/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.pbxuser @@ -51,11 +51,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 566515719; - PBXWorkspaceStateSaveDate = 566515719; + PBXPerProjectTemplateStateSaveDate = 569772961; + PBXWorkspaceStateSaveDate = 569772961; }; perUserProjectItems = { - 8BBB336F21C45BB700825986 /* PBXTextBookmark */ = 8BBB336F21C45BB700825986 /* PBXTextBookmark */; + 8B79412621F60BA9006E9731 /* PBXTextBookmark */ = 8B79412621F60BA9006E9731 /* PBXTextBookmark */; 8BBB337021C45BB700825986 /* PBXTextBookmark */ = 8BBB337021C45BB700825986 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -64,9 +64,9 @@ }; 2407DEB6089929BA00EB68BF /* TapeDelay.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {789, 2093}}"; + sepNavIntBoundsRect = "{{0, 0}, {789, 2054}}"; sepNavSelRange = "{5754, 0}"; - sepNavVisRange = "{4829, 428}"; + sepNavVisRange = "{4902, 355}"; sepNavWindowFrame = "{{561, 47}, {895, 831}}"; }; }; @@ -108,15 +108,15 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8BBB336F21C45BB700825986 /* PBXTextBookmark */ = { + 8B79412621F60BA9006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 2407DEB6089929BA00EB68BF /* TapeDelay.cpp */; name = "TapeDelay.cpp: 147"; rLen = 0; rLoc = 5754; rType = 0; - vrLen = 428; - vrLoc = 4829; + vrLen = 355; + vrLoc = 4902; }; 8BBB337021C45BB700825986 /* PBXTextBookmark */ = { isa = PBXTextBookmark; diff --git a/plugins/MacVST/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.perspectivev3 index 65a91fc..98c0fc3 100755 --- a/plugins/MacVST/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.perspectivev3 @@ -323,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>670 293 810 487 0 0 1440 878 </string> + <string>574 298 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BBB337021C45BB700825986</string> + <string>8B79412621F60BA9006E9731</string> <key>history</key> <array> - <string>8BBB336F21C45BB700825986</string> + <string>8BBB337021C45BB700825986</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 102}}</string> + <string>{{0, 0}, {603, 86}}</string> <key>RubberWindowFrame</key> - <string>670 293 810 487 0 0 1440 878 </string> + <string>574 298 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>102pt</string> + <string>86pt</string> </dict> <dict> <key>Proportion</key> - <string>339pt</string> + <string>355pt</string> <key>Tabs</key> <array> <dict> @@ -393,9 +393,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 312}}</string> + <string>{{10, 27}, {603, 328}}</string> <key>RubberWindowFrame</key> - <string>670 293 810 487 0 0 1440 878 </string> + <string>574 298 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBB337121C45BB700825986</string> + <string>8B79412721F60BA9006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBB337221C45BB700825986</string> + <string>8B79412821F60BA9006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BBB337321C45BB700825986</string> + <string>8B79412921F60BA9006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -654,7 +654,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>566516663.29121006</real> + <real>569772969.46289504</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -674,7 +674,7 @@ <string>/Users/christopherjohnson/Desktop/MacVST/TapeDelay/TapeDelay.xcodeproj</string> </array> <key>WindowString</key> - <string>670 293 810 487 0 0 1440 878 </string> + <string>574 298 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/TapeDelay/source/TapeDelayProc.cpp b/plugins/MacVST/TapeDelay/source/TapeDelayProc.cpp index 43fa743..e2f1ade 100755 --- a/plugins/MacVST/TapeDelay/source/TapeDelayProc.cpp +++ b/plugins/MacVST/TapeDelay/source/TapeDelayProc.cpp @@ -156,18 +156,14 @@ void TapeDelay::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleL = (inputSampleL * dry) + (dL[delay] * wet); inputSampleR = (inputSampleR * dry) + (dR[delay] * wet); - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -177,12 +173,6 @@ void TapeDelay::processReplacing(float **inputs, float **outputs, VstInt32 sampl *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void TapeDelay::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -333,18 +323,16 @@ void TapeDelay::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleL = (inputSampleL * dry) + (dL[delay] * wet); inputSampleR = (inputSampleR * dry) + (dR[delay] * wet); - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -354,10 +342,4 @@ void TapeDelay::processDoubleReplacing(double **inputs, double **outputs, VstInt *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacVST/TapeDither/TapeDither.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/TapeDither/TapeDither.xcodeproj/christopherjohnson.pbxuser index fe5becd..8a6d7a7 100755 --- a/plugins/MacVST/TapeDither/TapeDither.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/TapeDither/TapeDither.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* TapeDither */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528463605; - PBXWorkspaceStateSaveDate = 528463605; + PBXPerProjectTemplateStateSaveDate = 557693738; + PBXWorkspaceStateSaveDate = 557693738; + }; + perUserProjectItems = { + 8B913F7F213DBBCF00BA6EEC /* PBXBookmark */ = 8B913F7F213DBBCF00BA6EEC /* PBXBookmark */; + 8B913F80213DBBCF00BA6EEC /* PBXTextBookmark */ = 8B913F80213DBBCF00BA6EEC /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -82,10 +86,10 @@ }; 24D8286F09A914000093AEF8 /* TapeDitherProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 3068}}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 2405}}"; sepNavSelRange = "{634, 0}"; - sepNavVisRange = "{355, 2231}"; - sepNavWindowFrame = "{{405, 47}, {895, 831}}"; + sepNavVisRange = "{0, 0}"; + sepNavWindowFrame = "{{16, 47}, {895, 831}}"; }; }; 8B02375E1D42B1C400E1E8C8 /* Source Control */ = { @@ -102,7 +106,21 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { + 8B913F7F213DBBCF00BA6EEC /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 24D8286F09A914000093AEF8 /* TapeDitherProc.cpp */; + }; + 8B913F80213DBBCF00BA6EEC /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 24D8286F09A914000093AEF8 /* TapeDitherProc.cpp */; + name = "TapeDitherProc.cpp: 26"; + rLen = 0; + rLoc = 634; + rType = 0; + vrLen = 0; + vrLoc = 0; + }; + 8D01CCC60486CAD60068D4B7 /* TapeDither */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/TapeDither/TapeDither.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/TapeDither/TapeDither.xcodeproj/christopherjohnson.perspectivev3 index 0786862..c000ce2 100755 --- a/plugins/MacVST/TapeDither/TapeDither.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/TapeDither/TapeDither.xcodeproj/christopherjohnson.perspectivev3 @@ -339,7 +339,7 @@ <key>PBXProjectModuleGUID</key> <string>8B0237581D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>Gain.h</string> + <string>TapeDitherProc.cpp</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> @@ -347,7 +347,15 @@ <key>PBXProjectModuleGUID</key> <string>8B0237591D42B1C400E1E8C8</string> <key>PBXProjectModuleLabel</key> - <string>Gain.h</string> + <string>TapeDitherProc.cpp</string> + <key>_historyCapacity</key> + <integer>0</integer> + <key>bookmark</key> + <string>8B913F80213DBBCF00BA6EEC</string> + <key>history</key> + <array> + <string>8B913F7F213DBBCF00BA6EEC</string> + </array> </dict> <key>SplitCount</key> <string>1</string> @@ -360,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 32}}</string> + <string>{{0, 0}, {603, 13}}</string> <key>RubberWindowFrame</key> <string>379 285 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>32pt</string> + <string>13pt</string> </dict> <dict> <key>Proportion</key> - <string>409pt</string> + <string>428pt</string> <key>Tabs</key> <array> <dict> @@ -385,7 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 382}}</string> + <string>{{10, 27}, {603, 401}}</string> <key>RubberWindowFrame</key> <string>379 285 810 487 0 0 1440 878 </string> </dict> @@ -469,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7EC31F7FB712007AB60F</string> + <string>8B913F81213DBBCF00BA6EEC</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7EC41F7FB712007AB60F</string> + <string>8B913F82213DBBCF00BA6EEC</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7EC51F7FB712007AB60F</string> + <string>8B913F83213DBBCF00BA6EEC</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528463634.41372299</real> + <real>557693903.11264896</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,7 +651,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7EC61F7FB712007AB60F</string> + <string>8B913F84213DBBCF00BA6EEC</string> <string>/Users/christopherjohnson/Desktop/MacVST/TapeDither/TapeDither.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/TapeDither/TapeDither.xcodeproj/project.pbxproj b/plugins/MacVST/TapeDither/TapeDither.xcodeproj/project.pbxproj index dafefdd..85188b9 100755 --- a/plugins/MacVST/TapeDither/TapeDither.xcodeproj/project.pbxproj +++ b/plugins/MacVST/TapeDither/TapeDither.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { + 8D01CCC60486CAD60068D4B7 /* TapeDither */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "TapeDither" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* AudioUnit */, + 8D01CCC60486CAD60068D4B7 /* TapeDither */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/TapeDust/TapeDust.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/TapeDust/TapeDust.xcodeproj/christopherjohnson.pbxuser index 3c2546d..db5f0e9 100755 --- a/plugins/MacVST/TapeDust/TapeDust.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/TapeDust/TapeDust.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* TapeDust */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528463643; - PBXWorkspaceStateSaveDate = 528463643; + PBXPerProjectTemplateStateSaveDate = 569772990; + PBXWorkspaceStateSaveDate = 569772990; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -58,18 +58,18 @@ }; 2407DEB6089929BA00EB68BF /* TapeDust.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 1807}}"; - sepNavSelRange = "{4129, 0}"; - sepNavVisRange = "{0, 1910}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 1781}}"; + sepNavSelRange = "{641, 0}"; + sepNavVisRange = "{0, 1873}"; sepNavWindowFrame = "{{527, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* TapeDust.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 832}}"; - sepNavSelRange = "{421, 0}"; - sepNavVisRange = "{0, 2396}"; - sepNavWindowFrame = "{{513, 34}, {895, 831}}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 936}}"; + sepNavSelRange = "{2457, 0}"; + sepNavVisRange = "{365, 2218}"; + sepNavWindowFrame = "{{513, 39}, {895, 831}}"; }; }; 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = { @@ -82,9 +82,9 @@ }; 24D8286F09A914000093AEF8 /* TapeDustProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 3653}}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 3484}}"; sepNavSelRange = "{5633, 1892}"; - sepNavVisRange = "{315, 2084}"; + sepNavVisRange = "{1840, 1844}"; sepNavWindowFrame = "{{296, 47}, {895, 831}}"; }; }; @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { + 8D01CCC60486CAD60068D4B7 /* TapeDust */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/TapeDust/TapeDust.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/TapeDust/TapeDust.xcodeproj/christopherjohnson.perspectivev3 index 2985e5f..908494e 100755 --- a/plugins/MacVST/TapeDust/TapeDust.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/TapeDust/TapeDust.xcodeproj/christopherjohnson.perspectivev3 @@ -361,18 +361,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {531, 202}}</string> + <string>{{0, 0}, {531, 188}}</string> <key>RubberWindowFrame</key> <string>280 175 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>202pt</string> + <string>188pt</string> </dict> <dict> <key>Proportion</key> - <string>406pt</string> + <string>420pt</string> <key>Tabs</key> <array> <dict> @@ -386,9 +386,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 379}}</string> - <key>RubberWindowFrame</key> - <string>280 175 841 654 0 0 1440 878 </string> + <string>{{10, 27}, {531, 393}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -442,7 +440,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {531, 339}}</string> + <string>{{10, 27}, {531, 393}}</string> + <key>RubberWindowFrame</key> + <string>280 175 841 654 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -470,11 +470,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7EE21F7FB727007AB60F</string> + <string>8B79415321F60BEB006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7EE31F7FB727007AB60F</string> + <string>8B79415421F60BEB006E9731</string> <string>8BD7274A1D46E5A5000176F0</string> - <string>8B9D7EE41F7FB727007AB60F</string> + <string>8B79415521F60BEB006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -647,7 +647,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528463655.50013697</real> + <real>569773035.93911803</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -664,7 +664,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7EE51F7FB727007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/TapeDust/TapeDust.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/TapeDust/TapeDust.xcodeproj/project.pbxproj b/plugins/MacVST/TapeDust/TapeDust.xcodeproj/project.pbxproj index 2a33807..5d00f6e 100755 --- a/plugins/MacVST/TapeDust/TapeDust.xcodeproj/project.pbxproj +++ b/plugins/MacVST/TapeDust/TapeDust.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { + 8D01CCC60486CAD60068D4B7 /* TapeDust */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "TapeDust" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* AudioUnit */, + 8D01CCC60486CAD60068D4B7 /* TapeDust */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/TapeDust/source/TapeDust.cpp b/plugins/MacVST/TapeDust/source/TapeDust.cpp index 9638c14..0ce16e0 100755 --- a/plugins/MacVST/TapeDust/source/TapeDust.cpp +++ b/plugins/MacVST/TapeDust/source/TapeDust.cpp @@ -22,10 +22,8 @@ TapeDust::TapeDust(audioMasterCallback audioMaster) : fR[count] = 0.0; } - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; fpFlip = true; //this is reset: values being initialized only once. Startup values, whatever they are. diff --git a/plugins/MacVST/TapeDust/source/TapeDust.h b/plugins/MacVST/TapeDust/source/TapeDust.h index 7b3a7fd..facbf40 100755 --- a/plugins/MacVST/TapeDust/source/TapeDust.h +++ b/plugins/MacVST/TapeDust/source/TapeDust.h @@ -53,10 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; + long double fpNShapeL; + long double fpNShapeR; bool fpFlip; //default stuff diff --git a/plugins/MacVST/TapeDust/source/TapeDustProc.cpp b/plugins/MacVST/TapeDust/source/TapeDustProc.cpp index 3d6588d..429a366 100755 --- a/plugins/MacVST/TapeDust/source/TapeDustProc.cpp +++ b/plugins/MacVST/TapeDust/source/TapeDustProc.cpp @@ -13,9 +13,6 @@ void TapeDust::processReplacing(float **inputs, float **outputs, VstInt32 sample float* in2 = inputs[1]; float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -93,6 +90,7 @@ void TapeDust::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleL = -inputSampleL; inputSampleR = -inputSampleR; } + fpFlip = !fpFlip; for(int count = 0; count < 9; count++) { if (gainL > 1.0) { @@ -120,25 +118,14 @@ void TapeDust::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -156,9 +143,6 @@ void TapeDust::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double* in2 = inputs[1]; double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -236,6 +220,7 @@ void TapeDust::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleL = -inputSampleL; inputSampleR = -inputSampleR; } + fpFlip = !fpFlip; for(int count = 0; count < 9; count++) { if (gainL > 1.0) { @@ -263,25 +248,16 @@ void TapeDust::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/TapeFat/TapeFat.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/TapeFat/TapeFat.xcodeproj/christopherjohnson.pbxuser index 712e902..6e56b6e 100755 --- a/plugins/MacVST/TapeFat/TapeFat.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/TapeFat/TapeFat.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* TapeFat */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 566515698; - PBXWorkspaceStateSaveDate = 566515698; + PBXPerProjectTemplateStateSaveDate = 569773058; + PBXWorkspaceStateSaveDate = 569773058; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* TapeFat */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/TapeFat/TapeFat.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/TapeFat/TapeFat.xcodeproj/christopherjohnson.perspectivev3 index 9b9a82f..2a91836 100755 --- a/plugins/MacVST/TapeFat/TapeFat.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/TapeFat/TapeFat.xcodeproj/christopherjohnson.perspectivev3 @@ -256,6 +256,8 @@ <key>Layout</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -384,6 +386,8 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> + <key>RubberWindowFrame</key> + <string>60 334 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -438,8 +442,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> - <key>RubberWindowFrame</key> - <string>60 334 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -467,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBB339A21C45C7500825986</string> + <string>8B79416821F60C09006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBB339B21C45C7500825986</string> + <string>8B79416921F60C09006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BBB339C21C45C7500825986</string> + <string>8B79416A21F60C09006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -624,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>566516853.28770995</real> + <real>569773065.92286897</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -641,8 +643,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8BBB339D21C45C7500825986</string> - <string>/Users/christopherjohnson/Desktop/TapeFat/TapeFat.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/TapeFat/TapeFat.xcodeproj</string> </array> <key>WindowString</key> <string>60 334 810 487 0 0 1440 878 </string> diff --git a/plugins/MacVST/TapeFat/TapeFat.xcodeproj/project.pbxproj b/plugins/MacVST/TapeFat/TapeFat.xcodeproj/project.pbxproj index ec6dc2a..4d47968 100755 --- a/plugins/MacVST/TapeFat/TapeFat.xcodeproj/project.pbxproj +++ b/plugins/MacVST/TapeFat/TapeFat.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* TapeFat */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "TapeFat" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* TapeFat */, + 8D01CCC60486CAD60068D4B7 /* AudioUnit */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/TapeFat/source/TapeFatProc.cpp b/plugins/MacVST/TapeFat/source/TapeFatProc.cpp index 3f81d20..8eb0e98 100755 --- a/plugins/MacVST/TapeFat/source/TapeFatProc.cpp +++ b/plugins/MacVST/TapeFat/source/TapeFatProc.cpp @@ -119,18 +119,14 @@ void TapeFat::processReplacing(float **inputs, float **outputs, VstInt32 sampleF gcount--; - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -140,12 +136,6 @@ void TapeFat::processReplacing(float **inputs, float **outputs, VstInt32 sampleF *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void TapeFat::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -260,18 +250,16 @@ void TapeFat::processDoubleReplacing(double **inputs, double **outputs, VstInt32 gcount--; - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -281,10 +269,4 @@ void TapeFat::processDoubleReplacing(double **inputs, double **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacVST/Thunder/Thunder.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Thunder/Thunder.xcodeproj/christopherjohnson.pbxuser index 79ebcf3..15ab8ae 100755 --- a/plugins/MacVST/Thunder/Thunder.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Thunder/Thunder.xcodeproj/christopherjohnson.pbxuser @@ -49,13 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528463664; - PBXWorkspaceStateSaveDate = 528463664; + PBXPerProjectTemplateStateSaveDate = 569773085; + PBXWorkspaceStateSaveDate = 569773085; }; perUserProjectItems = { - 8B9D712F1F7EF94F007AB60F /* PBXTextBookmark */ = 8B9D712F1F7EF94F007AB60F /* PBXTextBookmark */; + 8B79419321F60C4C006E9731 /* PBXTextBookmark */ = 8B79419321F60C4C006E9731 /* PBXTextBookmark */; 8B9D7F011F7FB742007AB60F /* PBXTextBookmark */ = 8B9D7F011F7FB742007AB60F /* PBXTextBookmark */; - 8BFE4BF31D92E5D600BBC6AC /* PBXTextBookmark */ = 8BFE4BF31D92E5D600BBC6AC /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -63,17 +62,17 @@ }; 2407DEB6089929BA00EB68BF /* Thunder.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {848, 1898}}"; - sepNavSelRange = "{639, 0}"; - sepNavVisRange = "{2907, 2125}"; + sepNavIntBoundsRect = "{{0, 0}, {848, 1937}}"; + sepNavSelRange = "{494, 0}"; + sepNavVisRange = "{0, 1878}"; sepNavWindowFrame = "{{542, 47}, {895, 831}}"; }; }; 245463B80991757100464AD3 /* Thunder.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {866, 1092}}"; - sepNavSelRange = "{2556, 0}"; - sepNavVisRange = "{609, 2247}"; + sepNavIntBoundsRect = "{{0, 0}, {866, 1066}}"; + sepNavSelRange = "{2752, 0}"; + sepNavVisRange = "{591, 2213}"; sepNavWindowFrame = "{{545, 47}, {895, 831}}"; }; }; @@ -87,7 +86,7 @@ }; 24D8286F09A914000093AEF8 /* ThunderProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 6630}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 6240}}"; sepNavSelRange = "{1105, 0}"; sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{545, 47}, {895, 831}}"; @@ -107,10 +106,10 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B9D712F1F7EF94F007AB60F /* PBXTextBookmark */ = { + 8B79419321F60C4C006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* ThunderProc.cpp */; - name = "ThunderProc.cpp: 44"; + name = "ThunderProc.cpp: 43"; rLen = 0; rLoc = 1105; rType = 0; @@ -127,16 +126,6 @@ vrLen = 0; vrLoc = 0; }; - 8BFE4BF31D92E5D600BBC6AC /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 245463B80991757100464AD3 /* Thunder.h */; - name = "Thunder.h: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 101; - vrLoc = 0; - }; 8D01CCC60486CAD60068D4B7 /* Thunder */ = { activeExec = 0; }; diff --git a/plugins/MacVST/Thunder/Thunder.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Thunder/Thunder.xcodeproj/christopherjohnson.perspectivev3 index 72d0e9f..b395b32 100755 --- a/plugins/MacVST/Thunder/Thunder.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Thunder/Thunder.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>6</integer> + <integer>5</integer> <integer>4</integer> <integer>0</integer> </array> @@ -351,11 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D7F011F7FB742007AB60F</string> + <string>8B79419321F60C4C006E9731</string> <key>history</key> <array> - <string>8BFE4BF31D92E5D600BBC6AC</string> - <string>8B9D712F1F7EF94F007AB60F</string> + <string>8B9D7F011F7FB742007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 13}}</string> + <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> <string>459 303 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>13pt</string> + <string>0pt</string> </dict> <dict> <key>Proportion</key> - <string>428pt</string> + <string>441pt</string> <key>Tabs</key> <array> <dict> @@ -394,9 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 401}}</string> - <key>RubberWindowFrame</key> - <string>459 303 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 414}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -450,7 +447,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 345}}</string> + <string>{{10, 27}, {603, 414}}</string> + <key>RubberWindowFrame</key> + <string>459 303 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -478,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7F021F7FB742007AB60F</string> + <string>8B79419421F60C4C006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7F031F7FB742007AB60F</string> + <string>8B79419521F60C4C006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7F041F7FB742007AB60F</string> + <string>8B79419621F60C4C006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528463682.24477601</real> + <real>569773132.16742396</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,7 +651,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7F051F7FB742007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/Thunder/Thunder.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Thunder/source/Thunder.cpp b/plugins/MacVST/Thunder/source/Thunder.cpp index 015eabd..7bc8226 100755 --- a/plugins/MacVST/Thunder/source/Thunder.cpp +++ b/plugins/MacVST/Thunder/source/Thunder.cpp @@ -15,10 +15,8 @@ Thunder::Thunder(audioMasterCallback audioMaster) : A = 0.0; B = 1.0; - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; muSpeedA = 10000; muSpeedB = 10000; muCoefficientA = 1; diff --git a/plugins/MacVST/Thunder/source/Thunder.h b/plugins/MacVST/Thunder/source/Thunder.h index 1ef1d03..9e49054 100755 --- a/plugins/MacVST/Thunder/source/Thunder.h +++ b/plugins/MacVST/Thunder/source/Thunder.h @@ -69,10 +69,8 @@ private: double iirSampleAM; double iirSampleBM; double iirSampleCM; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; + long double fpNShapeL; + long double fpNShapeR; bool flip; float A; diff --git a/plugins/MacVST/Thunder/source/ThunderProc.cpp b/plugins/MacVST/Thunder/source/ThunderProc.cpp index bd401d4..2cf454d 100755 --- a/plugins/MacVST/Thunder/source/ThunderProc.cpp +++ b/plugins/MacVST/Thunder/source/ThunderProc.cpp @@ -40,9 +40,6 @@ void Thunder::processReplacing(float **inputs, float **outputs, VstInt32 sampleF double resultML; double resultMR; - float fpTemp; - double fpOld = 0.618033988749894848204586; //golden ratio! - double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -225,27 +222,14 @@ void Thunder::processReplacing(float **inputs, float **outputs, VstInt32 sampleF inputSampleR *= outputGain; } - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; @@ -291,9 +275,6 @@ void Thunder::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double resultML; double resultMR; - double fpTemp; - double fpOld = 0.618033988749894848204586; //golden ratio! - double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -476,27 +457,16 @@ void Thunder::processDoubleReplacing(double **inputs, double **outputs, VstInt32 inputSampleR *= outputGain; } - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; diff --git a/plugins/MacVST/ToTape5/ToTape5.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/ToTape5/ToTape5.xcodeproj/christopherjohnson.pbxuser index 6d067c0..6f55ad4 100755 --- a/plugins/MacVST/ToTape5/ToTape5.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/ToTape5/ToTape5.xcodeproj/christopherjohnson.pbxuser @@ -49,15 +49,15 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528463719; - PBXWorkspaceStateSaveDate = 528463719; + PBXPerProjectTemplateStateSaveDate = 569773171; + PBXWorkspaceStateSaveDate = 569773171; }; perUserProjectItems = { 8B1A33851F16D336004DE6C5 /* PBXTextBookmark */ = 8B1A33851F16D336004DE6C5 /* PBXTextBookmark */; 8B1A33A71F16D5B5004DE6C5 /* PBXTextBookmark */ = 8B1A33A71F16D5B5004DE6C5 /* PBXTextBookmark */; 8B4846EC1F6D3E64007BD0D0 /* PBXTextBookmark */ = 8B4846EC1F6D3E64007BD0D0 /* PBXTextBookmark */; - 8B9D716F1F7EFA45007AB60F /* PBXTextBookmark */ = 8B9D716F1F7EFA45007AB60F /* PBXTextBookmark */; - 8B9D7F411F7FB77C007AB60F /* PBXTextBookmark */ = 8B9D7F411F7FB77C007AB60F /* PBXTextBookmark */; + 8B7941D521F60C99006E9731 /* PBXTextBookmark */ = 8B7941D521F60C99006E9731 /* PBXTextBookmark */; + 8B7941D921F60CC1006E9731 /* PBXTextBookmark */ = 8B7941D921F60CC1006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -89,9 +89,9 @@ }; 24D8286F09A914000093AEF8 /* ToTape5Proc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {621, 10062}}"; - sepNavSelRange = "{39068, 0}"; - sepNavVisRange = "{191, 28}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 9685}}"; + sepNavSelRange = "{584, 0}"; + sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{400, 39}, {1005, 839}}"; }; }; @@ -146,25 +146,25 @@ vrLen = 135; vrLoc = 3969; }; - 8B9D716F1F7EFA45007AB60F /* PBXTextBookmark */ = { + 8B7941D521F60C99006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* ToTape5Proc.cpp */; - name = "ToTape5Proc.cpp: 737"; + name = "ToTape5Proc.cpp: 20"; rLen = 0; - rLoc = 39068; + rLoc = 584; rType = 0; - vrLen = 48; - vrLoc = 171; + vrLen = 0; + vrLoc = 0; }; - 8B9D7F411F7FB77C007AB60F /* PBXTextBookmark */ = { + 8B7941D921F60CC1006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* ToTape5Proc.cpp */; - name = "ToTape5Proc.cpp: 738"; + name = "ToTape5Proc.cpp: 21"; rLen = 0; - rLoc = 39068; + rLoc = 584; rType = 0; - vrLen = 28; - vrLoc = 191; + vrLen = 0; + vrLoc = 0; }; 8D01CCC60486CAD60068D4B7 /* ToTape5 */ = { activeExec = 0; diff --git a/plugins/MacVST/ToTape5/ToTape5.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/ToTape5/ToTape5.xcodeproj/christopherjohnson.perspectivev3 index 6c0395d..9b9bafa 100755 --- a/plugins/MacVST/ToTape5/ToTape5.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/ToTape5/ToTape5.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ <key>Layout</key> <array> <dict> - <key>BecomeActive</key> - <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -351,13 +349,13 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D7F411F7FB77C007AB60F</string> + <string>8B7941D921F60CC1006E9731</string> <key>history</key> <array> <string>8B1A33851F16D336004DE6C5</string> <string>8B1A33A71F16D5B5004DE6C5</string> <string>8B4846EC1F6D3E64007BD0D0</string> - <string>8B9D716F1F7EFA45007AB60F</string> + <string>8B7941D521F60C99006E9731</string> </array> </dict> <key>SplitCount</key> @@ -371,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 51}}</string> + <string>{{0, 0}, {603, 32}}</string> <key>RubberWindowFrame</key> <string>575 295 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>51pt</string> + <string>32pt</string> </dict> <dict> <key>Proportion</key> - <string>390pt</string> + <string>409pt</string> <key>Tabs</key> <array> <dict> @@ -396,9 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 363}}</string> - <key>RubberWindowFrame</key> - <string>575 295 810 487 0 0 1440 878 </string> + <string>{{10, 27}, {603, 382}}</string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -453,6 +449,8 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 382}}</string> + <key>RubberWindowFrame</key> + <string>575 295 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -480,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7F421F7FB77C007AB60F</string> + <string>8B7941DA21F60CC1006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7F431F7FB77C007AB60F</string> + <string>8B7941DB21F60CC1006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7F441F7FB77C007AB60F</string> + <string>8B7941DC21F60CC1006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -637,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528463740.98537701</real> + <real>569773249.12750697</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -654,7 +652,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7F451F7FB77C007AB60F</string> + <string>8B7941DD21F60CC1006E9731</string> <string>/Users/christopherjohnson/Desktop/MacVST/ToTape5/ToTape5.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/ToTape5/source/ToTape5.cpp b/plugins/MacVST/ToTape5/source/ToTape5.cpp index 01f61cb..6136aaf 100755 --- a/plugins/MacVST/ToTape5/source/ToTape5.cpp +++ b/plugins/MacVST/ToTape5/source/ToTape5.cpp @@ -98,11 +98,8 @@ ToTape5::ToTape5(audioMasterCallback audioMaster) : hcount = 0; flip = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/ToTape5/source/ToTape5.h b/plugins/MacVST/ToTape5/source/ToTape5.h index ac26df5..d049014 100755 --- a/plugins/MacVST/ToTape5/source/ToTape5.h +++ b/plugins/MacVST/ToTape5/source/ToTape5.h @@ -140,11 +140,8 @@ private: double iirSampleZR; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/ToTape5/source/ToTape5Proc.cpp b/plugins/MacVST/ToTape5/source/ToTape5Proc.cpp index 4d2d5c7..5824f80 100755 --- a/plugins/MacVST/ToTape5/source/ToTape5Proc.cpp +++ b/plugins/MacVST/ToTape5/source/ToTape5Proc.cpp @@ -17,7 +17,7 @@ void ToTape5::processReplacing(float **inputs, float **outputs, VstInt32 sampleF double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - + long double fpOld = 0.618033988749894848204586; //golden ratio! double inputgain = pow(A+1.0,3); double outputgain = E; double wet = F; @@ -63,9 +63,6 @@ void ToTape5::processReplacing(float **inputs, float **outputs, VstInt32 sampleF double tempSampleR; double drySampleR; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -358,25 +355,14 @@ void ToTape5::processReplacing(float **inputs, float **outputs, VstInt32 sampleF inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -398,7 +384,7 @@ void ToTape5::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - + long double fpOld = 0.618033988749894848204586; //golden ratio! double inputgain = pow(A+1.0,3); double outputgain = E; double wet = F; @@ -443,10 +429,6 @@ void ToTape5::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double bridgerectifierR; double tempSampleR; double drySampleR; - - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -738,25 +720,16 @@ void ToTape5::processDoubleReplacing(double **inputs, double **outputs, VstInt32 inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.pbxuser index 23a4119..7ffc1fc 100755 --- a/plugins/MacVST/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 537055041; - PBXWorkspaceStateSaveDate = 537055041; + PBXPerProjectTemplateStateSaveDate = 569773266; + PBXWorkspaceStateSaveDate = 569773266; }; perUserProjectItems = { - 8B4D27EC2002CE340051360A /* PBXTextBookmark */ = 8B4D27EC2002CE340051360A /* PBXTextBookmark */; 8B7673412002CFD90068FDCE /* PBXTextBookmark */ = 8B7673412002CFD90068FDCE /* PBXTextBookmark */; + 8B7941F021F60CDA006E9731 /* PBXTextBookmark */ = 8B7941F021F60CDA006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -78,9 +78,9 @@ }; 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {838, 19851}}"; + sepNavIntBoundsRect = "{{0, 0}, {838, 19864}}"; sepNavSelRange = "{10616, 0}"; - sepNavVisRange = "{10579, 157}"; + sepNavVisRange = "{10613, 123}"; sepNavWindowFrame = "{{15, 42}, {895, 831}}"; }; }; @@ -106,25 +106,25 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B4D27EC2002CE340051360A /* PBXTextBookmark */ = { + 8B7673412002CFD90068FDCE /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; name = "audioeffectx.cpp: 307"; rLen = 0; rLoc = 10616; rType = 0; - vrLen = 280; - vrLoc = 10459; + vrLen = 157; + vrLoc = 10579; }; - 8B7673412002CFD90068FDCE /* PBXTextBookmark */ = { + 8B7941F021F60CDA006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; name = "audioeffectx.cpp: 307"; rLen = 0; rLoc = 10616; rType = 0; - vrLen = 157; - vrLoc = 10579; + vrLen = 123; + vrLoc = 10613; }; 8D01CCC60486CAD60068D4B7 /* ToVinyl4 */ = { activeExec = 0; diff --git a/plugins/MacVST/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.perspectivev3 index 09c35a6..19849f5 100755 --- a/plugins/MacVST/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.perspectivev3 @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B7673412002CFD90068FDCE</string> + <string>8B7941F021F60CDA006E9731</string> <key>history</key> <array> - <string>8B4D27EC2002CE340051360A</string> + <string>8B7673412002CFD90068FDCE</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 86}}</string> + <string>{{0, 0}, {603, 69}}</string> <key>RubberWindowFrame</key> <string>594 373 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>86pt</string> + <string>69pt</string> </dict> <dict> <key>Proportion</key> - <string>355pt</string> + <string>372pt</string> <key>Tabs</key> <array> <dict> @@ -393,7 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 328}}</string> + <string>{{10, 27}, {603, 345}}</string> <key>RubberWindowFrame</key> <string>594 373 810 487 0 0 1440 878 </string> </dict> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B7673422002CFD90068FDCE</string> + <string>8B7941F121F60CDA006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B7673432002CFD90068FDCE</string> + <string>8B7941F221F60CDA006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B7673442002CFD90068FDCE</string> + <string>8B7941F321F60CDA006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>537055193.49498403</real> + <real>569773274.60291398</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> diff --git a/plugins/MacVST/ToVinyl4/source/ToVinyl4.cpp b/plugins/MacVST/ToVinyl4/source/ToVinyl4.cpp index b0c91f8..429187c 100755 --- a/plugins/MacVST/ToVinyl4/source/ToVinyl4.cpp +++ b/plugins/MacVST/ToVinyl4/source/ToVinyl4.cpp @@ -87,11 +87,8 @@ ToVinyl4::ToVinyl4(audioMasterCallback audioMaster) : B = 0.3424051; //44.0 hz = ((B*B)*290)+10 (B*B)*290 = 34 (B*B) = 0.1172413 sqrt() = 0.3424051 C = 0.32; D = 0.064; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/ToVinyl4/source/ToVinyl4.h b/plugins/MacVST/ToVinyl4/source/ToVinyl4.h index 57bffac..6a2dc26 100755 --- a/plugins/MacVST/ToVinyl4/source/ToVinyl4.h +++ b/plugins/MacVST/ToVinyl4/source/ToVinyl4.h @@ -142,11 +142,8 @@ private: double bMidPrev; double bSidePrev; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/ToVinyl4/source/ToVinyl4Proc.cpp b/plugins/MacVST/ToVinyl4/source/ToVinyl4Proc.cpp index 8d9dc0c..a67af99 100755 --- a/plugins/MacVST/ToVinyl4/source/ToVinyl4Proc.cpp +++ b/plugins/MacVST/ToVinyl4/source/ToVinyl4Proc.cpp @@ -17,9 +17,6 @@ void ToVinyl4::processReplacing(float **inputs, float **outputs, VstInt32 sample double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double fusswithscale = 50000; //corrected double cutofffreq = ((A*A)*290.0)+10.0; @@ -464,25 +461,14 @@ void ToVinyl4::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleR = accumulatorSample; //we just re-use accumulatorSample to do this little shuffle - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -504,9 +490,6 @@ void ToVinyl4::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double fusswithscale = 50000; //corrected double cutofffreq = ((A*A)*290.0)+10.0; @@ -950,25 +933,16 @@ void ToVinyl4::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleR = accumulatorSample; //we just re-use accumulatorSample to do this little shuffle - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.pbxuser index ed37f4c..ec11856 100755 --- a/plugins/MacVST/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528463692; - PBXWorkspaceStateSaveDate = 528463692; + PBXPerProjectTemplateStateSaveDate = 569773146; + PBXWorkspaceStateSaveDate = 569773146; }; perUserProjectItems = { 8B42FB431DB15F0F0057B6AB /* PBXTextBookmark */ = 8B42FB431DB15F0F0057B6AB /* PBXTextBookmark */; - 8B9D714F1F7EF9AB007AB60F /* PBXTextBookmark */ = 8B9D714F1F7EF9AB007AB60F /* PBXTextBookmark */; + 8B7941A921F60C62006E9731 /* PBXTextBookmark */ = 8B7941A921F60C62006E9731 /* PBXTextBookmark */; 8B9D7F211F7FB75D007AB60F /* PBXTextBookmark */ = 8B9D7F211F7FB75D007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -87,7 +87,7 @@ }; 24D8286F09A914000093AEF8 /* ToneSlantProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 3536}}"; + sepNavIntBoundsRect = "{{0, 0}, {554, 3224}}"; sepNavSelRange = "{1408, 0}"; sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{428, 47}, {895, 831}}"; @@ -117,10 +117,10 @@ vrLen = 71; vrLoc = 1774; }; - 8B9D714F1F7EF9AB007AB60F /* PBXTextBookmark */ = { + 8B7941A921F60C62006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* ToneSlantProc.cpp */; - name = "ToneSlantProc.cpp: 49"; + name = "ToneSlantProc.cpp: 51"; rLen = 0; rLoc = 1408; rType = 0; diff --git a/plugins/MacVST/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.perspectivev3 index 8350aa9..20a16b4 100755 --- a/plugins/MacVST/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.perspectivev3 @@ -351,11 +351,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D7F211F7FB75D007AB60F</string> + <string>8B7941A921F60C62006E9731</string> <key>history</key> <array> <string>8B42FB431DB15F0F0057B6AB</string> - <string>8B9D714F1F7EF9AB007AB60F</string> + <string>8B9D7F211F7FB75D007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 13}}</string> + <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> <string>575 281 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>13pt</string> + <string>0pt</string> </dict> <dict> <key>Proportion</key> - <string>428pt</string> + <string>441pt</string> <key>Tabs</key> <array> <dict> @@ -394,7 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 401}}</string> + <string>{{10, 27}, {603, 414}}</string> <key>RubberWindowFrame</key> <string>575 281 810 487 0 0 1440 878 </string> </dict> @@ -478,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7F221F7FB75D007AB60F</string> + <string>8B7941AA21F60C62006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7F231F7FB75D007AB60F</string> + <string>8B7941AB21F60C62006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7F241F7FB75D007AB60F</string> + <string>8B7941AC21F60C62006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528463709.164518</real> + <real>569773154.60327995</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -652,7 +652,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7F251F7FB75D007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/ToneSlant/ToneSlant.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/ToneSlant/source/ToneSlant.cpp b/plugins/MacVST/ToneSlant/source/ToneSlant.cpp index 0ed3618..d99fa60 100755 --- a/plugins/MacVST/ToneSlant/source/ToneSlant.cpp +++ b/plugins/MacVST/ToneSlant/source/ToneSlant.cpp @@ -15,11 +15,8 @@ ToneSlant::ToneSlant(audioMasterCallback audioMaster) : A = 0.0; B = 0.0; for(int count = 0; count < 102; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;} - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/ToneSlant/source/ToneSlant.h b/plugins/MacVST/ToneSlant/source/ToneSlant.h index 655cc55..7c52bca 100755 --- a/plugins/MacVST/ToneSlant/source/ToneSlant.h +++ b/plugins/MacVST/ToneSlant/source/ToneSlant.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/ToneSlant/source/ToneSlantProc.cpp b/plugins/MacVST/ToneSlant/source/ToneSlantProc.cpp index b594b05..d78cfb5 100755 --- a/plugins/MacVST/ToneSlant/source/ToneSlantProc.cpp +++ b/plugins/MacVST/ToneSlant/source/ToneSlantProc.cpp @@ -14,9 +14,6 @@ void ToneSlant::processReplacing(float **inputs, float **outputs, VstInt32 sampl float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputSampleL; double inputSampleR; @@ -109,25 +106,14 @@ void ToneSlant::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleR += (correctionSampleR * applySlant); //our one math operation on the input data coming in - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -146,9 +132,6 @@ void ToneSlant::processDoubleReplacing(double **inputs, double **outputs, VstInt double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputSampleL; double inputSampleR; @@ -240,25 +223,16 @@ void ToneSlant::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleR += (correctionSampleR * applySlant); //our one math operation on the input data coming in - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/TransDesk/TransDesk.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/TransDesk/TransDesk.xcodeproj/christopherjohnson.pbxuser index e3ec9d4..4346de3 100755 --- a/plugins/MacVST/TransDesk/TransDesk.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/TransDesk/TransDesk.xcodeproj/christopherjohnson.pbxuser @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528463797; - PBXWorkspaceStateSaveDate = 528463797; + PBXPerProjectTemplateStateSaveDate = 569773315; + PBXWorkspaceStateSaveDate = 569773315; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { diff --git a/plugins/MacVST/TransDesk/TransDesk.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/TransDesk/TransDesk.xcodeproj/christopherjohnson.perspectivev3 index be4151f..a084408 100755 --- a/plugins/MacVST/TransDesk/TransDesk.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/TransDesk/TransDesk.xcodeproj/christopherjohnson.perspectivev3 @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7F801F7FB7C8007AB60F</string> + <string>8B79421021F60D0A006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7F811F7FB7C8007AB60F</string> + <string>8B79421121F60D0A006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7F821F7FB7C8007AB60F</string> + <string>8B79421221F60D0A006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528463816.43040597</real> + <real>569773322.06946695</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,7 +643,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7F831F7FB7C8007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/TransDesk/TransDesk.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/TransDesk/source/TransDesk.cpp b/plugins/MacVST/TransDesk/source/TransDesk.cpp index 24443bd..3f352f7 100755 --- a/plugins/MacVST/TransDesk/source/TransDesk.cpp +++ b/plugins/MacVST/TransDesk/source/TransDesk.cpp @@ -25,11 +25,8 @@ TransDesk::TransDesk(audioMasterCallback audioMaster) : lastOutSampleR = 0.0; lastSlewR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/TransDesk/source/TransDesk.h b/plugins/MacVST/TransDesk/source/TransDesk.h index b3b891d..5729b4c 100755 --- a/plugins/MacVST/TransDesk/source/TransDesk.h +++ b/plugins/MacVST/TransDesk/source/TransDesk.h @@ -51,11 +51,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff int gcount; diff --git a/plugins/MacVST/TransDesk/source/TransDeskProc.cpp b/plugins/MacVST/TransDesk/source/TransDeskProc.cpp index c7df5e8..c8b45c2 100755 --- a/plugins/MacVST/TransDesk/source/TransDeskProc.cpp +++ b/plugins/MacVST/TransDesk/source/TransDeskProc.cpp @@ -17,9 +17,6 @@ void TransDesk::processReplacing(float **inputs, float **outputs, VstInt32 sampl double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double intensity = 0.02198359; double depthA = 3.0; @@ -200,25 +197,14 @@ void TransDesk::processReplacing(float **inputs, float **outputs, VstInt32 sampl gcount--; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -240,9 +226,6 @@ void TransDesk::processDoubleReplacing(double **inputs, double **outputs, VstInt double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double intensity = 0.02198359; double depthA = 3.0; @@ -423,25 +406,16 @@ void TransDesk::processDoubleReplacing(double **inputs, double **outputs, VstInt gcount--; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Tremolo/Tremolo.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Tremolo/Tremolo.xcodeproj/christopherjohnson.pbxuser index eabc2fb..170e53c 100755 --- a/plugins/MacVST/Tremolo/Tremolo.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Tremolo/Tremolo.xcodeproj/christopherjohnson.pbxuser @@ -49,11 +49,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528463825; - PBXWorkspaceStateSaveDate = 528463825; + PBXPerProjectTemplateStateSaveDate = 569773339; + PBXWorkspaceStateSaveDate = 569773339; }; perUserProjectItems = { - 8B9D71CC1F7EFAE7007AB60F /* PBXTextBookmark */ = 8B9D71CC1F7EFAE7007AB60F /* PBXTextBookmark */; + 8B79422F21F60D22006E9731 /* PBXTextBookmark */ = 8B79422F21F60D22006E9731 /* PBXTextBookmark */; 8B9D7F9F1F7FB7DF007AB60F /* PBXTextBookmark */ = 8B9D7F9F1F7FB7DF007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -106,7 +106,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B9D71CC1F7EFAE7007AB60F /* PBXTextBookmark */ = { + 8B79422F21F60D22006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; name = "audioeffectx.cpp: 307"; diff --git a/plugins/MacVST/Tremolo/Tremolo.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Tremolo/Tremolo.xcodeproj/christopherjohnson.perspectivev3 index 16e3a4d..2a3782e 100755 --- a/plugins/MacVST/Tremolo/Tremolo.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Tremolo/Tremolo.xcodeproj/christopherjohnson.perspectivev3 @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D7F9F1F7FB7DF007AB60F</string> + <string>8B79422F21F60D22006E9731</string> <key>history</key> <array> - <string>8B9D71CC1F7EFAE7007AB60F</string> + <string>8B9D7F9F1F7FB7DF007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7FA01F7FB7DF007AB60F</string> + <string>8B79423021F60D22006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7FA11F7FB7DF007AB60F</string> + <string>8B79423121F60D22006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7FA21F7FB7DF007AB60F</string> + <string>8B79423221F60D22006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528463839.58097899</real> + <real>569773346.55622005</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,7 +651,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7FA31F7FB7DF007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/Tremolo/Tremolo.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/Tremolo/source/Tremolo.cpp b/plugins/MacVST/Tremolo/source/Tremolo.cpp index be5d06d..f0b649d 100755 --- a/plugins/MacVST/Tremolo/source/Tremolo.cpp +++ b/plugins/MacVST/Tremolo/source/Tremolo.cpp @@ -21,11 +21,8 @@ Tremolo::Tremolo(audioMasterCallback audioMaster) : depthAmount = 0.0; lastSpeed = 1000.0; lastDepth = 1000.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Tremolo/source/Tremolo.h b/plugins/MacVST/Tremolo/source/Tremolo.h index ea40aa6..11fc718 100755 --- a/plugins/MacVST/Tremolo/source/Tremolo.h +++ b/plugins/MacVST/Tremolo/source/Tremolo.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double sweep; diff --git a/plugins/MacVST/Tremolo/source/TremoloProc.cpp b/plugins/MacVST/Tremolo/source/TremoloProc.cpp index d0de7cc..d27dc86 100755 --- a/plugins/MacVST/Tremolo/source/TremoloProc.cpp +++ b/plugins/MacVST/Tremolo/source/TremoloProc.cpp @@ -17,9 +17,6 @@ void Tremolo::processReplacing(float **inputs, float **outputs, VstInt32 sampleF double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; speedChase = pow(A,4); depthChase = B; @@ -151,25 +148,14 @@ void Tremolo::processReplacing(float **inputs, float **outputs, VstInt32 sampleF inputSampleR = (drySampleR * (1-depth)) + (inputSampleR*depth); //end R - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -191,9 +177,6 @@ void Tremolo::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; speedChase = pow(A,4); depthChase = B; @@ -326,25 +309,16 @@ void Tremolo::processDoubleReplacing(double **inputs, double **outputs, VstInt32 inputSampleR = (drySampleR * (1-depth)) + (inputSampleR*depth); //end R - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.pbxuser index 39db978..f2588de 100755 --- a/plugins/MacVST/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.pbxuser @@ -49,11 +49,11 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 528463849; - PBXWorkspaceStateSaveDate = 528463849; + PBXPerProjectTemplateStateSaveDate = 569773377; + PBXWorkspaceStateSaveDate = 569773377; }; perUserProjectItems = { - 8B9D71EC1F7EFB47007AB60F /* PBXTextBookmark */ = 8B9D71EC1F7EFB47007AB60F /* PBXTextBookmark */; + 8B79424F21F60D4A006E9731 /* PBXTextBookmark */ = 8B79424F21F60D4A006E9731 /* PBXTextBookmark */; 8B9D7FBF1F7FB7FA007AB60F /* PBXTextBookmark */ = 8B9D7FBF1F7FB7FA007AB60F /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -106,7 +106,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B9D71EC1F7EFB47007AB60F /* PBXTextBookmark */ = { + 8B79424F21F60D4A006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; name = "audioeffectx.cpp: 307"; diff --git a/plugins/MacVST/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.perspectivev3 index b3bcad8..a09ec6b 100755 --- a/plugins/MacVST/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.perspectivev3 @@ -351,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B9D7FBF1F7FB7FA007AB60F</string> + <string>8B79424F21F60D4A006E9731</string> <key>history</key> <array> - <string>8B9D71EC1F7EFB47007AB60F</string> + <string>8B9D7FBF1F7FB7FA007AB60F</string> </array> </dict> <key>SplitCount</key> @@ -368,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 13}}</string> + <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> <string>422 271 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>13pt</string> + <string>0pt</string> </dict> <dict> <key>Proportion</key> - <string>428pt</string> + <string>441pt</string> <key>Tabs</key> <array> <dict> @@ -393,7 +393,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 401}}</string> + <string>{{10, 27}, {603, 414}}</string> <key>RubberWindowFrame</key> <string>422 271 810 487 0 0 1440 878 </string> </dict> @@ -477,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B9D7FC01F7FB7FA007AB60F</string> + <string>8B79425021F60D4A006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B9D7FC11F7FB7FA007AB60F</string> + <string>8B79425121F60D4A006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B9D7FC21F7FB7FA007AB60F</string> + <string>8B79425221F60D4A006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -634,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>528463866.70419401</real> + <real>569773386.273072</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -651,7 +651,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B9D7FC31F7FB7FA007AB60F</string> <string>/Users/christopherjohnson/Desktop/MacVST/TubeDesk/TubeDesk.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/MacVST/TubeDesk/source/TubeDesk.cpp b/plugins/MacVST/TubeDesk/source/TubeDesk.cpp index fc4bd75..5a7465c 100755 --- a/plugins/MacVST/TubeDesk/source/TubeDesk.cpp +++ b/plugins/MacVST/TubeDesk/source/TubeDesk.cpp @@ -25,11 +25,8 @@ TubeDesk::TubeDesk(audioMasterCallback audioMaster) : lastOutSampleR = 0.0; lastSlewR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/TubeDesk/source/TubeDesk.h b/plugins/MacVST/TubeDesk/source/TubeDesk.h index b41b283..fb15768 100755 --- a/plugins/MacVST/TubeDesk/source/TubeDesk.h +++ b/plugins/MacVST/TubeDesk/source/TubeDesk.h @@ -51,11 +51,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff int gcount; diff --git a/plugins/MacVST/TubeDesk/source/TubeDeskProc.cpp b/plugins/MacVST/TubeDesk/source/TubeDeskProc.cpp index 2636076..cccf6e2 100755 --- a/plugins/MacVST/TubeDesk/source/TubeDeskProc.cpp +++ b/plugins/MacVST/TubeDesk/source/TubeDeskProc.cpp @@ -17,9 +17,6 @@ void TubeDesk::processReplacing(float **inputs, float **outputs, VstInt32 sample double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double intensity = 0.4384938; double depthA = 549.0; @@ -199,25 +196,14 @@ void TubeDesk::processReplacing(float **inputs, float **outputs, VstInt32 sample gcount--; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -239,9 +225,6 @@ void TubeDesk::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double intensity = 0.4384938; double depthA = 549.0; @@ -421,25 +404,16 @@ void TubeDesk::processDoubleReplacing(double **inputs, double **outputs, VstInt3 gcount--; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/UnBox/UnBox.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/UnBox/UnBox.xcodeproj/christopherjohnson.pbxuser index d840507..0fc18df 100755 --- a/plugins/MacVST/UnBox/UnBox.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/UnBox/UnBox.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 557535066; - PBXWorkspaceStateSaveDate = 557535066; + PBXPerProjectTemplateStateSaveDate = 569773466; + PBXWorkspaceStateSaveDate = 569773466; }; perUserProjectItems = { - 8B6DBA77213B59C900E44739 /* XCBuildMessageTextBookmark */ = 8B6DBA77213B59C900E44739 /* XCBuildMessageTextBookmark */; 8B6DBA78213B59C900E44739 /* PBXTextBookmark */ = 8B6DBA78213B59C900E44739 /* PBXTextBookmark */; + 8B7942AD21F60DA4006E9731 /* PBXTextBookmark */ = 8B7942AD21F60DA4006E9731 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -78,9 +78,9 @@ }; 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {838, 19747}}"; + sepNavIntBoundsRect = "{{0, 0}, {838, 19877}}"; sepNavSelRange = "{10616, 0}"; - sepNavVisRange = "{10459, 399}"; + sepNavVisRange = "{10459, 280}"; sepNavWindowFrame = "{{15, 42}, {895, 831}}"; }; }; @@ -106,23 +106,24 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B6DBA77213B59C900E44739 /* XCBuildMessageTextBookmark */ = { + 8B6DBA78213B59C900E44739 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - comments = "Deprecated conversion from string constant to 'char*'"; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; - fallbackIsa = XCBuildMessageTextBookmark; - rLen = 1; - rLoc = 306; - rType = 1; + name = "audioeffectx.cpp: 307"; + rLen = 0; + rLoc = 10616; + rType = 0; + vrLen = 399; + vrLoc = 10459; }; - 8B6DBA78213B59C900E44739 /* PBXTextBookmark */ = { + 8B7942AD21F60DA4006E9731 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; name = "audioeffectx.cpp: 307"; rLen = 0; rLoc = 10616; rType = 0; - vrLen = 399; + vrLen = 280; vrLoc = 10459; }; 8D01CCC60486CAD60068D4B7 /* UnBox */ = { diff --git a/plugins/MacVST/UnBox/UnBox.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/UnBox/UnBox.xcodeproj/christopherjohnson.perspectivev3 index 6a3b9e1..d995ead 100755 --- a/plugins/MacVST/UnBox/UnBox.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/UnBox/UnBox.xcodeproj/christopherjohnson.perspectivev3 @@ -256,6 +256,8 @@ <key>Layout</key> <array> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -349,10 +351,10 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8B6DBA78213B59C900E44739</string> + <string>8B7942AD21F60DA4006E9731</string> <key>history</key> <array> - <string>8B6DBA77213B59C900E44739</string> + <string>8B6DBA78213B59C900E44739</string> </array> </dict> <key>SplitCount</key> @@ -366,18 +368,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 132}}</string> + <string>{{0, 0}, {603, 117}}</string> <key>RubberWindowFrame</key> <string>64 284 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>132pt</string> + <string>117pt</string> </dict> <dict> <key>Proportion</key> - <string>309pt</string> + <string>324pt</string> <key>Tabs</key> <array> <dict> @@ -391,7 +393,9 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 414}}</string> + <string>{{10, 27}, {603, 297}}</string> + <key>RubberWindowFrame</key> + <string>64 284 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -446,8 +450,6 @@ <dict> <key>Frame</key> <string>{{10, 27}, {603, 282}}</string> - <key>RubberWindowFrame</key> - <string>64 284 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXBuildResultsModule</string> @@ -475,11 +477,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B6DBA79213B59C900E44739</string> + <string>8B7942AE21F60DA4006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B6DBA7A213B59C900E44739</string> + <string>8B7942AF21F60DA4006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B6DBA7B213B59C900E44739</string> + <string>8B7942B021F60DA4006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -632,7 +634,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>557537737.84302604</real> + <real>569773476.89428103</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -649,7 +651,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>/Users/christopherjohnson/Desktop/UnBox/UnBox.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/UnBox/UnBox.xcodeproj</string> </array> <key>WindowString</key> <string>64 284 810 487 0 0 1440 878 </string> diff --git a/plugins/MacVST/UnBox/source/UnBoxProc.cpp b/plugins/MacVST/UnBox/source/UnBoxProc.cpp index 12133dc..3cb3aab 100755 --- a/plugins/MacVST/UnBox/source/UnBoxProc.cpp +++ b/plugins/MacVST/UnBox/source/UnBoxProc.cpp @@ -218,18 +218,14 @@ void UnBox::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra if (output != 1.0) {inputSampleL *= output; inputSampleR *= output;} - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -239,12 +235,6 @@ void UnBox::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void UnBox::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -458,18 +448,16 @@ void UnBox::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s if (output != 1.0) {inputSampleL *= output; inputSampleR *= output;} - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -479,10 +467,4 @@ void UnBox::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacVST/VariMu/VariMu.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/VariMu/VariMu.xcodeproj/christopherjohnson.pbxuser index 817d97b..26171e9 100755 --- a/plugins/MacVST/VariMu/VariMu.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/VariMu/VariMu.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* VariMu */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 553992948; - PBXWorkspaceStateSaveDate = 553992948; + PBXPerProjectTemplateStateSaveDate = 569773498; + PBXWorkspaceStateSaveDate = 569773498; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* VariMu */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/VariMu/VariMu.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/VariMu/VariMu.xcodeproj/christopherjohnson.perspectivev3 index 95718ee..1fd954d 100755 --- a/plugins/MacVST/VariMu/VariMu.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/VariMu/VariMu.xcodeproj/christopherjohnson.perspectivev3 @@ -323,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>50 341 810 487 0 0 1440 878 </string> + <string>398 267 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -362,7 +362,7 @@ <key>Frame</key> <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> - <string>50 341 810 487 0 0 1440 878 </string> + <string>398 267 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -387,7 +387,7 @@ <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> <key>RubberWindowFrame</key> - <string>50 341 810 487 0 0 1440 878 </string> + <string>398 267 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BBD1887210542F70015A233</string> + <string>8B7942CD21F60DC2006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BBD1888210542F70015A233</string> + <string>8B7942CE21F60DC2006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BBD1889210542F70015A233</string> + <string>8B7942CF21F60DC2006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>553992991.79695594</real> + <real>569773506.89082396</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -646,7 +646,7 @@ <string>/Users/christopherjohnson/Desktop/MacVST/VariMu/VariMu.xcodeproj</string> </array> <key>WindowString</key> - <string>50 341 810 487 0 0 1440 878 </string> + <string>398 267 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/VariMu/source/VariMuProc.cpp b/plugins/MacVST/VariMu/source/VariMuProc.cpp index b966cd8..323b5e4 100755 --- a/plugins/MacVST/VariMu/source/VariMuProc.cpp +++ b/plugins/MacVST/VariMu/source/VariMuProc.cpp @@ -233,18 +233,14 @@ void VariMu::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -254,12 +250,6 @@ void VariMu::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void VariMu::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -488,18 +478,16 @@ void VariMu::processDoubleReplacing(double **inputs, double **outputs, VstInt32 //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -509,10 +497,4 @@ void VariMu::processDoubleReplacing(double **inputs, double **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.pbxuser index cc6b613..2be57bf 100644..100755 --- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.pbxuser @@ -2,7 +2,7 @@ { 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; - activeTarget = 8D01CCC60486CAD60068D4B7 /* VoiceOfTheStarship */; + activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */; codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 538706768; - PBXWorkspaceStateSaveDate = 538706768; + PBXPerProjectTemplateStateSaveDate = 569773528; + PBXWorkspaceStateSaveDate = 569773528; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -102,7 +102,7 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8D01CCC60486CAD60068D4B7 /* VoiceOfTheStarship */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { activeExec = 0; }; } diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.perspectivev3 index 2952204..91123cf 100644..100755 --- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.perspectivev3 @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B4E5825201C035700B5DC2A</string> + <string>8B7942EC21F60DE2006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B4E5826201C035700B5DC2A</string> + <string>8B7942ED21F60DE2006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B4E5827201C035700B5DC2A</string> + <string>8B7942EE21F60DE2006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>538709213.91348803</real> + <real>569773538.74268901</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,7 +643,7 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>/Users/christopherjohnson/Desktop/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj</string> + <string>/Users/christopherjohnson/Desktop/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj</string> </array> <key>WindowString</key> <string>123 420 688 434 0 0 1440 878 </string> diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.pbxproj b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.pbxproj index 6a80a71..1ae3b0f 100755 --- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.pbxproj +++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.pbxproj @@ -1894,7 +1894,7 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* VoiceOfTheStarship */ = { + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { isa = PBXNativeTarget; buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "VoiceOfTheStarship" */; buildPhases = ( @@ -1947,7 +1947,7 @@ ); projectRoot = ""; targets = ( - 8D01CCC60486CAD60068D4B7 /* VoiceOfTheStarship */, + 8D01CCC60486CAD60068D4B7 /* AudioUnit */, ); }; /* End PBXProject section */ diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/contents.xcworkspacedata index a80c038..a80c038 100644..100755 --- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate Binary files differindex 5c38f94..5c38f94 100644..100755 --- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate +++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate Binary files differindex 314de0f..314de0f 100644..100755 --- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate +++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/spiadmin.mode1v3 index c572326..c572326 100644..100755 --- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/spiadmin.mode1v3 +++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/spiadmin.mode1v3 diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/spiadmin.pbxuser index df94780..df94780 100644..100755 --- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/spiadmin.pbxuser +++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/spiadmin.pbxuser diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme index 8ee693f..8ee693f 100644..100755 --- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme +++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist index 5bccbcb..5bccbcb 100644..100755 --- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist index a7bdd62..a7bdd62 100644..100755 --- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme index 0df2de4..0df2de4 100644..100755 --- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme +++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme diff --git a/plugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarship.cpp b/plugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarship.cpp index c30bd47..19f1d94 100755 --- a/plugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarship.cpp +++ b/plugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarship.cpp @@ -28,11 +28,8 @@ VoiceOfTheStarship::VoiceOfTheStarship(audioMasterCallback audioMaster) : for(int count = 0; count < 11; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;} lastAlgorithm = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarship.h b/plugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarship.h index febb344..519923b 100755 --- a/plugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarship.h +++ b/plugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarship.h @@ -73,11 +73,8 @@ private: int lastAlgorithm; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarshipProc.cpp b/plugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarshipProc.cpp index 32979d0..bbb14fa 100755 --- a/plugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarshipProc.cpp +++ b/plugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarshipProc.cpp @@ -79,9 +79,6 @@ void VoiceOfTheStarship::processReplacing(float **inputs, float **outputs, VstIn double inputSampleL; double inputSampleR; - float fpTemp; - double fpOld = 0.618033988749894848204586; //golden ratio! - double fpNew = 1.0 - fpOld; while (--sampleFrames >= 0) { @@ -181,25 +178,14 @@ void VoiceOfTheStarship::processReplacing(float **inputs, float **outputs, VstIn filterflip = !filterflip; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -283,9 +269,6 @@ void VoiceOfTheStarship::processDoubleReplacing(double **inputs, double **output double inputSampleL; double inputSampleR; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; while (--sampleFrames >= 0) { @@ -384,25 +367,16 @@ void VoiceOfTheStarship::processDoubleReplacing(double **inputs, double **output flipR = !flipR; filterflip = !filterflip; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/Wider/Wider.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Wider/Wider.xcodeproj/christopherjohnson.pbxuser index 83caea6..5391b9e 100755 --- a/plugins/MacVST/Wider/Wider.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Wider/Wider.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,12 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 546573996; - PBXWorkspaceStateSaveDate = 546573996; + PBXPerProjectTemplateStateSaveDate = 569773559; + PBXWorkspaceStateSaveDate = 569773559; }; perUserProjectItems = { + 8B79430B21F60E03006E9731 /* PBXTextBookmark */ = 8B79430B21F60E03006E9731 /* PBXTextBookmark */; 8BC5D04620940E2D0058B257 /* PBXTextBookmark */ = 8BC5D04620940E2D0058B257 /* PBXTextBookmark */; - 8BC5D07D20940F320058B257 /* PBXTextBookmark */ = 8BC5D07D20940F320058B257 /* PBXTextBookmark */; 8BC5D07E20940F320058B257 /* PBXTextBookmark */ = 8BC5D07E20940F320058B257 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; @@ -87,9 +87,9 @@ }; 24D8286F09A914000093AEF8 /* WiderProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {852, 4394}}"; + sepNavIntBoundsRect = "{{0, 0}, {691, 3926}}"; sepNavSelRange = "{7057, 0}"; - sepNavVisRange = "{6953, 155}"; + sepNavVisRange = "{6846, 405}"; sepNavWindowFrame = "{{11, 47}, {895, 831}}"; }; }; @@ -107,6 +107,16 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; + 8B79430B21F60E03006E9731 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 24D8286F09A914000093AEF8 /* WiderProc.cpp */; + name = "WiderProc.cpp: 203"; + rLen = 0; + rLoc = 7057; + rType = 0; + vrLen = 405; + vrLoc = 6846; + }; 8BC5D04620940E2D0058B257 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; @@ -117,16 +127,6 @@ vrLen = 280; vrLoc = 10459; }; - 8BC5D07D20940F320058B257 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 24D8286F09A914000093AEF8 /* WiderProc.cpp */; - name = "WiderProc.cpp: 209"; - rLen = 0; - rLoc = 7057; - rType = 0; - vrLen = 155; - vrLoc = 6953; - }; 8BC5D07E20940F320058B257 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* WiderProc.cpp */; diff --git a/plugins/MacVST/Wider/Wider.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Wider/Wider.xcodeproj/christopherjohnson.perspectivev3 index 733a26c..f44db5a 100755 --- a/plugins/MacVST/Wider/Wider.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Wider/Wider.xcodeproj/christopherjohnson.perspectivev3 @@ -351,11 +351,11 @@ <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>8BC5D07E20940F320058B257</string> + <string>8B79430B21F60E03006E9731</string> <key>history</key> <array> <string>8BC5D04620940E2D0058B257</string> - <string>8BC5D07D20940F320058B257</string> + <string>8BC5D07E20940F320058B257</string> </array> </dict> <key>SplitCount</key> @@ -369,18 +369,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {603, 102}}</string> + <string>{{0, 0}, {603, 86}}</string> <key>RubberWindowFrame</key> <string>29 317 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>102pt</string> + <string>86pt</string> </dict> <dict> <key>Proportion</key> - <string>339pt</string> + <string>355pt</string> <key>Tabs</key> <array> <dict> @@ -394,7 +394,7 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{10, 27}, {603, 312}}</string> + <string>{{10, 27}, {603, 328}}</string> <key>RubberWindowFrame</key> <string>29 317 810 487 0 0 1440 878 </string> </dict> @@ -478,11 +478,11 @@ </array> <key>TableOfContents</key> <array> - <string>8BC5D07F20940F320058B257</string> + <string>8B79430C21F60E03006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8BC5D08020940F320058B257</string> + <string>8B79430D21F60E03006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8BC5D08120940F320058B257</string> + <string>8B79430E21F60E03006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -635,7 +635,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>546574130.26758397</real> + <real>569773571.22399402</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> diff --git a/plugins/MacVST/Wider/source/Wider.cpp b/plugins/MacVST/Wider/source/Wider.cpp index c1e57d0..26d4d47 100755 --- a/plugins/MacVST/Wider/source/Wider.cpp +++ b/plugins/MacVST/Wider/source/Wider.cpp @@ -17,11 +17,8 @@ Wider::Wider(audioMasterCallback audioMaster) : C = 1.0; for(int fcount = 0; fcount < 4098; fcount++) {p[fcount] = 0.0;} count = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/MacVST/Wider/source/Wider.h b/plugins/MacVST/Wider/source/Wider.h index 8b04cfb..6a6a2df 100755 --- a/plugins/MacVST/Wider/source/Wider.h +++ b/plugins/MacVST/Wider/source/Wider.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double p[4099]; diff --git a/plugins/MacVST/Wider/source/WiderProc.cpp b/plugins/MacVST/Wider/source/WiderProc.cpp index 618e651..f90fa21 100755 --- a/plugins/MacVST/Wider/source/WiderProc.cpp +++ b/plugins/MacVST/Wider/source/WiderProc.cpp @@ -17,9 +17,6 @@ void Wider::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -141,25 +138,14 @@ void Wider::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra inputSampleL = (drySampleL * dry) + ((mid+side) * wet); inputSampleR = (drySampleR * dry) + ((mid-side) * wet); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -181,9 +167,6 @@ void Wider::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -305,25 +288,16 @@ void Wider::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s inputSampleL = (drySampleL * dry) + ((mid+side) * wet); inputSampleR = (drySampleR * dry) + ((mid-side) * wet); - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/MacVST/uLawDecode/source/uLawDecodeProc.cpp b/plugins/MacVST/uLawDecode/source/uLawDecodeProc.cpp index a78b3c2..1835623 100755 --- a/plugins/MacVST/uLawDecode/source/uLawDecodeProc.cpp +++ b/plugins/MacVST/uLawDecode/source/uLawDecodeProc.cpp @@ -88,18 +88,14 @@ void uLawDecode::processReplacing(float **inputs, float **outputs, VstInt32 samp inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -109,12 +105,6 @@ void uLawDecode::processReplacing(float **inputs, float **outputs, VstInt32 samp *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void uLawDecode::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -198,18 +188,16 @@ void uLawDecode::processDoubleReplacing(double **inputs, double **outputs, VstIn inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -219,10 +207,4 @@ void uLawDecode::processDoubleReplacing(double **inputs, double **outputs, VstIn *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacVST/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.pbxuser index a221ade..78e474f 100755 --- a/plugins/MacVST/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.pbxuser @@ -75,8 +75,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 561241927; - PBXWorkspaceStateSaveDate = 561241927; + PBXPerProjectTemplateStateSaveDate = 569773408; + PBXWorkspaceStateSaveDate = 569773408; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { diff --git a/plugins/MacVST/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.perspectivev3 index 11e6474..45637a5 100755 --- a/plugins/MacVST/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.perspectivev3 @@ -323,7 +323,7 @@ <real>185</real> </array> <key>RubberWindowFrame</key> - <string>24 356 810 487 0 0 1440 878 </string> + <string>426 311 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -362,7 +362,7 @@ <key>Frame</key> <string>{{0, 0}, {603, 0}}</string> <key>RubberWindowFrame</key> - <string>24 356 810 487 0 0 1440 878 </string> + <string>426 311 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -387,7 +387,7 @@ <key>Frame</key> <string>{{10, 27}, {603, 414}}</string> <key>RubberWindowFrame</key> - <string>24 356 810 487 0 0 1440 878 </string> + <string>426 311 810 487 0 0 1440 878 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B2721E12173DF5E00396442</string> + <string>8B79426F21F60D67006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B2721E22173DF5E00396442</string> + <string>8B79427021F60D67006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B2721E32173DF5E00396442</string> + <string>8B79427121F60D67006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -646,7 +646,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>561241950.77135801</real> + <real>569773415.70611095</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -663,11 +663,10 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B2721E42173DF5E00396442</string> <string>/Users/christopherjohnson/Desktop/MacVST/uLawDecode/uLawDecode.xcodeproj</string> </array> <key>WindowString</key> - <string>24 356 810 487 0 0 1440 878 </string> + <string>426 311 810 487 0 0 1440 878 </string> <key>WindowToolsV3</key> <array> <dict> diff --git a/plugins/MacVST/uLawEncode/source/uLawEncodeProc.cpp b/plugins/MacVST/uLawEncode/source/uLawEncodeProc.cpp index 3d86a7f..c5dd74d 100755 --- a/plugins/MacVST/uLawEncode/source/uLawEncodeProc.cpp +++ b/plugins/MacVST/uLawEncode/source/uLawEncodeProc.cpp @@ -88,18 +88,14 @@ void uLawEncode::processReplacing(float **inputs, float **outputs, VstInt32 samp inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -109,12 +105,6 @@ void uLawEncode::processReplacing(float **inputs, float **outputs, VstInt32 samp *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void uLawEncode::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -198,18 +188,16 @@ void uLawEncode::processDoubleReplacing(double **inputs, double **outputs, VstIn inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -219,10 +207,4 @@ void uLawEncode::processDoubleReplacing(double **inputs, double **outputs, VstIn *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/MacVST/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.pbxuser index 37fd5e3..4382acd 100755 --- a/plugins/MacVST/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.pbxuser @@ -49,8 +49,8 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 561241903; - PBXWorkspaceStateSaveDate = 561241903; + PBXPerProjectTemplateStateSaveDate = 569773438; + PBXWorkspaceStateSaveDate = 569773438; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { diff --git a/plugins/MacVST/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.perspectivev3 index 01f5c6f..6742d70 100755 --- a/plugins/MacVST/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.perspectivev3 @@ -469,11 +469,11 @@ </array> <key>TableOfContents</key> <array> - <string>8B2721BE2173DF3C00396442</string> + <string>8B79428E21F60D86006E9731</string> <string>1CA23ED40692098700951B8B</string> - <string>8B2721BF2173DF3C00396442</string> + <string>8B79428F21F60D86006E9731</string> <string>8B0237581D42B1C400E1E8C8</string> - <string>8B2721C02173DF3C00396442</string> + <string>8B79429021F60D86006E9731</string> <string>1CA23EDF0692099D00951B8B</string> <string>1CA23EE00692099D00951B8B</string> <string>1CA23EE10692099D00951B8B</string> @@ -626,7 +626,7 @@ <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> - <real>561241916.28170097</real> + <real>569773446.35580504</real> <key>ToolbarConfigUserDefaultsMinorVersion</key> <string>2</string> <key>ToolbarDisplayMode</key> @@ -643,7 +643,6 @@ <integer>5</integer> <key>WindowOrderList</key> <array> - <string>8B2721C12173DF3C00396442</string> <string>/Users/christopherjohnson/Desktop/MacVST/uLawEncode/uLawEncode.xcodeproj</string> </array> <key>WindowString</key> diff --git a/plugins/WinVST/ADClip7/.vs/VSTProject/v14/.suo b/plugins/WinVST/ADClip7/.vs/VSTProject/v14/.suo Binary files differindex 41b2402..51c82cf 100755 --- a/plugins/WinVST/ADClip7/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/ADClip7/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/ADClip7/ADClip7.cpp b/plugins/WinVST/ADClip7/ADClip7.cpp index fb6d6c6..7ebc817 100755 --- a/plugins/WinVST/ADClip7/ADClip7.cpp +++ b/plugins/WinVST/ADClip7/ADClip7.cpp @@ -30,11 +30,8 @@ ADClip7::ADClip7(audioMasterCallback audioMaster) : iirLowsBL = 0.0; iirLowsBR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/ADClip7/ADClip7.h b/plugins/WinVST/ADClip7/ADClip7.h index f20d3fb..f0cde6c 100755 --- a/plugins/WinVST/ADClip7/ADClip7.h +++ b/plugins/WinVST/ADClip7/ADClip7.h @@ -55,11 +55,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff long double lastSampleL; long double lastSampleR; diff --git a/plugins/WinVST/ADClip7/ADClip7Proc.cpp b/plugins/WinVST/ADClip7/ADClip7Proc.cpp index 2705d61..abc9909 100755 --- a/plugins/WinVST/ADClip7/ADClip7Proc.cpp +++ b/plugins/WinVST/ADClip7/ADClip7Proc.cpp @@ -17,10 +17,8 @@ void ADClip7::processReplacing(float **inputs, float **outputs, VstInt32 sampleF double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + long double fpNew = 1.0 - fpOld; double inputGain = pow(10.0,(A*18.0)/20.0); double softness = B * fpNew; double hardness = 1.0 - softness; @@ -449,25 +447,14 @@ void ADClip7::processReplacing(float **inputs, float **outputs, VstInt32 sampleF if (inputSampleR < -refclipR) inputSampleR = -refclipR; //final iron bar - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -489,10 +476,8 @@ void ADClip7::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + long double fpNew = 1.0 - fpOld; double inputGain = pow(10.0,(A*18.0)/20.0); double softness = B * fpNew; double hardness = 1.0 - softness; @@ -922,25 +907,16 @@ void ADClip7::processDoubleReplacing(double **inputs, double **outputs, VstInt32 if (inputSampleR < -refclipR) inputSampleR = -refclipR; //final iron bar - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/ADT/.vs/VSTProject/v14/.suo b/plugins/WinVST/ADT/.vs/VSTProject/v14/.suo Binary files differindex bf5ce54..60acd7c 100755 --- a/plugins/WinVST/ADT/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/ADT/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/ADT/ADTProc.cpp b/plugins/WinVST/ADT/ADTProc.cpp index f963f2f..74d23dd 100755 --- a/plugins/WinVST/ADT/ADTProc.cpp +++ b/plugins/WinVST/ADT/ADTProc.cpp @@ -156,18 +156,14 @@ void ADT::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame if (output < 1.0) {inputSampleL *= output; inputSampleR *= output;} - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -177,12 +173,6 @@ void ADT::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void ADT::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -334,18 +324,16 @@ void ADT::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam if (output < 1.0) {inputSampleL *= output; inputSampleR *= output;} - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -355,10 +343,4 @@ void ADT::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/WinVST/AQuickVoiceClip/.vs/VSTProject/v14/.suo b/plugins/WinVST/AQuickVoiceClip/.vs/VSTProject/v14/.suo Binary files differindex 42a754f..c1193f7 100755 --- a/plugins/WinVST/AQuickVoiceClip/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/AQuickVoiceClip/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/AQuickVoiceClip/AQuickVoiceClip.cpp b/plugins/WinVST/AQuickVoiceClip/AQuickVoiceClip.cpp index 9b5ea81..9b84221 100755 --- a/plugins/WinVST/AQuickVoiceClip/AQuickVoiceClip.cpp +++ b/plugins/WinVST/AQuickVoiceClip/AQuickVoiceClip.cpp @@ -57,11 +57,8 @@ AQuickVoiceClip::AQuickVoiceClip(audioMasterCallback audioMaster) : ataK4 = 0.886; //remainder of interpolated dry, adds up to 1.0 ataK5 = 0.431; //subtract this much prev. diff sample, brightens. 0.431 becomes flat - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/AQuickVoiceClip/AQuickVoiceClip.h b/plugins/WinVST/AQuickVoiceClip/AQuickVoiceClip.h index dc8f5fa..40cfab2 100755 --- a/plugins/WinVST/AQuickVoiceClip/AQuickVoiceClip.h +++ b/plugins/WinVST/AQuickVoiceClip/AQuickVoiceClip.h @@ -115,11 +115,8 @@ private: double RiirSampleD; bool flip; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/AQuickVoiceClip/AQuickVoiceClipProc.cpp b/plugins/WinVST/AQuickVoiceClip/AQuickVoiceClipProc.cpp index 69dc283..cc282b6 100755 --- a/plugins/WinVST/AQuickVoiceClip/AQuickVoiceClipProc.cpp +++ b/plugins/WinVST/AQuickVoiceClip/AQuickVoiceClipProc.cpp @@ -41,9 +41,6 @@ void AQuickVoiceClip::processReplacing(float **inputs, float **outputs, VstInt32 double RoutputSample; double RdrySample; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -410,25 +407,14 @@ void AQuickVoiceClip::processReplacing(float **inputs, float **outputs, VstInt32 if (LlpDepth < 0.0) LlpDepth = 0.0; if (RlpDepth < 0.0) RlpDepth = 0.0; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither inputSampleL *= (1.0-LmaxRecent); inputSampleR *= (1.0-RmaxRecent); @@ -487,9 +473,6 @@ void AQuickVoiceClip::processDoubleReplacing(double **inputs, double **outputs, double RoutputSample; double RdrySample; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -856,25 +839,16 @@ void AQuickVoiceClip::processDoubleReplacing(double **inputs, double **outputs, if (LlpDepth < 0.0) LlpDepth = 0.0; if (RlpDepth < 0.0) RlpDepth = 0.0; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither inputSampleL *= (1.0-LmaxRecent); inputSampleR *= (1.0-RmaxRecent); diff --git a/plugins/WinVST/Acceleration/.vs/Console4Channel64/v14/.suo b/plugins/WinVST/Acceleration/.vs/Console4Channel64/v14/.suo Binary files differindex 777b846..777b846 100644..100755 --- a/plugins/WinVST/Acceleration/.vs/Console4Channel64/v14/.suo +++ b/plugins/WinVST/Acceleration/.vs/Console4Channel64/v14/.suo diff --git a/plugins/WinVST/Acceleration/.vs/VSTProject/v14/.suo b/plugins/WinVST/Acceleration/.vs/VSTProject/v14/.suo Binary files differindex 734c0c5..2ff1d0a 100644..100755 --- a/plugins/WinVST/Acceleration/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Acceleration/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Acceleration/Acceleration.cpp b/plugins/WinVST/Acceleration/Acceleration.cpp index f20c8f2..b2721d9 100644..100755 --- a/plugins/WinVST/Acceleration/Acceleration.cpp +++ b/plugins/WinVST/Acceleration/Acceleration.cpp @@ -23,11 +23,8 @@ Acceleration::Acceleration(audioMasterCallback audioMaster) : o1R = o2R = o3R = 0.0; m1R = m2R = desR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Acceleration/Acceleration.h b/plugins/WinVST/Acceleration/Acceleration.h index a152e25..02a3760 100644..100755 --- a/plugins/WinVST/Acceleration/Acceleration.h +++ b/plugins/WinVST/Acceleration/Acceleration.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double ataLastOutL; double s1L; diff --git a/plugins/WinVST/Acceleration/AccelerationProc.cpp b/plugins/WinVST/Acceleration/AccelerationProc.cpp index 4785e37..0151dbe 100644..100755 --- a/plugins/WinVST/Acceleration/AccelerationProc.cpp +++ b/plugins/WinVST/Acceleration/AccelerationProc.cpp @@ -17,9 +17,6 @@ void Acceleration::processReplacing(float **inputs, float **outputs, VstInt32 sa double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double intensity = pow(A,3)*(32/overallscale); double wet = B; @@ -135,25 +132,14 @@ void Acceleration::processReplacing(float **inputs, float **outputs, VstInt32 sa inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -175,9 +161,6 @@ void Acceleration::processDoubleReplacing(double **inputs, double **outputs, Vst double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double intensity = pow(A,3)*(32/overallscale); double wet = B; @@ -293,25 +276,16 @@ void Acceleration::processDoubleReplacing(double **inputs, double **outputs, Vst inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Acceleration/VSTProject.sln b/plugins/WinVST/Acceleration/VSTProject.sln index 694b424..694b424 100644..100755 --- a/plugins/WinVST/Acceleration/VSTProject.sln +++ b/plugins/WinVST/Acceleration/VSTProject.sln diff --git a/plugins/WinVST/Acceleration/VSTProject.vcxproj b/plugins/WinVST/Acceleration/VSTProject.vcxproj index 3a80f39..3a80f39 100644..100755 --- a/plugins/WinVST/Acceleration/VSTProject.vcxproj +++ b/plugins/WinVST/Acceleration/VSTProject.vcxproj diff --git a/plugins/WinVST/Acceleration/VSTProject.vcxproj.filters b/plugins/WinVST/Acceleration/VSTProject.vcxproj.filters index 8e2ce84..8e2ce84 100644..100755 --- a/plugins/WinVST/Acceleration/VSTProject.vcxproj.filters +++ b/plugins/WinVST/Acceleration/VSTProject.vcxproj.filters diff --git a/plugins/WinVST/Acceleration/VSTProject.vcxproj.user b/plugins/WinVST/Acceleration/VSTProject.vcxproj.user index 2216267..2216267 100644..100755 --- a/plugins/WinVST/Acceleration/VSTProject.vcxproj.user +++ b/plugins/WinVST/Acceleration/VSTProject.vcxproj.user diff --git a/plugins/WinVST/Acceleration/vstplug.def b/plugins/WinVST/Acceleration/vstplug.def index 5bf499a..5bf499a 100644..100755 --- a/plugins/WinVST/Acceleration/vstplug.def +++ b/plugins/WinVST/Acceleration/vstplug.def diff --git a/plugins/WinVST/Air/.vs/VSTProject/v14/.suo b/plugins/WinVST/Air/.vs/VSTProject/v14/.suo Binary files differindex 5e12ea1..50bebe3 100755 --- a/plugins/WinVST/Air/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Air/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Air/Air.cpp b/plugins/WinVST/Air/Air.cpp index ebe8adc..ea52c26 100755 --- a/plugins/WinVST/Air/Air.cpp +++ b/plugins/WinVST/Air/Air.cpp @@ -61,11 +61,8 @@ Air::Air(audioMasterCallback audioMaster) : D = 0.0; E = 1.0; F = 1.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Air/Air.h b/plugins/WinVST/Air/Air.h index 00c0b76..a713cf2 100755 --- a/plugins/WinVST/Air/Air.h +++ b/plugins/WinVST/Air/Air.h @@ -100,11 +100,8 @@ private: bool flop; int count; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/Air/AirProc.cpp b/plugins/WinVST/Air/AirProc.cpp index f73e7d8..f5eb39f 100755 --- a/plugins/WinVST/Air/AirProc.cpp +++ b/plugins/WinVST/Air/AirProc.cpp @@ -22,9 +22,6 @@ void Air::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame double wet = F; double dry = 1.0-wet; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -260,25 +257,14 @@ void Air::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -305,9 +291,6 @@ void Air::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam double wet = F; double dry = 1.0-wet; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -543,25 +526,16 @@ void Air::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/AtmosphereBuss/.vs/VSTProject/v14/.suo b/plugins/WinVST/AtmosphereBuss/.vs/VSTProject/v14/.suo Binary files differindex 48715fd..c97c439 100755 --- a/plugins/WinVST/AtmosphereBuss/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/AtmosphereBuss/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/AtmosphereBuss/AtmosphereBussProc.cpp b/plugins/WinVST/AtmosphereBuss/AtmosphereBussProc.cpp index 6530a7e..16d7a31 100755 --- a/plugins/WinVST/AtmosphereBuss/AtmosphereBussProc.cpp +++ b/plugins/WinVST/AtmosphereBuss/AtmosphereBussProc.cpp @@ -13,7 +13,6 @@ void AtmosphereBuss::processReplacing(float **inputs, float **outputs, VstInt32 float* in2 = inputs[1]; float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); @@ -250,18 +249,14 @@ void AtmosphereBuss::processReplacing(float **inputs, float **outputs, VstInt32 lastSampleAR = drySampleR; //store the raw R input sample again for use next time - //noise shaping to 32-bit floating point - fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -271,12 +266,6 @@ void AtmosphereBuss::processReplacing(float **inputs, float **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void AtmosphereBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -285,7 +274,6 @@ void AtmosphereBuss::processDoubleReplacing(double **inputs, double **outputs, V double* in2 = inputs[1]; double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); @@ -522,18 +510,16 @@ void AtmosphereBuss::processDoubleReplacing(double **inputs, double **outputs, V lastSampleAR = drySampleR; //store the raw R input sample again for use next time - //noise shaping to 64-bit floating point - fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -543,10 +529,4 @@ void AtmosphereBuss::processDoubleReplacing(double **inputs, double **outputs, V *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. }
\ No newline at end of file diff --git a/plugins/WinVST/AtmosphereChannel/.vs/VSTProject/v14/.suo b/plugins/WinVST/AtmosphereChannel/.vs/VSTProject/v14/.suo Binary files differindex 76526b8..c7e4ab5 100755 --- a/plugins/WinVST/AtmosphereChannel/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/AtmosphereChannel/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/AtmosphereChannel/AtmosphereChannelProc.cpp b/plugins/WinVST/AtmosphereChannel/AtmosphereChannelProc.cpp index 97038e8..bbdf44c 100755 --- a/plugins/WinVST/AtmosphereChannel/AtmosphereChannelProc.cpp +++ b/plugins/WinVST/AtmosphereChannel/AtmosphereChannelProc.cpp @@ -13,7 +13,6 @@ void AtmosphereChannel::processReplacing(float **inputs, float **outputs, VstInt float* in2 = inputs[1]; float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); @@ -245,18 +244,14 @@ void AtmosphereChannel::processReplacing(float **inputs, float **outputs, VstInt lastSampleAR = drySampleR; //store the raw R input sample again for use next time - //noise shaping to 32-bit floating point - fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -266,12 +261,6 @@ void AtmosphereChannel::processReplacing(float **inputs, float **outputs, VstInt *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void AtmosphereChannel::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -280,7 +269,6 @@ void AtmosphereChannel::processDoubleReplacing(double **inputs, double **outputs double* in2 = inputs[1]; double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); @@ -512,18 +500,16 @@ void AtmosphereChannel::processDoubleReplacing(double **inputs, double **outputs lastSampleAR = drySampleR; //store the raw R input sample again for use next time - //noise shaping to 64-bit floating point - fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -533,10 +519,4 @@ void AtmosphereChannel::processDoubleReplacing(double **inputs, double **outputs *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. }
\ No newline at end of file diff --git a/plugins/WinVST/Aura/.vs/VSTProject/v14/.suo b/plugins/WinVST/Aura/.vs/VSTProject/v14/.suo Binary files differindex 885f4c3..ef870fa 100755 --- a/plugins/WinVST/Aura/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Aura/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Aura/Aura.cpp b/plugins/WinVST/Aura/Aura.cpp index d011564..8663d3b 100755 --- a/plugins/WinVST/Aura/Aura.cpp +++ b/plugins/WinVST/Aura/Aura.cpp @@ -24,11 +24,8 @@ Aura::Aura(audioMasterCallback audioMaster) : lastSampleR = 0.0; previousVelocityR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Aura/Aura.h b/plugins/WinVST/Aura/Aura.h index 557169d..22d4653 100755 --- a/plugins/WinVST/Aura/Aura.h +++ b/plugins/WinVST/Aura/Aura.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff long double lastSampleL; double previousVelocityL; diff --git a/plugins/WinVST/Aura/AuraProc.cpp b/plugins/WinVST/Aura/AuraProc.cpp index daf54d6..089a873 100755 --- a/plugins/WinVST/Aura/AuraProc.cpp +++ b/plugins/WinVST/Aura/AuraProc.cpp @@ -14,9 +14,6 @@ void Aura::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double correctionL; double correctionR; @@ -211,25 +208,14 @@ void Aura::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -248,9 +234,6 @@ void Aura::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double correctionL; double correctionR; @@ -445,25 +428,16 @@ void Aura::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Average/.vs/VSTProject/v14/.suo b/plugins/WinVST/Average/.vs/VSTProject/v14/.suo Binary files differindex 24b500e..832bbaa 100755 --- a/plugins/WinVST/Average/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Average/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Average/Average.cpp b/plugins/WinVST/Average/Average.cpp index 945c76c..2f39ca1 100755 --- a/plugins/WinVST/Average/Average.cpp +++ b/plugins/WinVST/Average/Average.cpp @@ -17,11 +17,8 @@ Average::Average(audioMasterCallback audioMaster) : for(int count = 0; count < 11; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;} - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Average/Average.h b/plugins/WinVST/Average/Average.h index 7e4b25e..9932e99 100755 --- a/plugins/WinVST/Average/Average.h +++ b/plugins/WinVST/Average/Average.h @@ -57,11 +57,8 @@ private: double f[11]; double bR[11]; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/Average/AverageProc.cpp b/plugins/WinVST/Average/AverageProc.cpp index 2b1c355..17f4783 100755 --- a/plugins/WinVST/Average/AverageProc.cpp +++ b/plugins/WinVST/Average/AverageProc.cpp @@ -14,9 +14,6 @@ void Average::processReplacing(float **inputs, float **outputs, VstInt32 sampleF float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double correctionSample; double accumulatorSampleL; @@ -154,25 +151,14 @@ void Average::processReplacing(float **inputs, float **outputs, VstInt32 sampleF //in the floating point system. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -189,12 +175,7 @@ void Average::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double* in1 = inputs[0]; double* in2 = inputs[1]; double* out1 = outputs[0]; - double* out2 = outputs[1]; - - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + double* out2 = outputs[1]; double correctionSample; double accumulatorSampleL; double accumulatorSampleR; @@ -330,25 +311,16 @@ void Average::processDoubleReplacing(double **inputs, double **outputs, VstInt32 //if it 'won't change anything' but our sample might be at a very different scaling //in the floating point system. - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/BassKit/.vs/VSTProject/v14/.suo b/plugins/WinVST/BassKit/.vs/VSTProject/v14/.suo Binary files differindex 8b0a466..adef4ae 100755 --- a/plugins/WinVST/BassKit/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/BassKit/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/BassKit/BassKitProc.cpp b/plugins/WinVST/BassKit/BassKitProc.cpp index df3310e..9199c82 100755 --- a/plugins/WinVST/BassKit/BassKitProc.cpp +++ b/plugins/WinVST/BassKit/BassKitProc.cpp @@ -204,18 +204,14 @@ void BassKit::processReplacing(float **inputs, float **outputs, VstInt32 sampleF bflip++; if (bflip < 1 || bflip > 3) bflip = 1; - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -225,12 +221,6 @@ void BassKit::processReplacing(float **inputs, float **outputs, VstInt32 sampleF *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void BassKit::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -430,18 +420,16 @@ void BassKit::processDoubleReplacing(double **inputs, double **outputs, VstInt32 bflip++; if (bflip < 1 || bflip > 3) bflip = 1; - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -451,10 +439,4 @@ void BassKit::processDoubleReplacing(double **inputs, double **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/WinVST/BitGlitter/.vs/VSTProject/v14/.suo b/plugins/WinVST/BitGlitter/.vs/VSTProject/v14/.suo Binary files differindex 22c8c6e..6d68229 100755 --- a/plugins/WinVST/BitGlitter/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/BitGlitter/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/BitGlitter/BitGlitter.cpp b/plugins/WinVST/BitGlitter/BitGlitter.cpp index 7e9cfdb..a1e1a9b 100755 --- a/plugins/WinVST/BitGlitter/BitGlitter.cpp +++ b/plugins/WinVST/BitGlitter/BitGlitter.cpp @@ -17,6 +17,9 @@ BitGlitter::BitGlitter(audioMasterCallback audioMaster) : C = 0.5; D = 1.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + ataLastSampleL = 0.0; ataHalfwaySampleL = 0.0; lastSampleL = 0.0; diff --git a/plugins/WinVST/BitGlitter/BitGlitter.h b/plugins/WinVST/BitGlitter/BitGlitter.h index d87e277..4f108cd 100755 --- a/plugins/WinVST/BitGlitter/BitGlitter.h +++ b/plugins/WinVST/BitGlitter/BitGlitter.h @@ -55,6 +55,9 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; + long double fpNShapeL; + long double fpNShapeR; + double ataLastSampleL; double ataHalfwaySampleL; double ataDrySampleL; diff --git a/plugins/WinVST/BitGlitter/BitGlitterProc.cpp b/plugins/WinVST/BitGlitter/BitGlitterProc.cpp index 321d0b6..ff2968c 100755 --- a/plugins/WinVST/BitGlitter/BitGlitterProc.cpp +++ b/plugins/WinVST/BitGlitter/BitGlitterProc.cpp @@ -202,6 +202,14 @@ void BitGlitter::processReplacing(float **inputs, float **outputs, VstInt32 samp outputSampleL = (drySampleL * (1.0-wet)) + (outputSampleL * wet); outputSampleR = (drySampleR * (1.0-wet)) + (outputSampleR * wet); } + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)outputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + outputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)outputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + outputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = outputSampleL; *out2 = outputSampleR; @@ -408,6 +416,17 @@ void BitGlitter::processDoubleReplacing(double **inputs, double **outputs, VstIn outputSampleR = (drySampleR * (1.0-wet)) + (outputSampleR * wet); } + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)outputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + outputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)outputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + outputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither + *out1 = outputSampleL; *out2 = outputSampleR; diff --git a/plugins/WinVST/BitShiftGain/.vs/Console4Channel64/v14/.suo b/plugins/WinVST/BitShiftGain/.vs/Console4Channel64/v14/.suo Binary files differindex 777b846..777b846 100644..100755 --- a/plugins/WinVST/BitShiftGain/.vs/Console4Channel64/v14/.suo +++ b/plugins/WinVST/BitShiftGain/.vs/Console4Channel64/v14/.suo diff --git a/plugins/WinVST/BitShiftGain/.vs/VSTProject/v14/.suo b/plugins/WinVST/BitShiftGain/.vs/VSTProject/v14/.suo Binary files differindex 0b76ac5..d9c85b0 100644..100755 --- a/plugins/WinVST/BitShiftGain/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/BitShiftGain/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/BitShiftGain/BitShiftGain.cpp b/plugins/WinVST/BitShiftGain/BitShiftGain.cpp index c89bb9f..c89bb9f 100644..100755 --- a/plugins/WinVST/BitShiftGain/BitShiftGain.cpp +++ b/plugins/WinVST/BitShiftGain/BitShiftGain.cpp diff --git a/plugins/WinVST/BitShiftGain/BitShiftGain.h b/plugins/WinVST/BitShiftGain/BitShiftGain.h index 00400a2..00400a2 100644..100755 --- a/plugins/WinVST/BitShiftGain/BitShiftGain.h +++ b/plugins/WinVST/BitShiftGain/BitShiftGain.h diff --git a/plugins/WinVST/BitShiftGain/BitShiftGainProc.cpp b/plugins/WinVST/BitShiftGain/BitShiftGainProc.cpp index c680ebe..c680ebe 100644..100755 --- a/plugins/WinVST/BitShiftGain/BitShiftGainProc.cpp +++ b/plugins/WinVST/BitShiftGain/BitShiftGainProc.cpp diff --git a/plugins/WinVST/BitShiftGain/VSTProject.sln b/plugins/WinVST/BitShiftGain/VSTProject.sln index 694b424..694b424 100644..100755 --- a/plugins/WinVST/BitShiftGain/VSTProject.sln +++ b/plugins/WinVST/BitShiftGain/VSTProject.sln diff --git a/plugins/WinVST/BitShiftGain/VSTProject.vcxproj b/plugins/WinVST/BitShiftGain/VSTProject.vcxproj index 4403483..4403483 100644..100755 --- a/plugins/WinVST/BitShiftGain/VSTProject.vcxproj +++ b/plugins/WinVST/BitShiftGain/VSTProject.vcxproj diff --git a/plugins/WinVST/BitShiftGain/VSTProject.vcxproj.filters b/plugins/WinVST/BitShiftGain/VSTProject.vcxproj.filters index 6d9420c..6d9420c 100644..100755 --- a/plugins/WinVST/BitShiftGain/VSTProject.vcxproj.filters +++ b/plugins/WinVST/BitShiftGain/VSTProject.vcxproj.filters diff --git a/plugins/WinVST/BitShiftGain/VSTProject.vcxproj.user b/plugins/WinVST/BitShiftGain/VSTProject.vcxproj.user index 2216267..2216267 100644..100755 --- a/plugins/WinVST/BitShiftGain/VSTProject.vcxproj.user +++ b/plugins/WinVST/BitShiftGain/VSTProject.vcxproj.user diff --git a/plugins/WinVST/BitShiftGain/vstplug.def b/plugins/WinVST/BitShiftGain/vstplug.def index 5bf499a..5bf499a 100644..100755 --- a/plugins/WinVST/BitShiftGain/vstplug.def +++ b/plugins/WinVST/BitShiftGain/vstplug.def diff --git a/plugins/WinVST/Bite/.vs/VSTProject/v14/.suo b/plugins/WinVST/Bite/.vs/VSTProject/v14/.suo Binary files differindex a8fee43..3113a75 100755 --- a/plugins/WinVST/Bite/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Bite/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Bite/Bite.cpp b/plugins/WinVST/Bite/Bite.cpp index b563f54..c9d0fcb 100755 --- a/plugins/WinVST/Bite/Bite.cpp +++ b/plugins/WinVST/Bite/Bite.cpp @@ -34,11 +34,8 @@ Bite::Bite(audioMasterCallback audioMaster) : sampleHR = 0.0; sampleIR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Bite/Bite.h b/plugins/WinVST/Bite/Bite.h index d6f9e44..288ac7f 100755 --- a/plugins/WinVST/Bite/Bite.h +++ b/plugins/WinVST/Bite/Bite.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double sampleAL; double sampleBL; diff --git a/plugins/WinVST/Bite/BiteProc.cpp b/plugins/WinVST/Bite/BiteProc.cpp index 690a998..64e0ac4 100755 --- a/plugins/WinVST/Bite/BiteProc.cpp +++ b/plugins/WinVST/Bite/BiteProc.cpp @@ -17,9 +17,6 @@ void Bite::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram double overallscale = 1.3; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double gain = ((A*2.0)-1.0)*overallscale; double outputgain = B; @@ -119,25 +116,14 @@ void Bite::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram inputSampleR *= outputgain; } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -159,9 +145,6 @@ void Bite::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa double overallscale = 1.3; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double gain = ((A*2.0)-1.0)*overallscale; double outputgain = B; @@ -261,25 +244,16 @@ void Bite::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa inputSampleR *= outputgain; } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/BuildATPDF/.vs/VSTProject/v14/.suo b/plugins/WinVST/BuildATPDF/.vs/VSTProject/v14/.suo Binary files differindex 48c954d..ac5f5f8 100755 --- a/plugins/WinVST/BuildATPDF/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/BuildATPDF/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/BussColors4/.vs/VSTProject/v14/.suo b/plugins/WinVST/BussColors4/.vs/VSTProject/v14/.suo Binary files differindex 8ad21ec..d45891a 100755 --- a/plugins/WinVST/BussColors4/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/BussColors4/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/BussColors4/BussColors4.cpp b/plugins/WinVST/BussColors4/BussColors4.cpp index 720dbf9..c7de380 100755 --- a/plugins/WinVST/BussColors4/BussColors4.cpp +++ b/plugins/WinVST/BussColors4/BussColors4.cpp @@ -44,11 +44,8 @@ BussColors4::BussColors4(audioMasterCallback audioMaster) : slowdynR = 0; gcount = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. @@ -114,21 +111,6 @@ void BussColors4::setParameter(VstInt32 index, float value) { case kParamD: D = value; break; //this is the popup, stored as a float default: throw; // unknown parameter, shouldn't happen! } - //we can also set other defaults here, and do calculations that only have to happen - //once when parameters actually change. Here is the 'popup' setting its (global) values. - //variables can also be set in the processreplacing loop, and there they'll be set every buffersize - //here they're set when a parameter's actually changed, which should be less frequent, but - //you must use global variables in the BussColors4.h file to do it. - switch((VstInt32)( D * 3.999 )) - { - case 0: fpFlip = true; break; //choice A - case 1: fpFlip = false; break; //choice B - case 2: break; //choice C - case 3: break; //choice D - default: break; //should not happen - } - //this relates to using D as a 'popup' and changing things based on that switch. - //we are using fpFlip just because it's already there globally, as an example. } float BussColors4::getParameter(VstInt32 index) { diff --git a/plugins/WinVST/BussColors4/BussColors4.h b/plugins/WinVST/BussColors4/BussColors4.h index d07460e..6452555 100755 --- a/plugins/WinVST/BussColors4/BussColors4.h +++ b/plugins/WinVST/BussColors4/BussColors4.h @@ -68,11 +68,8 @@ private: double slowdynR; int gcount; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/BussColors4/BussColors4Proc.cpp b/plugins/WinVST/BussColors4/BussColors4Proc.cpp index 2629ee8..b1b9451 100755 --- a/plugins/WinVST/BussColors4/BussColors4Proc.cpp +++ b/plugins/WinVST/BussColors4/BussColors4Proc.cpp @@ -31,9 +31,6 @@ void BussColors4::processReplacing(float **inputs, float **outputs, VstInt32 sam double gain = 0.436; double outgain = 1.0; double bridgerectifier; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -795,25 +792,14 @@ void BussColors4::processReplacing(float **inputs, float **outputs, VstInt32 sam inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -849,9 +835,6 @@ void BussColors4::processDoubleReplacing(double **inputs, double **outputs, VstI double gain = 0.436; double outgain = 1.0; double bridgerectifier; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -1613,25 +1596,16 @@ void BussColors4::processDoubleReplacing(double **inputs, double **outputs, VstI inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/ButterComp/.vs/VSTProject/v14/.suo b/plugins/WinVST/ButterComp/.vs/VSTProject/v14/.suo Binary files differindex 973e33a..33f7d87 100755 --- a/plugins/WinVST/ButterComp/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/ButterComp/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/ButterComp/ButterComp.cpp b/plugins/WinVST/ButterComp/ButterComp.cpp index e6a33f7..b3123e2 100755 --- a/plugins/WinVST/ButterComp/ButterComp.cpp +++ b/plugins/WinVST/ButterComp/ButterComp.cpp @@ -26,11 +26,8 @@ ButterComp::ButterComp(audioMasterCallback audioMaster) : controlBnegR = 1.0; targetposR = 1.0; targetnegR = 1.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/ButterComp/ButterComp.h b/plugins/WinVST/ButterComp/ButterComp.h index af6df66..5c9862b 100755 --- a/plugins/WinVST/ButterComp/ButterComp.h +++ b/plugins/WinVST/ButterComp/ButterComp.h @@ -65,11 +65,8 @@ private: double controlBnegR; double targetposR; double targetnegR; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/ButterComp/ButterCompProc.cpp b/plugins/WinVST/ButterComp/ButterCompProc.cpp index ea52946..d87030c 100755 --- a/plugins/WinVST/ButterComp/ButterCompProc.cpp +++ b/plugins/WinVST/ButterComp/ButterCompProc.cpp @@ -17,9 +17,6 @@ void ButterComp::processReplacing(float **inputs, float **outputs, VstInt32 samp double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputposL; double inputnegL; @@ -181,25 +178,14 @@ void ButterComp::processReplacing(float **inputs, float **outputs, VstInt32 samp inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -221,9 +207,6 @@ void ButterComp::processDoubleReplacing(double **inputs, double **outputs, VstIn double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputposL; double inputnegL; @@ -385,25 +368,16 @@ void ButterComp::processDoubleReplacing(double **inputs, double **outputs, VstIn inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/ButterComp2/.vs/VSTProject/v14/.suo b/plugins/WinVST/ButterComp2/.vs/VSTProject/v14/.suo Binary files differindex 5192314..7169495 100755 --- a/plugins/WinVST/ButterComp2/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/ButterComp2/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/ButterComp2/ButterComp2Proc.cpp b/plugins/WinVST/ButterComp2/ButterComp2Proc.cpp index 55ce488..67a6367 100755 --- a/plugins/WinVST/ButterComp2/ButterComp2Proc.cpp +++ b/plugins/WinVST/ButterComp2/ButterComp2Proc.cpp @@ -223,18 +223,14 @@ void ButterComp2::processReplacing(float **inputs, float **outputs, VstInt32 sam flip = !flip; - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -244,12 +240,6 @@ void ButterComp2::processReplacing(float **inputs, float **outputs, VstInt32 sam *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void ButterComp2::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -468,18 +458,16 @@ void ButterComp2::processDoubleReplacing(double **inputs, double **outputs, VstI flip = !flip; - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -489,10 +477,4 @@ void ButterComp2::processDoubleReplacing(double **inputs, double **outputs, VstI *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/WinVST/C5RawBuss/.vs/VSTProject/v14/.suo b/plugins/WinVST/C5RawBuss/.vs/VSTProject/v14/.suo Binary files differindex 03f4aae..7727c07 100755 --- a/plugins/WinVST/C5RawBuss/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/C5RawBuss/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/C5RawBuss/C5RawBuss.cpp b/plugins/WinVST/C5RawBuss/C5RawBuss.cpp index 14b4dc5..8fba0ef 100755 --- a/plugins/WinVST/C5RawBuss/C5RawBuss.cpp +++ b/plugins/WinVST/C5RawBuss/C5RawBuss.cpp @@ -17,11 +17,8 @@ C5RawBuss::C5RawBuss(audioMasterCallback audioMaster) : lastSampleBussL = 0.0; lastFXBussR = 0.0; lastSampleBussR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/C5RawBuss/C5RawBuss.h b/plugins/WinVST/C5RawBuss/C5RawBuss.h index 5a409bc..f4d01fe 100755 --- a/plugins/WinVST/C5RawBuss/C5RawBuss.h +++ b/plugins/WinVST/C5RawBuss/C5RawBuss.h @@ -52,11 +52,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double lastFXBussL; double lastSampleBussL; diff --git a/plugins/WinVST/C5RawBuss/C5RawBussProc.cpp b/plugins/WinVST/C5RawBuss/C5RawBussProc.cpp index 1bf5eec..fab4612 100755 --- a/plugins/WinVST/C5RawBuss/C5RawBussProc.cpp +++ b/plugins/WinVST/C5RawBuss/C5RawBussProc.cpp @@ -14,9 +14,6 @@ void C5RawBuss::processReplacing(float **inputs, float **outputs, VstInt32 sampl float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double centering = A * 0.5; centering = 1.0 - pow(centering,5); @@ -111,25 +108,14 @@ void C5RawBuss::processReplacing(float **inputs, float **outputs, VstInt32 sampl //build new signal off what was present in output last time //slew aspect - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -148,9 +134,6 @@ void C5RawBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double centering = A * 0.5; centering = 1.0 - pow(centering,5); @@ -245,25 +228,16 @@ void C5RawBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt //build new signal off what was present in output last time //slew aspect - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/C5RawChannel/.vs/VSTProject/v14/.suo b/plugins/WinVST/C5RawChannel/.vs/VSTProject/v14/.suo Binary files differindex 60c2966..6732c5e 100755 --- a/plugins/WinVST/C5RawChannel/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/C5RawChannel/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/C5RawChannel/C5RawChannel.cpp b/plugins/WinVST/C5RawChannel/C5RawChannel.cpp index b02a07d..ffc2ecf 100755 --- a/plugins/WinVST/C5RawChannel/C5RawChannel.cpp +++ b/plugins/WinVST/C5RawChannel/C5RawChannel.cpp @@ -17,11 +17,8 @@ C5RawChannel::C5RawChannel(audioMasterCallback audioMaster) : lastSampleChannelL = 0.0; lastFXChannelR = 0.0; lastSampleChannelR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/C5RawChannel/C5RawChannel.h b/plugins/WinVST/C5RawChannel/C5RawChannel.h index 2281961..3ce3e84 100755 --- a/plugins/WinVST/C5RawChannel/C5RawChannel.h +++ b/plugins/WinVST/C5RawChannel/C5RawChannel.h @@ -52,11 +52,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double lastFXChannelL; double lastSampleChannelL; diff --git a/plugins/WinVST/C5RawChannel/C5RawChannelProc.cpp b/plugins/WinVST/C5RawChannel/C5RawChannelProc.cpp index 41f949e..b2679ff 100755 --- a/plugins/WinVST/C5RawChannel/C5RawChannelProc.cpp +++ b/plugins/WinVST/C5RawChannel/C5RawChannelProc.cpp @@ -14,9 +14,6 @@ void C5RawChannel::processReplacing(float **inputs, float **outputs, VstInt32 sa float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double centering = A * 0.5; centering = 1.0 - pow(centering,5); @@ -110,25 +107,14 @@ void C5RawChannel::processReplacing(float **inputs, float **outputs, VstInt32 sa inputSampleR = sin(inputSampleR); //amplitude aspect - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -147,9 +133,6 @@ void C5RawChannel::processDoubleReplacing(double **inputs, double **outputs, Vst double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double centering = A * 0.5; centering = 1.0 - pow(centering,5); @@ -243,25 +226,16 @@ void C5RawChannel::processDoubleReplacing(double **inputs, double **outputs, Vst inputSampleR = sin(inputSampleR); //amplitude aspect - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/CStrip/.vs/VSTProject/v14/.suo b/plugins/WinVST/CStrip/.vs/VSTProject/v14/.suo Binary files differindex 36fe57d..09cd1aa 100755 --- a/plugins/WinVST/CStrip/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/CStrip/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/CStrip/CStrip.cpp b/plugins/WinVST/CStrip/CStrip.cpp index 1c24d1b..2049ab8 100755 --- a/plugins/WinVST/CStrip/CStrip.cpp +++ b/plugins/WinVST/CStrip/CStrip.cpp @@ -153,11 +153,8 @@ CStrip::CStrip(audioMasterCallback audioMaster) : nvgRA = nvgRB = 0.0; //end ButterComp - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/CStrip/CStrip.h b/plugins/WinVST/CStrip/CStrip.h index 10f6729..cc9f722 100755 --- a/plugins/WinVST/CStrip/CStrip.h +++ b/plugins/WinVST/CStrip/CStrip.h @@ -63,11 +63,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double lastSampleL; diff --git a/plugins/WinVST/CStrip/CStripProc.cpp b/plugins/WinVST/CStrip/CStripProc.cpp index 272b9b6..60ce59c 100755 --- a/plugins/WinVST/CStrip/CStripProc.cpp +++ b/plugins/WinVST/CStrip/CStripProc.cpp @@ -20,10 +20,8 @@ void CStrip::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr overallscale = getSampleRate(); compscale = compscale * overallscale; //compscale is the one that's 1 or something like 2.2 for 96K rates - float fpTemp; long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -728,25 +726,14 @@ void CStrip::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr inputSampleR *= outputgain; } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -771,10 +758,8 @@ void CStrip::processDoubleReplacing(double **inputs, double **outputs, VstInt32 overallscale = getSampleRate(); compscale = compscale * overallscale; //compscale is the one that's 1 or something like 2.2 for 96K rates - double fpTemp; long double fpOld = 0.618033988749894848204586; //golden ratio! long double fpNew = 1.0 - fpOld; - long double inputSampleL; long double inputSampleR; @@ -1479,25 +1464,16 @@ void CStrip::processDoubleReplacing(double **inputs, double **outputs, VstInt32 inputSampleR *= outputgain; } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Capacitor/.vs/VSTProject/v14/.suo b/plugins/WinVST/Capacitor/.vs/VSTProject/v14/.suo Binary files differindex 28e146c..97e4f53 100755 --- a/plugins/WinVST/Capacitor/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Capacitor/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Capacitor/Capacitor.cpp b/plugins/WinVST/Capacitor/Capacitor.cpp index 2a62df6..0ade9c9 100755 --- a/plugins/WinVST/Capacitor/Capacitor.cpp +++ b/plugins/WinVST/Capacitor/Capacitor.cpp @@ -51,11 +51,8 @@ Capacitor::Capacitor(audioMasterCallback audioMaster) : lastHighpass = 1000.0; lastWet = 1000.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Capacitor/Capacitor.h b/plugins/WinVST/Capacitor/Capacitor.h index d80c676..0799d39 100755 --- a/plugins/WinVST/Capacitor/Capacitor.h +++ b/plugins/WinVST/Capacitor/Capacitor.h @@ -94,11 +94,8 @@ private: double lastHighpass; double lastWet; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/Capacitor/CapacitorProc.cpp b/plugins/WinVST/Capacitor/CapacitorProc.cpp index 6accb0d..6b3582b 100755 --- a/plugins/WinVST/Capacitor/CapacitorProc.cpp +++ b/plugins/WinVST/Capacitor/CapacitorProc.cpp @@ -30,9 +30,6 @@ void Capacitor::processReplacing(float **inputs, float **outputs, VstInt32 sampl double invHighpass; double dry; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -182,25 +179,14 @@ void Capacitor::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleL = (drySampleL * dry) + (inputSampleL * wet); inputSampleR = (drySampleR * dry) + (inputSampleR * wet); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -235,9 +221,6 @@ void Capacitor::processDoubleReplacing(double **inputs, double **outputs, VstInt double invHighpass; double dry; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -387,25 +370,16 @@ void Capacitor::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleL = (drySampleL * dry) + (inputSampleL * wet); inputSampleR = (drySampleR * dry) + (inputSampleR * wet); - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Channel6/.vs/VSTProject/v14/.suo b/plugins/WinVST/Channel6/.vs/VSTProject/v14/.suo Binary files differindex 521c0d0..7d5f2f1 100755 --- a/plugins/WinVST/Channel6/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Channel6/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Channel6/Channel6Proc.cpp b/plugins/WinVST/Channel6/Channel6Proc.cpp index d206851..9f16b2a 100755 --- a/plugins/WinVST/Channel6/Channel6Proc.cpp +++ b/plugins/WinVST/Channel6/Channel6Proc.cpp @@ -121,18 +121,14 @@ void Channel6::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleR *= output; } - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -142,12 +138,6 @@ void Channel6::processReplacing(float **inputs, float **outputs, VstInt32 sample *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Channel6::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -264,18 +254,16 @@ void Channel6::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleR *= output; } - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -285,10 +273,4 @@ void Channel6::processDoubleReplacing(double **inputs, double **outputs, VstInt3 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/WinVST/Chorus/.vs/VSTProject/v14/.suo b/plugins/WinVST/Chorus/.vs/VSTProject/v14/.suo Binary files differindex 6891b3b..113c667 100755 --- a/plugins/WinVST/Chorus/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Chorus/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Chorus/Chorus.cpp b/plugins/WinVST/Chorus/Chorus.cpp index a0699ec..1f3965a 100755 --- a/plugins/WinVST/Chorus/Chorus.cpp +++ b/plugins/WinVST/Chorus/Chorus.cpp @@ -27,12 +27,9 @@ Chorus::Chorus(audioMasterCallback audioMaster) : airEvenR = 0.0; airOddR = 0.0; airFactorR = 0.0; - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Chorus/Chorus.h b/plugins/WinVST/Chorus/Chorus.h index fb2fb44..5508ac3 100755 --- a/plugins/WinVST/Chorus/Chorus.h +++ b/plugins/WinVST/Chorus/Chorus.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff const static int totalsamples = 16386; float dL[totalsamples]; @@ -73,6 +70,7 @@ private: double airEvenR; double airOddR; double airFactorR; + bool fpFlip; float A; float B; diff --git a/plugins/WinVST/Chorus/ChorusProc.cpp b/plugins/WinVST/Chorus/ChorusProc.cpp index aed2bc0..368ade7 100755 --- a/plugins/WinVST/Chorus/ChorusProc.cpp +++ b/plugins/WinVST/Chorus/ChorusProc.cpp @@ -30,9 +30,6 @@ void Chorus::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr double offset; //this is a double buffer so we will be splitting it in two - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -134,26 +131,16 @@ void Chorus::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr inputSampleL = (inputSampleL * wet) + (drySampleL * dry); inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -188,9 +175,6 @@ void Chorus::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double offset; //this is a double buffer so we will be splitting it in two - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -293,25 +277,17 @@ void Chorus::processDoubleReplacing(double **inputs, double **outputs, VstInt32 inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither fpFlip = !fpFlip; - //end noise shaping on 64 bit output *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/ChorusEnsemble/.vs/VSTProject/v14/.suo b/plugins/WinVST/ChorusEnsemble/.vs/VSTProject/v14/.suo Binary files differindex 169e939..f4a5693 100755 --- a/plugins/WinVST/ChorusEnsemble/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/ChorusEnsemble/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/ChorusEnsemble/ChorusEnsemble.cpp b/plugins/WinVST/ChorusEnsemble/ChorusEnsemble.cpp index b1012f9..318b678 100755 --- a/plugins/WinVST/ChorusEnsemble/ChorusEnsemble.cpp +++ b/plugins/WinVST/ChorusEnsemble/ChorusEnsemble.cpp @@ -27,12 +27,9 @@ ChorusEnsemble::ChorusEnsemble(audioMasterCallback audioMaster) : airEvenR = 0.0; airOddR = 0.0; airFactorR = 0.0; - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/ChorusEnsemble/ChorusEnsemble.h b/plugins/WinVST/ChorusEnsemble/ChorusEnsemble.h index bd442ab..e7df332 100755 --- a/plugins/WinVST/ChorusEnsemble/ChorusEnsemble.h +++ b/plugins/WinVST/ChorusEnsemble/ChorusEnsemble.h @@ -67,12 +67,9 @@ private: double airEvenR; double airOddR; double airFactorR; - - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/ChorusEnsemble/ChorusEnsembleProc.cpp b/plugins/WinVST/ChorusEnsemble/ChorusEnsembleProc.cpp index 2a783dd..1663244 100755 --- a/plugins/WinVST/ChorusEnsemble/ChorusEnsembleProc.cpp +++ b/plugins/WinVST/ChorusEnsemble/ChorusEnsembleProc.cpp @@ -17,9 +17,6 @@ void ChorusEnsemble::processReplacing(float **inputs, float **outputs, VstInt32 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double speed = pow(A,3) * 0.001; speed *= overallscale; @@ -174,27 +171,17 @@ void ChorusEnsemble::processReplacing(float **inputs, float **outputs, VstInt32 inputSampleL = (inputSampleL * wet) + (drySampleL * dry); inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } + fpFlip = !fpFlip; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -216,9 +203,6 @@ void ChorusEnsemble::processDoubleReplacing(double **inputs, double **outputs, V double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double speed = pow(A,3) * 0.001; speed *= overallscale; @@ -373,27 +357,19 @@ void ChorusEnsemble::processDoubleReplacing(double **inputs, double **outputs, V inputSampleL = (inputSampleL * wet) + (drySampleL * dry); inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } + fpFlip = !fpFlip; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/ClipOnly/.vs/VSTProject/v14/.suo b/plugins/WinVST/ClipOnly/.vs/VSTProject/v14/.suo Binary files differindex 0762d52..32dfba4 100755 --- a/plugins/WinVST/ClipOnly/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/ClipOnly/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Console4Buss/.vs/VSTProject/v14/.suo b/plugins/WinVST/Console4Buss/.vs/VSTProject/v14/.suo Binary files differindex 82160f2..d8e035e 100755 --- a/plugins/WinVST/Console4Buss/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Console4Buss/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Console4Buss/Console4Buss.cpp b/plugins/WinVST/Console4Buss/Console4Buss.cpp index 79c7f6f..0c8e00c 100755 --- a/plugins/WinVST/Console4Buss/Console4Buss.cpp +++ b/plugins/WinVST/Console4Buss/Console4Buss.cpp @@ -22,11 +22,8 @@ Console4Buss::Console4Buss(audioMasterCallback audioMaster) : gainchase = -90.0; settingchase = -90.0; chasespeed = 350.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; // TODO: uncomment canDo entries according to your plugin's capabilities // _canDo.insert("sendVstEvents"); // plug-in will send Vst events to Host. diff --git a/plugins/WinVST/Console4Buss/Console4Buss.h b/plugins/WinVST/Console4Buss/Console4Buss.h index b19e6f2..9a9cbfb 100755 --- a/plugins/WinVST/Console4Buss/Console4Buss.h +++ b/plugins/WinVST/Console4Buss/Console4Buss.h @@ -71,11 +71,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - double fpNShapeLA; - double fpNShapeLB; - double fpNShapeRA; - double fpNShapeRB; - bool fpFlip; + double fpNShapeL; + double fpNShapeR; //default stuff double lastSampleL; double lastSampleR; diff --git a/plugins/WinVST/Console4Buss/Console4BussProc.cpp b/plugins/WinVST/Console4Buss/Console4BussProc.cpp index 712e496..dde872a 100755 --- a/plugins/WinVST/Console4Buss/Console4BussProc.cpp +++ b/plugins/WinVST/Console4Buss/Console4BussProc.cpp @@ -18,10 +18,6 @@ void Console4Buss::processReplacing(float **inputs, float **outputs, VstInt32 sa double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - double fpOld = 0.618033988749894848204586; //golden ratio! - double fpNew = 1.0 - fpOld; - long double inputSampleL; long double inputSampleR; long double half; @@ -123,25 +119,14 @@ void Console4Buss::processReplacing(float **inputs, float **outputs, VstInt32 sa //this is the inverse processing for Console: boosts but not so much if there's slew. //is this too subtle an effect? - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -163,9 +148,6 @@ void Console4Buss::processDoubleReplacing(double **inputs, double **outputs, Vst double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -267,25 +249,16 @@ void Console4Buss::processDoubleReplacing(double **inputs, double **outputs, Vst //this is the inverse processing for Console: boosts but not so much if there's slew. //is this too subtle an effect? - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; diff --git a/plugins/WinVST/Console4Channel/.vs/VSTProject/v14/.suo b/plugins/WinVST/Console4Channel/.vs/VSTProject/v14/.suo Binary files differindex e9e8200..bec1667 100755 --- a/plugins/WinVST/Console4Channel/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Console4Channel/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Console4Channel/Console4Channel.cpp b/plugins/WinVST/Console4Channel/Console4Channel.cpp index 52f6190..2e524a1 100755 --- a/plugins/WinVST/Console4Channel/Console4Channel.cpp +++ b/plugins/WinVST/Console4Channel/Console4Channel.cpp @@ -20,11 +20,8 @@ Console4Channel::Console4Channel(audioMasterCallback audioMaster) : gainchase = -90.0; settingchase = -90.0; chasespeed = 350.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; // TODO: uncomment canDo entries according to your plugin's capabilities // _canDo.insert("sendVstEvents"); // plug-in will send Vst events to Host. diff --git a/plugins/WinVST/Console4Channel/Console4Channel.h b/plugins/WinVST/Console4Channel/Console4Channel.h index 861ebe3..564853a 100755 --- a/plugins/WinVST/Console4Channel/Console4Channel.h +++ b/plugins/WinVST/Console4Channel/Console4Channel.h @@ -76,11 +76,8 @@ private: double settingchase; double chasespeed; - double fpNShapeLA; - double fpNShapeLB; - double fpNShapeRA; - double fpNShapeRB; - bool fpFlip; + double fpNShapeL; + double fpNShapeR; //default stuff float gain; }; diff --git a/plugins/WinVST/Console4Channel/Console4ChannelProc.cpp b/plugins/WinVST/Console4Channel/Console4ChannelProc.cpp index 9bf7244..3538710 100755 --- a/plugins/WinVST/Console4Channel/Console4ChannelProc.cpp +++ b/plugins/WinVST/Console4Channel/Console4ChannelProc.cpp @@ -18,10 +18,6 @@ void Console4Channel::processReplacing(float **inputs, float **outputs, VstInt32 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - double fpOld = 0.618033988749894848204586; //golden ratio! - double fpNew = 1.0 - fpOld; - long double inputSampleL; long double inputSampleR; long double half; @@ -105,25 +101,14 @@ void Console4Channel::processReplacing(float **inputs, float **outputs, VstInt32 //this is part of the Purest line: stuff that is on every track //needs to be DAMN LOW ON MATH srsly guys - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -145,9 +130,6 @@ void Console4Channel::processDoubleReplacing(double **inputs, double **outputs, double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -232,25 +214,16 @@ void Console4Channel::processDoubleReplacing(double **inputs, double **outputs, //this is part of the Purest line: stuff that is on every track //needs to be DAMN LOW ON MATH srsly guys - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Console5Buss/.vs/VSTProject/v14/.suo b/plugins/WinVST/Console5Buss/.vs/VSTProject/v14/.suo Binary files differindex f8fc15a..c5d83aa 100755 --- a/plugins/WinVST/Console5Buss/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Console5Buss/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Console5Buss/Console5Buss.cpp b/plugins/WinVST/Console5Buss/Console5Buss.cpp index 7f1c915..7e937a8 100755 --- a/plugins/WinVST/Console5Buss/Console5Buss.cpp +++ b/plugins/WinVST/Console5Buss/Console5Buss.cpp @@ -22,11 +22,8 @@ Console5Buss::Console5Buss(audioMasterCallback audioMaster) : gainchase = -90.0; settingchase = -90.0; chasespeed = 350.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Console5Buss/Console5Buss.h b/plugins/WinVST/Console5Buss/Console5Buss.h index 6ece284..0166f33 100755 --- a/plugins/WinVST/Console5Buss/Console5Buss.h +++ b/plugins/WinVST/Console5Buss/Console5Buss.h @@ -61,11 +61,8 @@ private: double gainchase; double settingchase; double chasespeed; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/Console5Buss/Console5BussProc.cpp b/plugins/WinVST/Console5Buss/Console5BussProc.cpp index 28b4980..21069e8 100755 --- a/plugins/WinVST/Console5Buss/Console5BussProc.cpp +++ b/plugins/WinVST/Console5Buss/Console5BussProc.cpp @@ -17,9 +17,6 @@ void Console5Buss::processReplacing(float **inputs, float **outputs, VstInt32 sa double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double differenceL; @@ -151,25 +148,14 @@ void Console5Buss::processReplacing(float **inputs, float **outputs, VstInt32 sa lastFXBussR *= (1.0 - (nearZeroR * bassTrim)); //this cuts back the DC offset directly, relative to how near zero we are - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -191,9 +177,6 @@ void Console5Buss::processDoubleReplacing(double **inputs, double **outputs, Vst double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double differenceL; @@ -325,25 +308,16 @@ void Console5Buss::processDoubleReplacing(double **inputs, double **outputs, Vst lastFXBussR *= (1.0 - (nearZeroR * bassTrim)); //this cuts back the DC offset directly, relative to how near zero we are - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Console5Channel/.vs/VSTProject/v14/.suo b/plugins/WinVST/Console5Channel/.vs/VSTProject/v14/.suo Binary files differindex ac0d461..99d2ade 100755 --- a/plugins/WinVST/Console5Channel/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Console5Channel/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Console5Channel/Console5Channel.cpp b/plugins/WinVST/Console5Channel/Console5Channel.cpp index 9305bf4..1a8f6fb 100755 --- a/plugins/WinVST/Console5Channel/Console5Channel.cpp +++ b/plugins/WinVST/Console5Channel/Console5Channel.cpp @@ -22,11 +22,8 @@ Console5Channel::Console5Channel(audioMasterCallback audioMaster) : gainchase = -90.0; settingchase = -90.0; chasespeed = 350.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Console5Channel/Console5Channel.h b/plugins/WinVST/Console5Channel/Console5Channel.h index 59e7950..bbc58b3 100755 --- a/plugins/WinVST/Console5Channel/Console5Channel.h +++ b/plugins/WinVST/Console5Channel/Console5Channel.h @@ -61,11 +61,8 @@ private: double gainchase; double settingchase; double chasespeed; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/Console5Channel/Console5ChannelProc.cpp b/plugins/WinVST/Console5Channel/Console5ChannelProc.cpp index 428e5e4..a010170 100755 --- a/plugins/WinVST/Console5Channel/Console5ChannelProc.cpp +++ b/plugins/WinVST/Console5Channel/Console5ChannelProc.cpp @@ -17,9 +17,6 @@ void Console5Channel::processReplacing(float **inputs, float **outputs, VstInt32 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double differenceL; @@ -152,25 +149,14 @@ void Console5Channel::processReplacing(float **inputs, float **outputs, VstInt32 inputSampleR = sin(inputSampleR); //amplitude aspect - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -192,9 +178,6 @@ void Console5Channel::processDoubleReplacing(double **inputs, double **outputs, double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double differenceL; @@ -327,25 +310,16 @@ void Console5Channel::processDoubleReplacing(double **inputs, double **outputs, inputSampleR = sin(inputSampleR); //amplitude aspect - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Console5DarkCh/.vs/VSTProject/v14/.suo b/plugins/WinVST/Console5DarkCh/.vs/VSTProject/v14/.suo Binary files differindex 1473e4d..4564e3b 100755 --- a/plugins/WinVST/Console5DarkCh/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Console5DarkCh/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Console5DarkCh/Console5DarkCh.cpp b/plugins/WinVST/Console5DarkCh/Console5DarkCh.cpp index 0d613a9..350a6b3 100755 --- a/plugins/WinVST/Console5DarkCh/Console5DarkCh.cpp +++ b/plugins/WinVST/Console5DarkCh/Console5DarkCh.cpp @@ -22,11 +22,8 @@ Console5DarkCh::Console5DarkCh(audioMasterCallback audioMaster) : gainchase = -90.0; settingchase = -90.0; chasespeed = 350.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Console5DarkCh/Console5DarkCh.h b/plugins/WinVST/Console5DarkCh/Console5DarkCh.h index 558e4f7..3265f5c 100755 --- a/plugins/WinVST/Console5DarkCh/Console5DarkCh.h +++ b/plugins/WinVST/Console5DarkCh/Console5DarkCh.h @@ -61,11 +61,8 @@ private: double gainchase; double settingchase; double chasespeed; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/Console5DarkCh/Console5DarkChProc.cpp b/plugins/WinVST/Console5DarkCh/Console5DarkChProc.cpp index e17ff88c..ba3a842 100755 --- a/plugins/WinVST/Console5DarkCh/Console5DarkChProc.cpp +++ b/plugins/WinVST/Console5DarkCh/Console5DarkChProc.cpp @@ -17,9 +17,6 @@ void Console5DarkCh::processReplacing(float **inputs, float **outputs, VstInt32 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double differenceL; @@ -152,25 +149,14 @@ void Console5DarkCh::processReplacing(float **inputs, float **outputs, VstInt32 inputSampleR = sin(inputSampleR); //amplitude aspect - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -192,9 +178,6 @@ void Console5DarkCh::processDoubleReplacing(double **inputs, double **outputs, V double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double differenceL; @@ -327,25 +310,16 @@ void Console5DarkCh::processDoubleReplacing(double **inputs, double **outputs, V inputSampleR = sin(inputSampleR); //amplitude aspect - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/CrunchyGrooveWear/.vs/VSTProject/v14/.suo b/plugins/WinVST/CrunchyGrooveWear/.vs/VSTProject/v14/.suo Binary files differindex df12eeb..8e47c8f 100755 --- a/plugins/WinVST/CrunchyGrooveWear/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/CrunchyGrooveWear/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWear.cpp b/plugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWear.cpp index 68a7fd9..6653b91 100755 --- a/plugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWear.cpp +++ b/plugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWear.cpp @@ -36,11 +36,8 @@ CrunchyGrooveWear::CrunchyGrooveWear(audioMasterCallback audioMaster) : cMidPrevR = 0.0; dMidPrevR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWear.h b/plugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWear.h index ed304c5..3489e5b 100755 --- a/plugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWear.h +++ b/plugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWear.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double aMidL[21]; diff --git a/plugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWearProc.cpp b/plugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWearProc.cpp index 4eec93e..3c9762e 100755 --- a/plugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWearProc.cpp +++ b/plugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWearProc.cpp @@ -14,9 +14,6 @@ void CrunchyGrooveWear::processReplacing(float **inputs, float **outputs, VstInt float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double overallscale = (pow(A,2)*19.0)+1.0; double gain = overallscale; @@ -434,25 +431,14 @@ void CrunchyGrooveWear::processReplacing(float **inputs, float **outputs, VstInt drySampleR = inputSampleR; } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -471,9 +457,6 @@ void CrunchyGrooveWear::processDoubleReplacing(double **inputs, double **outputs double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double overallscale = (pow(A,2)*19.0)+1.0; double gain = overallscale; @@ -891,25 +874,16 @@ void CrunchyGrooveWear::processDoubleReplacing(double **inputs, double **outputs drySampleR = inputSampleR; } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Crystal/.vs/VSTProject/v14/.suo b/plugins/WinVST/Crystal/.vs/VSTProject/v14/.suo Binary files differindex 3842fd5..5f8b648 100755 --- a/plugins/WinVST/Crystal/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Crystal/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Crystal/CrystalProc.cpp b/plugins/WinVST/Crystal/CrystalProc.cpp index 9c62355..7e696a7 100755 --- a/plugins/WinVST/Crystal/CrystalProc.cpp +++ b/plugins/WinVST/Crystal/CrystalProc.cpp @@ -191,18 +191,14 @@ void Crystal::processReplacing(float **inputs, float **outputs, VstInt32 sampleF //when current and old samples are different from each other, otherwise you can't tell it's there. //This is not only during silence but the tops of low frequency waves: it scales down to affect lows more gently. - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -212,12 +208,6 @@ void Crystal::processReplacing(float **inputs, float **outputs, VstInt32 sampleF *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Crystal::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -404,18 +394,16 @@ void Crystal::processDoubleReplacing(double **inputs, double **outputs, VstInt32 //when current and old samples are different from each other, otherwise you can't tell it's there. //This is not only during silence but the tops of low frequency waves: it scales down to affect lows more gently. - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -425,10 +413,4 @@ void Crystal::processDoubleReplacing(double **inputs, double **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/WinVST/DeEss/.vs/VSTProject/v14/.suo b/plugins/WinVST/DeEss/.vs/VSTProject/v14/.suo Binary files differindex bf3a84e..1c15f88 100755 --- a/plugins/WinVST/DeEss/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/DeEss/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/DeEss/DeEssProc.cpp b/plugins/WinVST/DeEss/DeEssProc.cpp index 9a8e14b..9b030a4 100755 --- a/plugins/WinVST/DeEss/DeEssProc.cpp +++ b/plugins/WinVST/DeEss/DeEssProc.cpp @@ -148,18 +148,14 @@ void DeEss::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra flip = !flip; - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -169,12 +165,6 @@ void DeEss::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void DeEss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -318,18 +308,16 @@ void DeEss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s flip = !flip; - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -339,10 +327,4 @@ void DeEss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/WinVST/DeRez/.vs/VSTProject/v14/.suo b/plugins/WinVST/DeRez/.vs/VSTProject/v14/.suo Binary files differindex 681434c..e083369 100755 --- a/plugins/WinVST/DeRez/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/DeRez/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/DeRez/DeRez.cpp b/plugins/WinVST/DeRez/DeRez.cpp index 404127a..cb9b514 100755 --- a/plugins/WinVST/DeRez/DeRez.cpp +++ b/plugins/WinVST/DeRez/DeRez.cpp @@ -23,11 +23,8 @@ DeRez::DeRez(audioMasterCallback audioMaster) : incrementA = 0.0; incrementB = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/DeRez/DeRez.h b/plugins/WinVST/DeRez/DeRez.h index 89338e8..8ebdcd9 100755 --- a/plugins/WinVST/DeRez/DeRez.h +++ b/plugins/WinVST/DeRez/DeRez.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double lastSampleL; diff --git a/plugins/WinVST/DeRez/DeRezProc.cpp b/plugins/WinVST/DeRez/DeRezProc.cpp index 247a364..cbe42d5 100755 --- a/plugins/WinVST/DeRez/DeRezProc.cpp +++ b/plugins/WinVST/DeRez/DeRezProc.cpp @@ -17,8 +17,6 @@ void DeRez::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double targetA = pow(A,3)+0.0005; if (targetA > 1.0) targetA = 1.0; @@ -132,26 +130,14 @@ void DeRez::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra lastSampleL = drySampleL; lastSampleR = drySampleR; - //noise shaping to 32-bit floating point - float fpTemp; - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -173,8 +159,6 @@ void DeRez::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double targetA = pow(A,3)+0.0005; if (targetA > 1.0) targetA = 1.0; @@ -288,26 +272,16 @@ void DeRez::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s lastSampleL = drySampleL; lastSampleR = drySampleR; - //noise shaping to 64-bit floating point - double fpTemp; - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Density/.vs/VSTProject/v14/.suo b/plugins/WinVST/Density/.vs/VSTProject/v14/.suo Binary files differindex ac31fc9..2a612b7 100755 --- a/plugins/WinVST/Density/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Density/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Density/Density.cpp b/plugins/WinVST/Density/Density.cpp index 1ecafde..bac4fb2 100755 --- a/plugins/WinVST/Density/Density.cpp +++ b/plugins/WinVST/Density/Density.cpp @@ -20,12 +20,9 @@ Density::Density(audioMasterCallback audioMaster) : iirSampleBL = 0.0; iirSampleAR = 0.0; iirSampleBR = 0.0; - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Density/Density.h b/plugins/WinVST/Density/Density.h index 377d25d..b634c44 100755 --- a/plugins/WinVST/Density/Density.h +++ b/plugins/WinVST/Density/Density.h @@ -55,17 +55,14 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double iirSampleAL; double iirSampleBL; double iirSampleAR; double iirSampleBR; - + bool fpFlip; float A; float B; float C; diff --git a/plugins/WinVST/Density/DensityProc.cpp b/plugins/WinVST/Density/DensityProc.cpp index 1e968c7..f229a9d 100755 --- a/plugins/WinVST/Density/DensityProc.cpp +++ b/plugins/WinVST/Density/DensityProc.cpp @@ -26,9 +26,6 @@ void Density::processReplacing(float **inputs, float **outputs, VstInt32 sampleF double out = fabs(density); density = density * fabs(density); double count; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -95,6 +92,7 @@ void Density::processReplacing(float **inputs, float **outputs, VstInt32 sampleF inputSampleR -= iirSampleBR; } //highpass section + fpFlip = !fpFlip; count = density; while (count > 1.0) @@ -150,25 +148,14 @@ void Density::processReplacing(float **inputs, float **outputs, VstInt32 sampleF //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -199,9 +186,6 @@ void Density::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double out = fabs(density); density = density * fabs(density); double count; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -268,6 +252,7 @@ void Density::processDoubleReplacing(double **inputs, double **outputs, VstInt32 inputSampleR -= iirSampleBR; } //highpass section + fpFlip = !fpFlip; count = density; while (count > 1.0) @@ -323,25 +308,16 @@ void Density::processDoubleReplacing(double **inputs, double **outputs, VstInt32 //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Desk/.vs/VSTProject/v14/.suo b/plugins/WinVST/Desk/.vs/VSTProject/v14/.suo Binary files differindex 9006873..8229c47 100755 --- a/plugins/WinVST/Desk/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Desk/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Desk/Desk.cpp b/plugins/WinVST/Desk/Desk.cpp index 7a30943..9582f04 100755 --- a/plugins/WinVST/Desk/Desk.cpp +++ b/plugins/WinVST/Desk/Desk.cpp @@ -18,11 +18,8 @@ Desk::Desk(audioMasterCallback audioMaster) : lastSampleR = 0.0; lastOutSampleR = 0.0; lastSlewR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Desk/Desk.h b/plugins/WinVST/Desk/Desk.h index 8c5c398..f7f933d 100755 --- a/plugins/WinVST/Desk/Desk.h +++ b/plugins/WinVST/Desk/Desk.h @@ -51,11 +51,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff long double lastSampleL; diff --git a/plugins/WinVST/Desk/DeskProc.cpp b/plugins/WinVST/Desk/DeskProc.cpp index a2bc92c..d53894b 100755 --- a/plugins/WinVST/Desk/DeskProc.cpp +++ b/plugins/WinVST/Desk/DeskProc.cpp @@ -29,9 +29,6 @@ void Desk::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram double bridgerectifier; double combsample; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -151,25 +148,14 @@ void Desk::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram inputSampleR /= gain; //end R - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -203,9 +189,6 @@ void Desk::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa double bridgerectifier; double combsample; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -325,25 +308,16 @@ void Desk::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa inputSampleR /= gain; //end R - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Desk4/.vs/VSTProject/v14/.suo b/plugins/WinVST/Desk4/.vs/VSTProject/v14/.suo Binary files differindex a020b8d..9fc65de 100755 --- a/plugins/WinVST/Desk4/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Desk4/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Desk4/Desk4.cpp b/plugins/WinVST/Desk4/Desk4.cpp index a8e20a7..0a05d87 100755 --- a/plugins/WinVST/Desk4/Desk4.cpp +++ b/plugins/WinVST/Desk4/Desk4.cpp @@ -30,11 +30,8 @@ Desk4::Desk4(audioMasterCallback audioMaster) : lastSlewR = 0.0; gcount = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Desk4/Desk4.h b/plugins/WinVST/Desk4/Desk4.h index fa09cd0..802ee47 100755 --- a/plugins/WinVST/Desk4/Desk4.h +++ b/plugins/WinVST/Desk4/Desk4.h @@ -70,11 +70,8 @@ private: double lastSlewR; int gcount; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/Desk4/Desk4Proc.cpp b/plugins/WinVST/Desk4/Desk4Proc.cpp index 515436c..fd165b6 100755 --- a/plugins/WinVST/Desk4/Desk4Proc.cpp +++ b/plugins/WinVST/Desk4/Desk4Proc.cpp @@ -17,9 +17,6 @@ void Desk4::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double gain = (pow(A,2)*10)+0.0001; double gaintrim = (pow(A,2)*2)+1.0; @@ -229,25 +226,14 @@ void Desk4::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -269,9 +255,6 @@ void Desk4::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double gain = (pow(A,2)*10)+0.0001; double gaintrim = (pow(A,2)*2)+1.0; @@ -481,25 +464,16 @@ void Desk4::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Distance/.vs/VSTProject/v14/.suo b/plugins/WinVST/Distance/.vs/VSTProject/v14/.suo Binary files differindex 4359323..8d82790 100755 --- a/plugins/WinVST/Distance/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Distance/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Distance/Distance.cpp b/plugins/WinVST/Distance/Distance.cpp index bae55c1..7ccd8fb 100755 --- a/plugins/WinVST/Distance/Distance.cpp +++ b/plugins/WinVST/Distance/Distance.cpp @@ -16,11 +16,8 @@ Distance::Distance(audioMasterCallback audioMaster) : B = 1.0; thirdresultL = prevresultL = lastclampL = clampL = changeL = lastL = 0.0; thirdresultR = prevresultR = lastclampR = clampR = changeR = lastR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Distance/Distance.h b/plugins/WinVST/Distance/Distance.h index 52ecc14..5566f84 100755 --- a/plugins/WinVST/Distance/Distance.h +++ b/plugins/WinVST/Distance/Distance.h @@ -67,11 +67,8 @@ private: double prevresultR; double lastR; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/Distance/DistanceProc.cpp b/plugins/WinVST/Distance/DistanceProc.cpp index bdf3c13..32eb3fa 100755 --- a/plugins/WinVST/Distance/DistanceProc.cpp +++ b/plugins/WinVST/Distance/DistanceProc.cpp @@ -28,9 +28,6 @@ void Distance::processReplacing(float **inputs, float **outputs, VstInt32 sample double dry = 1.0-wet; double bridgerectifier; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; long double drySampleL; @@ -126,25 +123,14 @@ void Distance::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleR = (drySampleR * dry)+(inputSampleR*wet); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -177,9 +163,6 @@ void Distance::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double dry = 1.0-wet; double bridgerectifier; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; long double drySampleL; @@ -275,25 +258,16 @@ void Distance::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleR = (drySampleR * dry)+(inputSampleR*wet); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Distance2/.vs/VSTProject/v14/.suo b/plugins/WinVST/Distance2/.vs/VSTProject/v14/.suo Binary files differindex a329e77..aee132b 100755 --- a/plugins/WinVST/Distance2/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Distance2/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Distance2/Distance2Proc.cpp b/plugins/WinVST/Distance2/Distance2Proc.cpp index ef5bf5b..473f3c8 100755 --- a/plugins/WinVST/Distance2/Distance2Proc.cpp +++ b/plugins/WinVST/Distance2/Distance2Proc.cpp @@ -266,18 +266,14 @@ void Distance2::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -287,12 +283,6 @@ void Distance2::processReplacing(float **inputs, float **outputs, VstInt32 sampl *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Distance2::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -554,18 +544,16 @@ void Distance2::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -575,10 +563,4 @@ void Distance2::processDoubleReplacing(double **inputs, double **outputs, VstInt *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/WinVST/DitherFloat/.vs/Console4Channel64/v14/.suo b/plugins/WinVST/DitherFloat/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/WinVST/DitherFloat/.vs/Console4Channel64/v14/.suo diff --git a/plugins/WinVST/DitherFloat/.vs/VSTProject/v14/.suo b/plugins/WinVST/DitherFloat/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..7cd8028 --- /dev/null +++ b/plugins/WinVST/DitherFloat/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/DitherFloat/DitherFloat.cpp b/plugins/WinVST/DitherFloat/DitherFloat.cpp new file mode 100755 index 0000000..ffd9e94 --- /dev/null +++ b/plugins/WinVST/DitherFloat/DitherFloat.cpp @@ -0,0 +1,127 @@ +/* ======================================== + * DitherFloat - DitherFloat.h + * Copyright (c) 2016 airwindows, All rights reserved + * ======================================== */ + +#ifndef __DitherFloat_H +#include "DitherFloat.h" +#endif + +AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new DitherFloat(audioMaster);} + +DitherFloat::DitherFloat(audioMasterCallback audioMaster) : + AudioEffectX(audioMaster, kNumPrograms, kNumParameters) +{ + A = 0.0; + B = 1.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + + _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. + _canDo.insert("plugAsSend"); // plug-in can be used as a send effect. + _canDo.insert("x2in2out"); + setNumInputs(kNumInputs); + setNumOutputs(kNumOutputs); + setUniqueID(kUniqueId); + canProcessReplacing(); // supports output replacing + canDoubleReplacing(); // supports double precision processing + programsAreChunks(true); + vst_strncpy (_programName, "Default", kVstMaxProgNameLen); // default program name +} + +DitherFloat::~DitherFloat() {} +VstInt32 DitherFloat::getVendorVersion () {return 1000;} +void DitherFloat::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);} +void DitherFloat::getProgramName(char *name) {vst_strncpy (name, _programName, kVstMaxProgNameLen);} +//airwindows likes to ignore this stuff. Make your own programs, and make a different plugin rather than +//trying to do versioning and preventing people from using older versions. Maybe they like the old one! + +static float pinParameter(float data) +{ + if (data < 0.0f) return 0.0f; + if (data > 1.0f) return 1.0f; + return data; +} + +VstInt32 DitherFloat::getChunk (void** data, bool isPreset) +{ + float *chunkData = (float *)calloc(kNumParameters, sizeof(float)); + chunkData[0] = A; + chunkData[1] = B; + /* Note: The way this is set up, it will break if you manage to save settings on an Intel + machine and load them on a PPC Mac. However, it's fine if you stick to the machine you + started with. */ + + *data = chunkData; + return kNumParameters * sizeof(float); +} + +VstInt32 DitherFloat::setChunk (void* data, VstInt32 byteSize, bool isPreset) +{ + float *chunkData = (float *)data; + A = pinParameter(chunkData[0]); + B = pinParameter(chunkData[1]); + /* We're ignoring byteSize as we found it to be a filthy liar */ + + /* calculate any other fields you need here - you could copy in + code from setParameter() here. */ + return 0; +} + +void DitherFloat::setParameter(VstInt32 index, float value) { + switch (index) { + case kParamA: A = value; break; + case kParamB: B = value; break; + default: throw; // unknown parameter, shouldn't happen! + } +} + +float DitherFloat::getParameter(VstInt32 index) { + switch (index) { + case kParamA: return A; break; + case kParamB: return B; break; + default: break; // unknown parameter, shouldn't happen! + } return 0.0; //we only need to update the relevant name, this is simple to manage +} + +void DitherFloat::getParameterName(VstInt32 index, char *text) { + switch (index) { + case kParamA: vst_strncpy (text, "Offset", kVstMaxParamStrLen); break; + case kParamB: vst_strncpy (text, "Dither", kVstMaxParamStrLen); break; + default: break; // unknown parameter, shouldn't happen! + } //this is our labels for displaying in the VST host +} + +void DitherFloat::getParameterDisplay(VstInt32 index, char *text) { + switch (index) { + case kParamA: int2string ((VstInt32)(A * 32), text, kVstMaxParamStrLen); break; + case kParamB: float2string (B, text, kVstMaxParamStrLen); break; + default: break; // unknown parameter, shouldn't happen! + } //this displays the values and handles 'popups' where it's discrete choices +} + +void DitherFloat::getParameterLabel(VstInt32 index, char *text) { + switch (index) { + case kParamA: vst_strncpy (text, "", kVstMaxParamStrLen); break; + case kParamB: vst_strncpy (text, "", kVstMaxParamStrLen); break; + default: break; // unknown parameter, shouldn't happen! + } +} + +VstInt32 DitherFloat::canDo(char *text) +{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know + +bool DitherFloat::getEffectName(char* name) { + vst_strncpy(name, "DitherFloat", kVstMaxProductStrLen); return true; +} + +VstPlugCategory DitherFloat::getPlugCategory() {return kPlugCategEffect;} + +bool DitherFloat::getProductString(char* text) { + vst_strncpy (text, "airwindows DitherFloat", kVstMaxProductStrLen); return true; +} + +bool DitherFloat::getVendorString(char* text) { + vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true; +} diff --git a/plugins/WinVST/DitherFloat/DitherFloat.h b/plugins/WinVST/DitherFloat/DitherFloat.h new file mode 100755 index 0000000..b8ddf51 --- /dev/null +++ b/plugins/WinVST/DitherFloat/DitherFloat.h @@ -0,0 +1,64 @@ +/* ======================================== + * DitherFloat - DitherFloat.h + * Created 8/12/11 by SPIAdmin + * Copyright (c) 2011 __MyCompanyName__, All rights reserved + * ======================================== */ + +#ifndef __DitherFloat_H +#define __DitherFloat_H + +#ifndef __audioeffect__ +#include "audioeffectx.h" +#endif + +#include <set> +#include <string> +#include <math.h> + +enum { + kParamA = 0, + kParamB = 1, + kNumParameters = 2 +}; // + +const int kNumPrograms = 0; +const int kNumInputs = 2; +const int kNumOutputs = 2; +const unsigned long kUniqueId = 'dthf'; //Change this to what the AU identity is! + +class DitherFloat : + public AudioEffectX +{ +public: + DitherFloat(audioMasterCallback audioMaster); + ~DitherFloat(); + virtual bool getEffectName(char* name); // The plug-in name + virtual VstPlugCategory getPlugCategory(); // The general category for the plug-in + virtual bool getProductString(char* text); // This is a unique plug-in string provided by Steinberg + virtual bool getVendorString(char* text); // Vendor info + virtual VstInt32 getVendorVersion(); // Version number + virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames); + virtual void processDoubleReplacing (double** inputs, double** outputs, VstInt32 sampleFrames); + virtual void getProgramName(char *name); // read the name from the host + virtual void setProgramName(char *name); // changes the name of the preset displayed in the host + virtual VstInt32 getChunk (void** data, bool isPreset); + virtual VstInt32 setChunk (void* data, VstInt32 byteSize, bool isPreset); + virtual float getParameter(VstInt32 index); // get the parameter value at the specified index + virtual void setParameter(VstInt32 index, float value); // set the parameter at index to value + virtual void getParameterLabel(VstInt32 index, char *text); // label for the parameter (eg dB) + virtual void getParameterName(VstInt32 index, char *text); // name of the parameter + virtual void getParameterDisplay(VstInt32 index, char *text); // text description of the current value + virtual VstInt32 canDo(char *text); +private: + char _programName[kVstMaxProgNameLen + 1]; + std::set< std::string > _canDo; + + long double fpNShapeL; + long double fpNShapeR; + //default stuff + + float A; + float B; +}; + +#endif diff --git a/plugins/WinVST/DitherFloat/DitherFloatProc.cpp b/plugins/WinVST/DitherFloat/DitherFloatProc.cpp new file mode 100755 index 0000000..3c76a1a --- /dev/null +++ b/plugins/WinVST/DitherFloat/DitherFloatProc.cpp @@ -0,0 +1,184 @@ +/* ======================================== + * DitherFloat - DitherFloat.h + * Copyright (c) 2016 airwindows, All rights reserved + * ======================================== */ + +#ifndef __DitherFloat_H +#include "DitherFloat.h" +#endif + +void DitherFloat::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames) +{ + float* in1 = inputs[0]; + float* in2 = inputs[1]; + float* out1 = outputs[0]; + float* out2 = outputs[1]; + + double overallscale = 1.0; + overallscale /= 44100.0; + overallscale *= getSampleRate(); + + int floatOffset = (A * 32); + long double blend = B; + + long double gain = 0; + + switch (floatOffset) + { + case 0: gain = 1.0; break; + case 1: gain = 2.0; break; + case 2: gain = 4.0; break; + case 3: gain = 8.0; break; + case 4: gain = 16.0; break; + case 5: gain = 32.0; break; + case 6: gain = 64.0; break; + case 7: gain = 128.0; break; + case 8: gain = 256.0; break; + case 9: gain = 512.0; break; + case 10: gain = 1024.0; break; + case 11: gain = 2048.0; break; + case 12: gain = 4096.0; break; + case 13: gain = 8192.0; break; + case 14: gain = 16384.0; break; + case 15: gain = 32768.0; break; + case 16: gain = 65536.0; break; + case 17: gain = 131072.0; break; + case 18: gain = 262144.0; break; + case 19: gain = 524288.0; break; + case 20: gain = 1048576.0; break; + case 21: gain = 2097152.0; break; + case 22: gain = 4194304.0; break; + case 23: gain = 8388608.0; break; + case 24: gain = 16777216.0; break; + case 25: gain = 33554432.0; break; + case 26: gain = 67108864.0; break; + case 27: gain = 134217728.0; break; + case 28: gain = 268435456.0; break; + case 29: gain = 536870912.0; break; + case 30: gain = 1073741824.0; break; + case 31: gain = 2147483648.0; break; + case 32: gain = 4294967296.0; break; + } + //we are directly punching in the gain values rather than calculating them + + while (--sampleFrames >= 0) + { + long double inputSampleL = *in1 + (gain-1); + long double inputSampleR = *in2 + (gain-1); + + + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo; + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo; + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither + + + + inputSampleL = (float)inputSampleL; //equivalent of 'floor' for 32 bit floating point + inputSampleR = (float)inputSampleR; //equivalent of 'floor' for 32 bit floating point + //We do that separately, we're truncating to floating point WHILE heavily offset. + + *out1 = inputSampleL - (gain-1); + *out2 = inputSampleR - (gain-1); + + *in1++; + *in2++; + *out1++; + *out2++; + } +} + +void DitherFloat::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) +{ + double* in1 = inputs[0]; + double* in2 = inputs[1]; + double* out1 = outputs[0]; + double* out2 = outputs[1]; + + double overallscale = 1.0; + overallscale /= 44100.0; + overallscale *= getSampleRate(); + + int floatOffset = (A * 32); + long double blend = B; + + long double gain = 0; + + switch (floatOffset) + { + case 0: gain = 1.0; break; + case 1: gain = 2.0; break; + case 2: gain = 4.0; break; + case 3: gain = 8.0; break; + case 4: gain = 16.0; break; + case 5: gain = 32.0; break; + case 6: gain = 64.0; break; + case 7: gain = 128.0; break; + case 8: gain = 256.0; break; + case 9: gain = 512.0; break; + case 10: gain = 1024.0; break; + case 11: gain = 2048.0; break; + case 12: gain = 4096.0; break; + case 13: gain = 8192.0; break; + case 14: gain = 16384.0; break; + case 15: gain = 32768.0; break; + case 16: gain = 65536.0; break; + case 17: gain = 131072.0; break; + case 18: gain = 262144.0; break; + case 19: gain = 524288.0; break; + case 20: gain = 1048576.0; break; + case 21: gain = 2097152.0; break; + case 22: gain = 4194304.0; break; + case 23: gain = 8388608.0; break; + case 24: gain = 16777216.0; break; + case 25: gain = 33554432.0; break; + case 26: gain = 67108864.0; break; + case 27: gain = 134217728.0; break; + case 28: gain = 268435456.0; break; + case 29: gain = 536870912.0; break; + case 30: gain = 1073741824.0; break; + case 31: gain = 2147483648.0; break; + case 32: gain = 4294967296.0; break; + } + //we are directly punching in the gain values rather than calculating them + + while (--sampleFrames >= 0) + { + long double inputSampleL = *in1 + (gain-1); + long double inputSampleR = *in2 + (gain-1); + + + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo; + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo; + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither + + + + inputSampleL = (float)inputSampleL; //equivalent of 'floor' for 32 bit floating point + inputSampleR = (float)inputSampleR; //equivalent of 'floor' for 32 bit floating point + //We do that separately, we're truncating to floating point WHILE heavily offset. + + //note for 64 bit version: this is not for actually dithering 64 bit floats! + //This is specifically for demonstrating the sound of 32 bit floating point dither + //even over a 64 bit buss. Therefore it should be using float, above! + + *out1 = inputSampleL - (gain-1); + *out2 = inputSampleR - (gain-1); + + *in1++; + *in2++; + *out1++; + *out2++; + } +} diff --git a/plugins/WinVST/GrooveWear/VSTProject.sln b/plugins/WinVST/DitherFloat/VSTProject.sln index 694b424..694b424 100644..100755 --- a/plugins/WinVST/GrooveWear/VSTProject.sln +++ b/plugins/WinVST/DitherFloat/VSTProject.sln diff --git a/plugins/WinVST/DitherFloat/VSTProject.vcxproj b/plugins/WinVST/DitherFloat/VSTProject.vcxproj new file mode 100755 index 0000000..388624d --- /dev/null +++ b/plugins/WinVST/DitherFloat/VSTProject.vcxproj @@ -0,0 +1,183 @@ +<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffect.cpp" />
+ <ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.cpp" />
+ <ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\vstplugmain.cpp" />
+ <ClCompile Include="DitherFloat.cpp" />
+ <ClCompile Include="DitherFloatProc.cpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\aeffeditor.h" />
+ <ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffect.h" />
+ <ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.h" />
+ <ClInclude Include="DitherFloat.h" />
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}</ProjectGuid>
+ <RootNamespace>VSTProject</RootNamespace>
+ <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+ <ProjectName>DitherFloat64</ProjectName>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <CharacterSet>NotSet</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <CharacterSet>NotSet</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <CharacterSet>NotSet</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <CharacterSet>NotSet</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="Shared">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <TargetExt>.dll</TargetExt>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <OutDir>$(SolutionDir)$(Configuration)\</OutDir>
+ <IntDir>$(Configuration)\</IntDir>
+ <ExecutablePath>$(VC_ExecutablePath_x64);$(WindowsSDK_ExecutablePath);$(VS_ExecutablePath);$(MSBuild_ExecutablePath);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH)</ExecutablePath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <OutDir>$(SolutionDir)$(Configuration)\</OutDir>
+ <IntDir>$(Configuration)\</IntDir>
+ <ExecutablePath>$(VC_ExecutablePath_x64);$(WindowsSDK_ExecutablePath);$(VS_ExecutablePath);$(MSBuild_ExecutablePath);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH)</ExecutablePath>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <SDLCheck>true</SDLCheck>
+ <AdditionalIncludeDirectories>C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <MinimalRebuild>false</MinimalRebuild>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <FunctionLevelLinking>false</FunctionLevelLinking>
+ <DebugInformationFormat>None</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <ModuleDefinitionFile>vstplug.def</ModuleDefinitionFile>
+ <IgnoreSpecificDefaultLibraries>libcmt.dll;libcmtd.dll;msvcrt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+ <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <SDLCheck>true</SDLCheck>
+ <AdditionalIncludeDirectories>C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <PreprocessorDefinitions>WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <FunctionLevelLinking>false</FunctionLevelLinking>
+ <DebugInformationFormat>None</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <IgnoreSpecificDefaultLibraries>libcmt.dll;libcmtd.dll;msvcrt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+ <ModuleDefinitionFile>vstplug.def</ModuleDefinitionFile>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>false</FunctionLevelLinking>
+ <IntrinsicFunctions>false</IntrinsicFunctions>
+ <SDLCheck>true</SDLCheck>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <AdditionalIncludeDirectories>C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <DebugInformationFormat>None</DebugInformationFormat>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <PreprocessorDefinitions>WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ <Link>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ <IgnoreSpecificDefaultLibraries>libcmt.dll;libcmtd.dll;msvcrt.lib;libc.lib;libcd.lib;libcmt.lib;msvcrtd.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+ <AdditionalDependencies>libcmt.lib;uuid.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <ModuleDefinitionFile>vstplug.def</ModuleDefinitionFile>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>false</FunctionLevelLinking>
+ <IntrinsicFunctions>false</IntrinsicFunctions>
+ <SDLCheck>true</SDLCheck>
+ <AdditionalIncludeDirectories>C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <DebugInformationFormat>None</DebugInformationFormat>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <PreprocessorDefinitions>WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ </ClCompile>
+ <Link>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ <IgnoreSpecificDefaultLibraries>libcmt.dll;libcmtd.dll;msvcrt.lib;libc.lib;libcd.lib;libcmt.lib;msvcrtd.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+ <AdditionalDependencies>libcmt.lib;uuid.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <ModuleDefinitionFile>vstplug.def</ModuleDefinitionFile>
+ </Link>
+ </ItemDefinitionGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
\ No newline at end of file diff --git a/plugins/WinVST/DitherFloat/VSTProject.vcxproj.filters b/plugins/WinVST/DitherFloat/VSTProject.vcxproj.filters new file mode 100755 index 0000000..fb1260a --- /dev/null +++ b/plugins/WinVST/DitherFloat/VSTProject.vcxproj.filters @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffect.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\vstplugmain.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="DitherFloat.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="DitherFloatProc.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\aeffeditor.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffect.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="DitherFloat.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project>
\ No newline at end of file diff --git a/plugins/WinVST/DitherFloat/VSTProject.vcxproj.user b/plugins/WinVST/DitherFloat/VSTProject.vcxproj.user new file mode 100755 index 0000000..2216267 --- /dev/null +++ b/plugins/WinVST/DitherFloat/VSTProject.vcxproj.user @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LocalDebuggerAmpDefaultAccelerator>{ADEFF70D-84BF-47A1-91C3-FF6B0FC71218}</LocalDebuggerAmpDefaultAccelerator>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <LocalDebuggerAmpDefaultAccelerator>{ADEFF70D-84BF-47A1-91C3-FF6B0FC71218}</LocalDebuggerAmpDefaultAccelerator>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <LocalDebuggerAmpDefaultAccelerator>{ADEFF70D-84BF-47A1-91C3-FF6B0FC71218}</LocalDebuggerAmpDefaultAccelerator>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <LocalDebuggerAmpDefaultAccelerator>{ADEFF70D-84BF-47A1-91C3-FF6B0FC71218}</LocalDebuggerAmpDefaultAccelerator>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+</Project>
\ No newline at end of file diff --git a/plugins/WinVST/DitherFloat/vstplug.def b/plugins/WinVST/DitherFloat/vstplug.def new file mode 100755 index 0000000..5bf499a --- /dev/null +++ b/plugins/WinVST/DitherFloat/vstplug.def @@ -0,0 +1,3 @@ +EXPORTS
+ VSTPluginMain
+ main=VSTPluginMain
\ No newline at end of file diff --git a/plugins/WinVST/Drive/.vs/VSTProject/v14/.suo b/plugins/WinVST/Drive/.vs/VSTProject/v14/.suo Binary files differindex da1c31d..7c0342c 100755 --- a/plugins/WinVST/Drive/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Drive/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Drive/Drive.cpp b/plugins/WinVST/Drive/Drive.cpp index 35d0594..ac5f228 100755 --- a/plugins/WinVST/Drive/Drive.cpp +++ b/plugins/WinVST/Drive/Drive.cpp @@ -20,12 +20,9 @@ Drive::Drive(audioMasterCallback audioMaster) : iirSampleBL = 0.0; iirSampleAR = 0.0; iirSampleBR = 0.0; - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Drive/Drive.h b/plugins/WinVST/Drive/Drive.h index c7039c5..525a09e 100755 --- a/plugins/WinVST/Drive/Drive.h +++ b/plugins/WinVST/Drive/Drive.h @@ -55,17 +55,14 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double iirSampleAL; double iirSampleBL; double iirSampleAR; double iirSampleBR; - + bool fpFlip; float A; float B; float C; diff --git a/plugins/WinVST/Drive/DriveProc.cpp b/plugins/WinVST/Drive/DriveProc.cpp index 3670e85..074ccfd 100755 --- a/plugins/WinVST/Drive/DriveProc.cpp +++ b/plugins/WinVST/Drive/DriveProc.cpp @@ -26,9 +26,6 @@ void Drive::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra double glitch = 0.60; double out; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -95,6 +92,7 @@ void Drive::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra inputSampleR -= iirSampleBR; } //highpass section + fpFlip = !fpFlip; if (inputSampleL > 1.0) inputSampleL = 1.0; @@ -129,25 +127,14 @@ void Drive::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -178,9 +165,6 @@ void Drive::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s double glitch = 0.60; double out; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -247,6 +231,7 @@ void Drive::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s inputSampleR -= iirSampleBR; } //highpass section + fpFlip = !fpFlip; if (inputSampleL > 1.0) inputSampleL = 1.0; @@ -281,25 +266,16 @@ void Drive::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/DrumSlam/.vs/VSTProject/v14/.suo b/plugins/WinVST/DrumSlam/.vs/VSTProject/v14/.suo Binary files differindex a2b66ba..b712621 100755 --- a/plugins/WinVST/DrumSlam/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/DrumSlam/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/DrumSlam/DrumSlam.cpp b/plugins/WinVST/DrumSlam/DrumSlam.cpp index 8a6ae7b..5b88619 100755 --- a/plugins/WinVST/DrumSlam/DrumSlam.cpp +++ b/plugins/WinVST/DrumSlam/DrumSlam.cpp @@ -35,12 +35,9 @@ DrumSlam::DrumSlam(audioMasterCallback audioMaster) : iirSampleGR = 0.0; iirSampleHR = 0.0; lastSampleR = 0.0; - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/DrumSlam/DrumSlam.h b/plugins/WinVST/DrumSlam/DrumSlam.h index 5ec2fda..418282d 100755 --- a/plugins/WinVST/DrumSlam/DrumSlam.h +++ b/plugins/WinVST/DrumSlam/DrumSlam.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double iirSampleAL; @@ -80,7 +77,7 @@ private: double iirSampleGR; double iirSampleHR; double lastSampleR; - + bool fpFlip; float A; float B; float C; diff --git a/plugins/WinVST/DrumSlam/DrumSlamProc.cpp b/plugins/WinVST/DrumSlam/DrumSlamProc.cpp index 171b353..2e86142 100755 --- a/plugins/WinVST/DrumSlam/DrumSlamProc.cpp +++ b/plugins/WinVST/DrumSlam/DrumSlamProc.cpp @@ -25,8 +25,6 @@ void DrumSlam::processReplacing(float **inputs, float **outputs, VstInt32 sample double out = B; double wet = C; double dry = 1.0 - wet; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; while (--sampleFrames >= 0) { @@ -125,6 +123,8 @@ void DrumSlam::processReplacing(float **inputs, float **outputs, VstInt32 sample highSampleL = inputSampleL - iirSampleHL; highSampleR = inputSampleR - iirSampleHR; } + fpFlip = !fpFlip; + //generate the tone bands we're using if (lowSampleL > 1.0) {lowSampleL = 1.0;} if (lowSampleL < -1.0) {lowSampleL = -1.0;} @@ -219,26 +219,14 @@ void DrumSlam::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - float fpTemp; - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -268,8 +256,6 @@ void DrumSlam::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double out = B; double wet = C; double dry = 1.0 - wet; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; while (--sampleFrames >= 0) { @@ -368,6 +354,8 @@ void DrumSlam::processDoubleReplacing(double **inputs, double **outputs, VstInt3 highSampleL = inputSampleL - iirSampleHL; highSampleR = inputSampleR - iirSampleHR; } + fpFlip = !fpFlip; + //generate the tone bands we're using if (lowSampleL > 1.0) {lowSampleL = 1.0;} if (lowSampleL < -1.0) {lowSampleL = -1.0;} @@ -462,26 +450,16 @@ void DrumSlam::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - double fpTemp; - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/DubCenter/.vs/VSTProject/v14/.suo b/plugins/WinVST/DubCenter/.vs/VSTProject/v14/.suo Binary files differindex 2d55292..78d0cd5 100755 --- a/plugins/WinVST/DubCenter/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/DubCenter/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/DubCenter/DubCenterProc.cpp b/plugins/WinVST/DubCenter/DubCenterProc.cpp index 75c162b..b0c49a3 100755 --- a/plugins/WinVST/DubCenter/DubCenterProc.cpp +++ b/plugins/WinVST/DubCenter/DubCenterProc.cpp @@ -306,18 +306,14 @@ void DubCenter::processReplacing(float **inputs, float **outputs, VstInt32 sampl bflip++; if (bflip < 1 || bflip > 3) bflip = 1; - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -327,12 +323,6 @@ void DubCenter::processReplacing(float **inputs, float **outputs, VstInt32 sampl *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void DubCenter::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -633,18 +623,16 @@ void DubCenter::processDoubleReplacing(double **inputs, double **outputs, VstInt bflip++; if (bflip < 1 || bflip > 3) bflip = 1; - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -654,10 +642,4 @@ void DubCenter::processDoubleReplacing(double **inputs, double **outputs, VstInt *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/WinVST/DubSub/.vs/VSTProject/v14/.suo b/plugins/WinVST/DubSub/.vs/VSTProject/v14/.suo Binary files differindex 0e2fce9..f7f4fd6 100755 --- a/plugins/WinVST/DubSub/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/DubSub/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/DubSub/DubSubProc.cpp b/plugins/WinVST/DubSub/DubSubProc.cpp index 037480c..7a0349d 100755 --- a/plugins/WinVST/DubSub/DubSubProc.cpp +++ b/plugins/WinVST/DubSub/DubSubProc.cpp @@ -392,18 +392,14 @@ void DubSub::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr bflip++; if (bflip < 1 || bflip > 3) bflip = 1; - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -413,12 +409,6 @@ void DubSub::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void DubSub::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -805,18 +795,16 @@ void DubSub::processDoubleReplacing(double **inputs, double **outputs, VstInt32 bflip++; if (bflip < 1 || bflip > 3) bflip = 1; - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -826,10 +814,4 @@ void DubSub::processDoubleReplacing(double **inputs, double **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/WinVST/DustBunny/.vs/VSTProject/v14/.suo b/plugins/WinVST/DustBunny/.vs/VSTProject/v14/.suo Binary files differindex 03ccec9..020c7ad 100755 --- a/plugins/WinVST/DustBunny/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/DustBunny/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/EQ/.vs/VSTProject/v14/.suo b/plugins/WinVST/EQ/.vs/VSTProject/v14/.suo Binary files differindex faccb3d..fec6949 100755 --- a/plugins/WinVST/EQ/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/EQ/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/EQ/EQ.cpp b/plugins/WinVST/EQ/EQ.cpp index ebdadaa..f2e4e01 100755 --- a/plugins/WinVST/EQ/EQ.cpp +++ b/plugins/WinVST/EQ/EQ.cpp @@ -111,11 +111,8 @@ EQ::EQ(audioMasterCallback audioMaster) : flip = false; flipthree = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/EQ/EQ.h b/plugins/WinVST/EQ/EQ.h index 4317a2d..26fade4 100755 --- a/plugins/WinVST/EQ/EQ.h +++ b/plugins/WinVST/EQ/EQ.h @@ -59,11 +59,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double lastSampleL; diff --git a/plugins/WinVST/EQ/EQProc.cpp b/plugins/WinVST/EQ/EQProc.cpp index 6d994a9..917dc7e 100755 --- a/plugins/WinVST/EQ/EQProc.cpp +++ b/plugins/WinVST/EQ/EQProc.cpp @@ -20,9 +20,6 @@ void EQ::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames overallscale = getSampleRate(); compscale = compscale * overallscale; //compscale is the one that's 1 or something like 2.2 for 96K rates - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -434,25 +431,14 @@ void EQ::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames inputSampleR *= outputgain; } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -477,9 +463,6 @@ void EQ::processDoubleReplacing(double **inputs, double **outputs, VstInt32 samp overallscale = getSampleRate(); compscale = compscale * overallscale; //compscale is the one that's 1 or something like 2.2 for 96K rates - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -891,25 +874,16 @@ void EQ::processDoubleReplacing(double **inputs, double **outputs, VstInt32 samp inputSampleR *= outputgain; } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/EdIsDim/.vs/VSTProject/v14/.suo b/plugins/WinVST/EdIsDim/.vs/VSTProject/v14/.suo Binary files differindex d170019..bcd75a3 100755 --- a/plugins/WinVST/EdIsDim/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/EdIsDim/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/EdIsDim/EdIsDim.cpp b/plugins/WinVST/EdIsDim/EdIsDim.cpp index 6af5dd4..eb6abd3 100755 --- a/plugins/WinVST/EdIsDim/EdIsDim.cpp +++ b/plugins/WinVST/EdIsDim/EdIsDim.cpp @@ -13,11 +13,8 @@ EdIsDim::EdIsDim(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, kNumPrograms, kNumParameters) { A = 0.5; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/EdIsDim/EdIsDim.h b/plugins/WinVST/EdIsDim/EdIsDim.h index 8c51883..4f62705 100755 --- a/plugins/WinVST/EdIsDim/EdIsDim.h +++ b/plugins/WinVST/EdIsDim/EdIsDim.h @@ -52,11 +52,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/EdIsDim/EdIsDimProc.cpp b/plugins/WinVST/EdIsDim/EdIsDimProc.cpp index 8ee927d..0d033eb 100755 --- a/plugins/WinVST/EdIsDim/EdIsDimProc.cpp +++ b/plugins/WinVST/EdIsDim/EdIsDimProc.cpp @@ -14,9 +14,6 @@ void EdIsDim::processReplacing(float **inputs, float **outputs, VstInt32 sampleF float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -75,25 +72,14 @@ void EdIsDim::processReplacing(float **inputs, float **outputs, VstInt32 sampleF mid = (inputSampleL+inputSampleR)/2.0; side = (inputSampleL-inputSampleR)/2.0; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = mid; - fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLA; - fpTemp = side; - fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRA; - } - else { - fpTemp = mid; - fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLB; - fpTemp = side; - fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)mid, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + mid += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)side, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + side += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = mid; *out2 = side; @@ -112,9 +98,6 @@ void EdIsDim::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -174,25 +157,16 @@ void EdIsDim::processDoubleReplacing(double **inputs, double **outputs, VstInt32 mid = (inputSampleL+inputSampleR)/2.0; side = (inputSampleL-inputSampleR)/2.0; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = mid; - fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLA; - fpTemp = side; - fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRA; - } - else { - fpTemp = mid; - fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLB; - fpTemp = side; - fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)mid, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + mid += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)side, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + side += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = mid; *out2 = side; diff --git a/plugins/WinVST/ElectroHat/.vs/VSTProject/v14/.suo b/plugins/WinVST/ElectroHat/.vs/VSTProject/v14/.suo Binary files differindex 8d8d5e2..8b7bf64 100755 --- a/plugins/WinVST/ElectroHat/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/ElectroHat/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/ElectroHat/ElectroHat.cpp b/plugins/WinVST/ElectroHat/ElectroHat.cpp index 33d1058..6be41e4 100755 --- a/plugins/WinVST/ElectroHat/ElectroHat.cpp +++ b/plugins/WinVST/ElectroHat/ElectroHat.cpp @@ -25,11 +25,8 @@ ElectroHat::ElectroHat(audioMasterCallback audioMaster) : lok = 0; flip = true; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/ElectroHat/ElectroHat.h b/plugins/WinVST/ElectroHat/ElectroHat.h index e8aa325..85315cd 100755 --- a/plugins/WinVST/ElectroHat/ElectroHat.h +++ b/plugins/WinVST/ElectroHat/ElectroHat.h @@ -56,11 +56,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double storedSampleL; diff --git a/plugins/WinVST/ElectroHat/ElectroHatProc.cpp b/plugins/WinVST/ElectroHat/ElectroHatProc.cpp index 69b1a00..ee5a307 100755 --- a/plugins/WinVST/ElectroHat/ElectroHatProc.cpp +++ b/plugins/WinVST/ElectroHat/ElectroHatProc.cpp @@ -20,9 +20,6 @@ void ElectroHat::processReplacing(float **inputs, float **outputs, VstInt32 samp bool highSample = false; if (getSampleRate() > 64000) highSample = true; //we will go to another dither for 88 and 96K - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double drySampleL; double drySampleR; @@ -126,25 +123,14 @@ void ElectroHat::processReplacing(float **inputs, float **outputs, VstInt32 samp inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -169,9 +155,6 @@ void ElectroHat::processDoubleReplacing(double **inputs, double **outputs, VstIn bool highSample = false; if (getSampleRate() > 64000) highSample = true; //we will go to another dither for 88 and 96K - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double drySampleL; double drySampleR; @@ -275,25 +258,16 @@ void ElectroHat::processDoubleReplacing(double **inputs, double **outputs, VstIn inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Energy/.vs/VSTProject/v14/.suo b/plugins/WinVST/Energy/.vs/VSTProject/v14/.suo Binary files differindex e7b1929..3b56035 100755 --- a/plugins/WinVST/Energy/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Energy/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Energy/EnergyProc.cpp b/plugins/WinVST/Energy/EnergyProc.cpp index a72b868..a0a86f8 100755 --- a/plugins/WinVST/Energy/EnergyProc.cpp +++ b/plugins/WinVST/Energy/EnergyProc.cpp @@ -742,18 +742,14 @@ void Energy::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr //we don't need a drySample because we never touched inputSample //so, this provides the inv/dry/wet control all by itself - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -763,12 +759,6 @@ void Energy::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Energy::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -1506,18 +1496,16 @@ void Energy::processDoubleReplacing(double **inputs, double **outputs, VstInt32 //we don't need a drySample because we never touched inputSample //so, this provides the inv/dry/wet control all by itself - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -1527,10 +1515,4 @@ void Energy::processDoubleReplacing(double **inputs, double **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/WinVST/Ensemble/.vs/VSTProject/v14/.suo b/plugins/WinVST/Ensemble/.vs/VSTProject/v14/.suo Binary files differindex 6022e68..5f6df86 100755 --- a/plugins/WinVST/Ensemble/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Ensemble/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Ensemble/Ensemble.cpp b/plugins/WinVST/Ensemble/Ensemble.cpp index be624b2..b90bf6e 100755 --- a/plugins/WinVST/Ensemble/Ensemble.cpp +++ b/plugins/WinVST/Ensemble/Ensemble.cpp @@ -28,12 +28,9 @@ Ensemble::Ensemble(audioMasterCallback audioMaster) : airEvenR = 0.0; airOddR = 0.0; airFactorR = 0.0; - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Ensemble/Ensemble.h b/plugins/WinVST/Ensemble/Ensemble.h index 32ba8c0..7697d93 100755 --- a/plugins/WinVST/Ensemble/Ensemble.h +++ b/plugins/WinVST/Ensemble/Ensemble.h @@ -55,11 +55,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff const static int totalsamples = 65540; float dL[totalsamples]; @@ -74,7 +71,7 @@ private: double airEvenR; double airOddR; double airFactorR; - + bool fpFlip; float A; float B; float C; diff --git a/plugins/WinVST/Ensemble/EnsembleProc.cpp b/plugins/WinVST/Ensemble/EnsembleProc.cpp index 679e868..e9a3a43 100755 --- a/plugins/WinVST/Ensemble/EnsembleProc.cpp +++ b/plugins/WinVST/Ensemble/EnsembleProc.cpp @@ -37,9 +37,6 @@ void Ensemble::processReplacing(float **inputs, float **outputs, VstInt32 sample double tempL; double tempR; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -117,7 +114,8 @@ void Ensemble::processReplacing(float **inputs, float **outputs, VstInt32 sample airPrevR = inputSampleR; inputSampleR += (airFactorR*brighten); //air, compensates for loss of highs in flanger's interpolation - + fpFlip = !fpFlip; + if (gcount < 1 || gcount > 32767) {gcount = 32767;} count = gcount; dL[count+32767] = dL[count] = tempL = inputSampleL; @@ -155,25 +153,14 @@ void Ensemble::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -215,9 +202,6 @@ void Ensemble::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double tempL; double tempR; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -295,6 +279,7 @@ void Ensemble::processDoubleReplacing(double **inputs, double **outputs, VstInt3 airPrevR = inputSampleR; inputSampleR += (airFactorR*brighten); //air, compensates for loss of highs in flanger's interpolation + fpFlip = !fpFlip; if (gcount < 1 || gcount > 32767) {gcount = 32767;} count = gcount; @@ -333,25 +318,16 @@ void Ensemble::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/EveryTrim/.vs/VSTProject/v14/.suo b/plugins/WinVST/EveryTrim/.vs/VSTProject/v14/.suo Binary files differindex 649aa5c..29d586f 100755 --- a/plugins/WinVST/EveryTrim/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/EveryTrim/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/EveryTrim/EveryTrim.cpp b/plugins/WinVST/EveryTrim/EveryTrim.cpp index 1e81d35..b0a98d4 100755 --- a/plugins/WinVST/EveryTrim/EveryTrim.cpp +++ b/plugins/WinVST/EveryTrim/EveryTrim.cpp @@ -17,11 +17,8 @@ EveryTrim::EveryTrim(audioMasterCallback audioMaster) : C = 0.5; D = 0.5; E = 0.5; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/EveryTrim/EveryTrim.h b/plugins/WinVST/EveryTrim/EveryTrim.h index 28d9c27..4efc3cd 100755 --- a/plugins/WinVST/EveryTrim/EveryTrim.h +++ b/plugins/WinVST/EveryTrim/EveryTrim.h @@ -56,11 +56,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/EveryTrim/EveryTrimProc.cpp b/plugins/WinVST/EveryTrim/EveryTrimProc.cpp index 30d764f..3c30eda 100755 --- a/plugins/WinVST/EveryTrim/EveryTrimProc.cpp +++ b/plugins/WinVST/EveryTrim/EveryTrimProc.cpp @@ -14,9 +14,6 @@ void EveryTrim::processReplacing(float **inputs, float **outputs, VstInt32 sampl float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double leftgain = pow(10.0,((A*24.0)-12.0)/20.0); double rightgain = pow(10.0,((B*24.0)-12.0)/20.0); @@ -83,25 +80,14 @@ void EveryTrim::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleR = (mid-side) * rightgain; //contains mastergain and the gain trim fixing the mid/side - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -120,9 +106,6 @@ void EveryTrim::processDoubleReplacing(double **inputs, double **outputs, VstInt double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double leftgain = pow(10.0,((A*24.0)-12.0)/20.0); double rightgain = pow(10.0,((B*24.0)-12.0)/20.0); @@ -189,25 +172,16 @@ void EveryTrim::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleR = (mid-side) * rightgain; //contains mastergain and the gain trim fixing the mid/side - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/FathomFive/.vs/VSTProject/v14/.suo b/plugins/WinVST/FathomFive/.vs/VSTProject/v14/.suo Binary files differindex 42015e9..9a9ba63 100755 --- a/plugins/WinVST/FathomFive/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/FathomFive/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/FathomFive/FathomFive.cpp b/plugins/WinVST/FathomFive/FathomFive.cpp index 8cd3f52..fd04b6d 100755 --- a/plugins/WinVST/FathomFive/FathomFive.cpp +++ b/plugins/WinVST/FathomFive/FathomFive.cpp @@ -100,16 +100,6 @@ void FathomFive::setParameter(VstInt32 index, float value) { //variables can also be set in the processreplacing loop, and there they'll be set every buffersize //here they're set when a parameter's actually changed, which should be less frequent, but //you must use global variables in the FathomFive.h file to do it. -// switch((VstInt32)( D * 3.999 )) -// { -// case 0: fpFlip = true; break; //choice A -// case 1: fpFlip = false; break; //choice B -// case 2: break; //choice C -// case 3: break; //choice D -// default: break; //should not happen -// } - //this relates to using D as a 'popup' and changing things based on that switch. - //we are using fpFlip just because it's already there globally, as an example. } float FathomFive::getParameter(VstInt32 index) { diff --git a/plugins/WinVST/Floor/.vs/VSTProject/v14/.suo b/plugins/WinVST/Floor/.vs/VSTProject/v14/.suo Binary files differindex 9ba9265..65d9c96 100755 --- a/plugins/WinVST/Floor/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Floor/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Floor/FloorProc.cpp b/plugins/WinVST/Floor/FloorProc.cpp index 69a2ccb..865446b 100755 --- a/plugins/WinVST/Floor/FloorProc.cpp +++ b/plugins/WinVST/Floor/FloorProc.cpp @@ -247,18 +247,14 @@ void Floor::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -268,12 +264,6 @@ void Floor::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Floor::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -516,18 +506,16 @@ void Floor::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -537,10 +525,4 @@ void Floor::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/WinVST/Fracture/.vs/VSTProject/v14/.suo b/plugins/WinVST/Fracture/.vs/VSTProject/v14/.suo Binary files differindex f5e4242..95ce6ca 100755 --- a/plugins/WinVST/Fracture/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Fracture/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Fracture/Fracture.cpp b/plugins/WinVST/Fracture/Fracture.cpp index 255475a..03f3b19 100755 --- a/plugins/WinVST/Fracture/Fracture.cpp +++ b/plugins/WinVST/Fracture/Fracture.cpp @@ -16,11 +16,8 @@ Fracture::Fracture(audioMasterCallback audioMaster) : B = 0.5; //2 from 1 to 3: (B*2.999)+1 C = 1.0; D = 1.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Fracture/Fracture.h b/plugins/WinVST/Fracture/Fracture.h index 659f94b..49d2718 100755 --- a/plugins/WinVST/Fracture/Fracture.h +++ b/plugins/WinVST/Fracture/Fracture.h @@ -55,11 +55,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/Fracture/FractureProc.cpp b/plugins/WinVST/Fracture/FractureProc.cpp index 8e217d8..5c1aaa9 100755 --- a/plugins/WinVST/Fracture/FractureProc.cpp +++ b/plugins/WinVST/Fracture/FractureProc.cpp @@ -14,9 +14,6 @@ void Fracture::processReplacing(float **inputs, float **outputs, VstInt32 sample float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double density = A*4; double fracture = (((B*2.999)+1)*3.14159265358979); @@ -101,25 +98,14 @@ void Fracture::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleL = (drySampleL * dry)+(inputSampleL * wet); inputSampleR = (drySampleR * dry)+(inputSampleR * wet); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -141,9 +127,6 @@ void Fracture::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double density = A*4; double fracture = (((B*2.999)+1)*3.14159265358979); @@ -228,25 +211,16 @@ void Fracture::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleL = (drySampleL * dry)+(inputSampleL * wet); inputSampleR = (drySampleR * dry)+(inputSampleR * wet); - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/FromTape/.vs/VSTProject/v14/.suo b/plugins/WinVST/FromTape/.vs/VSTProject/v14/.suo Binary files differindex f635737..cdcd603 100755 --- a/plugins/WinVST/FromTape/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/FromTape/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/FromTape/FromTape.cpp b/plugins/WinVST/FromTape/FromTape.cpp index 55c5ced..40b7876 100755 --- a/plugins/WinVST/FromTape/FromTape.cpp +++ b/plugins/WinVST/FromTape/FromTape.cpp @@ -82,11 +82,8 @@ FromTape::FromTape(audioMasterCallback audioMaster) : flip = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/FromTape/FromTape.h b/plugins/WinVST/FromTape/FromTape.h index 376b767..40efabc 100755 --- a/plugins/WinVST/FromTape/FromTape.h +++ b/plugins/WinVST/FromTape/FromTape.h @@ -120,11 +120,8 @@ private: double iirSampleYR; double iirSampleZR; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/FromTape/FromTapeProc.cpp b/plugins/WinVST/FromTape/FromTapeProc.cpp index 42753e5..2d268ef 100755 --- a/plugins/WinVST/FromTape/FromTapeProc.cpp +++ b/plugins/WinVST/FromTape/FromTapeProc.cpp @@ -37,9 +37,6 @@ void FromTape::processReplacing(float **inputs, float **outputs, VstInt32 sample double drySampleR; double randy; double invrandy; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -224,25 +221,14 @@ void FromTape::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -284,9 +270,6 @@ void FromTape::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double drySampleR; double randy; double invrandy; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -471,25 +454,16 @@ void FromTape::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Gatelope/.vs/VSTProject/v14/.suo b/plugins/WinVST/Gatelope/.vs/VSTProject/v14/.suo Binary files differindex e445e51..3cb4e6c 100755 --- a/plugins/WinVST/Gatelope/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Gatelope/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Gatelope/GatelopeProc.cpp b/plugins/WinVST/Gatelope/GatelopeProc.cpp index b32bddb..f429042 100755 --- a/plugins/WinVST/Gatelope/GatelopeProc.cpp +++ b/plugins/WinVST/Gatelope/GatelopeProc.cpp @@ -196,18 +196,14 @@ void Gatelope::processReplacing(float **inputs, float **outputs, VstInt32 sample flip = !flip; - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -217,12 +213,6 @@ void Gatelope::processReplacing(float **inputs, float **outputs, VstInt32 sample *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Gatelope::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -414,18 +404,16 @@ void Gatelope::processDoubleReplacing(double **inputs, double **outputs, VstInt3 flip = !flip; - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -435,10 +423,4 @@ void Gatelope::processDoubleReplacing(double **inputs, double **outputs, VstInt3 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/WinVST/Golem/.vs/VSTProject/v14/.suo b/plugins/WinVST/Golem/.vs/VSTProject/v14/.suo Binary files differindex d595650..9e8f1c5 100755 --- a/plugins/WinVST/Golem/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Golem/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Golem/Golem.cpp b/plugins/WinVST/Golem/Golem.cpp index 8f63b48..c99c5cd 100755 --- a/plugins/WinVST/Golem/Golem.cpp +++ b/plugins/WinVST/Golem/Golem.cpp @@ -17,10 +17,8 @@ Golem::Golem(audioMasterCallback audioMaster) : C = 0.0; for(count = 0; count < 4098; count++) {p[count] = 0.0;} count = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; flip = true; //this is reset: values being initialized only once. Startup values, whatever they are. diff --git a/plugins/WinVST/Golem/Golem.h b/plugins/WinVST/Golem/Golem.h index 8bb81d8..e02ab78 100755 --- a/plugins/WinVST/Golem/Golem.h +++ b/plugins/WinVST/Golem/Golem.h @@ -54,10 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; + long double fpNShapeL; + long double fpNShapeR; bool flip; //default stuff double p[4099]; diff --git a/plugins/WinVST/Golem/GolemProc.cpp b/plugins/WinVST/Golem/GolemProc.cpp index 9235869..1d7e9f5 100755 --- a/plugins/WinVST/Golem/GolemProc.cpp +++ b/plugins/WinVST/Golem/GolemProc.cpp @@ -14,9 +14,6 @@ void Golem::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; int phase = (int)((C * 5.999)+1); double balance = ((A*2.0)-1.0) / 2.0; double gainL = 0.5 - balance; @@ -115,25 +112,14 @@ void Golem::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra inputSampleR = inputSampleL; //the output is totally mono - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -152,9 +138,6 @@ void Golem::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; int phase = (int)((C * 5.999)+1); double balance = ((A*2.0)-1.0) / 2.0; double gainL = 0.5 - balance; @@ -253,25 +236,16 @@ void Golem::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s inputSampleR = inputSampleL; //the output is totally mono - //noise shaping to 64-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - flip = !flip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/GrooveWear/.vs/Console4Channel64/v14/.suo b/plugins/WinVST/GrooveWear/.vs/Console4Channel64/v14/.suo Binary files differindex 777b846..777b846 100644..100755 --- a/plugins/WinVST/GrooveWear/.vs/Console4Channel64/v14/.suo +++ b/plugins/WinVST/GrooveWear/.vs/Console4Channel64/v14/.suo diff --git a/plugins/WinVST/GrooveWear/.vs/VSTProject/v14/.suo b/plugins/WinVST/GrooveWear/.vs/VSTProject/v14/.suo Binary files differindex 76a8251..526a0d5 100644..100755 --- a/plugins/WinVST/GrooveWear/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/GrooveWear/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/GrooveWear/GrooveWear.cpp b/plugins/WinVST/GrooveWear/GrooveWear.cpp index e553daa..cbe1fc5 100644..100755 --- a/plugins/WinVST/GrooveWear/GrooveWear.cpp +++ b/plugins/WinVST/GrooveWear/GrooveWear.cpp @@ -36,11 +36,8 @@ GrooveWear::GrooveWear(audioMasterCallback audioMaster) : cMidPrevR = 0.0; dMidPrevR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/GrooveWear/GrooveWear.h b/plugins/WinVST/GrooveWear/GrooveWear.h index 7b933c2..4bf9745 100644..100755 --- a/plugins/WinVST/GrooveWear/GrooveWear.h +++ b/plugins/WinVST/GrooveWear/GrooveWear.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double aMidL[21]; diff --git a/plugins/WinVST/GrooveWear/GrooveWearProc.cpp b/plugins/WinVST/GrooveWear/GrooveWearProc.cpp index a22f6df..e663203 100644..100755 --- a/plugins/WinVST/GrooveWear/GrooveWearProc.cpp +++ b/plugins/WinVST/GrooveWear/GrooveWearProc.cpp @@ -14,9 +14,6 @@ void GrooveWear::processReplacing(float **inputs, float **outputs, VstInt32 samp float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double overallscale = (pow(A,2)*19.0)+1.0; double gain = overallscale; @@ -433,25 +430,14 @@ void GrooveWear::processReplacing(float **inputs, float **outputs, VstInt32 samp drySampleR = inputSampleR; } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -470,9 +456,6 @@ void GrooveWear::processDoubleReplacing(double **inputs, double **outputs, VstIn double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double overallscale = (pow(A,2)*19.0)+1.0; double gain = overallscale; @@ -889,25 +872,16 @@ void GrooveWear::processDoubleReplacing(double **inputs, double **outputs, VstIn drySampleR = inputSampleR; } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/GrooveWear/VSTProject.VC.db b/plugins/WinVST/GrooveWear/VSTProject.VC.db Binary files differnew file mode 100755 index 0000000..677f802 --- /dev/null +++ b/plugins/WinVST/GrooveWear/VSTProject.VC.db diff --git a/plugins/WinVST/GrooveWear/VSTProject.vcxproj b/plugins/WinVST/GrooveWear/VSTProject.vcxproj index 88eb5f5..88eb5f5 100644..100755 --- a/plugins/WinVST/GrooveWear/VSTProject.vcxproj +++ b/plugins/WinVST/GrooveWear/VSTProject.vcxproj diff --git a/plugins/WinVST/GrooveWear/VSTProject.vcxproj.filters b/plugins/WinVST/GrooveWear/VSTProject.vcxproj.filters index 7946bd2..7946bd2 100644..100755 --- a/plugins/WinVST/GrooveWear/VSTProject.vcxproj.filters +++ b/plugins/WinVST/GrooveWear/VSTProject.vcxproj.filters diff --git a/plugins/WinVST/GrooveWear/VSTProject.vcxproj.user b/plugins/WinVST/GrooveWear/VSTProject.vcxproj.user index 2216267..2216267 100644..100755 --- a/plugins/WinVST/GrooveWear/VSTProject.vcxproj.user +++ b/plugins/WinVST/GrooveWear/VSTProject.vcxproj.user diff --git a/plugins/WinVST/GrooveWear/vstplug.def b/plugins/WinVST/GrooveWear/vstplug.def index 5bf499a..5bf499a 100644..100755 --- a/plugins/WinVST/GrooveWear/vstplug.def +++ b/plugins/WinVST/GrooveWear/vstplug.def diff --git a/plugins/WinVST/GuitarConditioner/.vs/VSTProject/v14/.suo b/plugins/WinVST/GuitarConditioner/.vs/VSTProject/v14/.suo Binary files differindex 9e37109..82c0a67 100755 --- a/plugins/WinVST/GuitarConditioner/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/GuitarConditioner/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/GuitarConditioner/GuitarConditioner.cpp b/plugins/WinVST/GuitarConditioner/GuitarConditioner.cpp index 8f3ccfc..b0388ab 100755 --- a/plugins/WinVST/GuitarConditioner/GuitarConditioner.cpp +++ b/plugins/WinVST/GuitarConditioner/GuitarConditioner.cpp @@ -12,12 +12,9 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new G GuitarConditioner::GuitarConditioner(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, kNumPrograms, kNumParameters) { - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; fpFlip = true; - lastSampleTL = 0.0; lastSampleBL = 0.0; //for Slews. T for treble, B for bass iirSampleTAL = 0.0; diff --git a/plugins/WinVST/GuitarConditioner/GuitarConditioner.h b/plugins/WinVST/GuitarConditioner/GuitarConditioner.h index 7bd73ab..3be09e1 100755 --- a/plugins/WinVST/GuitarConditioner/GuitarConditioner.h +++ b/plugins/WinVST/GuitarConditioner/GuitarConditioner.h @@ -49,13 +49,10 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff - + bool fpFlip; double lastSampleTL; double lastSampleBL; //for Slews double iirSampleTAL; diff --git a/plugins/WinVST/GuitarConditioner/GuitarConditionerProc.cpp b/plugins/WinVST/GuitarConditioner/GuitarConditionerProc.cpp index 83970f2..b25d600 100755 --- a/plugins/WinVST/GuitarConditioner/GuitarConditionerProc.cpp +++ b/plugins/WinVST/GuitarConditioner/GuitarConditionerProc.cpp @@ -17,9 +17,6 @@ void GuitarConditioner::processReplacing(float **inputs, float **outputs, VstInt double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -164,26 +161,18 @@ void GuitarConditioner::processReplacing(float **inputs, float **outputs, VstInt lastSampleBR = bassR; //bassR slew inputSampleL = trebleL + bassL; //final merge - inputSampleR = trebleR + bassR; //final merge - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } + inputSampleR = trebleR + bassR; //final merge fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -205,9 +194,6 @@ void GuitarConditioner::processDoubleReplacing(double **inputs, double **outputs double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -353,26 +339,19 @@ void GuitarConditioner::processDoubleReplacing(double **inputs, double **outputs lastSampleBR = bassR; //bassR slew inputSampleL = trebleL + bassL; //final merge - inputSampleR = trebleR + bassR; //final merge - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } + inputSampleR = trebleR + bassR; //final merge fpFlip = !fpFlip; - //end noise shaping on 64 bit output + + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/HardVacuum/.vs/VSTProject/v14/.suo b/plugins/WinVST/HardVacuum/.vs/VSTProject/v14/.suo Binary files differindex c83c797..33c256b 100755 --- a/plugins/WinVST/HardVacuum/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/HardVacuum/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/HardVacuum/HardVacuum.cpp b/plugins/WinVST/HardVacuum/HardVacuum.cpp index 2ad1a4a..9c14f89 100755 --- a/plugins/WinVST/HardVacuum/HardVacuum.cpp +++ b/plugins/WinVST/HardVacuum/HardVacuum.cpp @@ -19,11 +19,8 @@ HardVacuum::HardVacuum(audioMasterCallback audioMaster) : E = 1.0; lastSampleL = 0.0; lastSampleR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/HardVacuum/HardVacuum.h b/plugins/WinVST/HardVacuum/HardVacuum.h index 6321df6..7f4c098 100755 --- a/plugins/WinVST/HardVacuum/HardVacuum.h +++ b/plugins/WinVST/HardVacuum/HardVacuum.h @@ -56,11 +56,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double lastSampleL; diff --git a/plugins/WinVST/HardVacuum/HardVacuumProc.cpp b/plugins/WinVST/HardVacuum/HardVacuumProc.cpp index f8fe4fd..e0e07e2 100755 --- a/plugins/WinVST/HardVacuum/HardVacuumProc.cpp +++ b/plugins/WinVST/HardVacuum/HardVacuumProc.cpp @@ -33,9 +33,6 @@ void HardVacuum::processReplacing(float **inputs, float **outputs, VstInt32 samp double skewL; double skewR; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double drySampleL; double drySampleR; @@ -176,25 +173,14 @@ void HardVacuum::processReplacing(float **inputs, float **outputs, VstInt32 samp inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -232,9 +218,6 @@ void HardVacuum::processDoubleReplacing(double **inputs, double **outputs, VstIn double skewL; double skewR; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double drySampleL; double drySampleR; @@ -376,25 +359,16 @@ void HardVacuum::processDoubleReplacing(double **inputs, double **outputs, VstIn inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/HermeTrim/.vs/VSTProject/v14/.suo b/plugins/WinVST/HermeTrim/.vs/VSTProject/v14/.suo Binary files differindex d06b803..7bf1a45 100755 --- a/plugins/WinVST/HermeTrim/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/HermeTrim/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/HermeTrim/HermeTrim.cpp b/plugins/WinVST/HermeTrim/HermeTrim.cpp index 562df2c..117cc45 100755 --- a/plugins/WinVST/HermeTrim/HermeTrim.cpp +++ b/plugins/WinVST/HermeTrim/HermeTrim.cpp @@ -17,11 +17,8 @@ HermeTrim::HermeTrim(audioMasterCallback audioMaster) : C = 0.5; D = 0.5; E = 0.5; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/HermeTrim/HermeTrim.h b/plugins/WinVST/HermeTrim/HermeTrim.h index b8503ca..f0bc8ed 100755 --- a/plugins/WinVST/HermeTrim/HermeTrim.h +++ b/plugins/WinVST/HermeTrim/HermeTrim.h @@ -56,11 +56,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/HermeTrim/HermeTrimProc.cpp b/plugins/WinVST/HermeTrim/HermeTrimProc.cpp index d920843..66d3144 100755 --- a/plugins/WinVST/HermeTrim/HermeTrimProc.cpp +++ b/plugins/WinVST/HermeTrim/HermeTrimProc.cpp @@ -14,9 +14,6 @@ void HermeTrim::processReplacing(float **inputs, float **outputs, VstInt32 sampl float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double leftgain = pow(10.0,((A*3.0)-1.5)/20.0); double rightgain = pow(10.0,((B*3.0)-1.5)/20.0); @@ -83,25 +80,14 @@ void HermeTrim::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleR = (mid-side) * rightgain; //contains mastergain and the gain trim fixing the mid/side - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -120,9 +106,6 @@ void HermeTrim::processDoubleReplacing(double **inputs, double **outputs, VstInt double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double leftgain = pow(10.0,((A*3.0)-1.5)/20.0); double rightgain = pow(10.0,((B*3.0)-1.5)/20.0); @@ -189,25 +172,16 @@ void HermeTrim::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleR = (mid-side) * rightgain; //contains mastergain and the gain trim fixing the mid/side - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Hermepass/.vs/VSTProject/v14/.suo b/plugins/WinVST/Hermepass/.vs/VSTProject/v14/.suo Binary files differindex 2a195c6..3564c29 100755 --- a/plugins/WinVST/Hermepass/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Hermepass/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Hermepass/Hermepass.cpp b/plugins/WinVST/Hermepass/Hermepass.cpp index 3bfb1aa..4e4a532 100755 --- a/plugins/WinVST/Hermepass/Hermepass.cpp +++ b/plugins/WinVST/Hermepass/Hermepass.cpp @@ -32,12 +32,9 @@ Hermepass::Hermepass(audioMasterCallback audioMaster) : iirFR = 0.0; iirGR = 0.0; iirHR = 0.0; - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Hermepass/Hermepass.h b/plugins/WinVST/Hermepass/Hermepass.h index 4f29497..1000bb9 100755 --- a/plugins/WinVST/Hermepass/Hermepass.h +++ b/plugins/WinVST/Hermepass/Hermepass.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double iirAL; double iirBL; //first stage is the flipping one, for lowest slope. It is always engaged, and is the highest one @@ -76,7 +73,7 @@ private: double iirFR; //our slope control will have a pow() on it so that the high orders are way to the right side double iirGR; double iirHR; //seven poles max, and the final pole is always at 20hz directly. - + bool fpFlip; float A; diff --git a/plugins/WinVST/Hermepass/HermepassProc.cpp b/plugins/WinVST/Hermepass/HermepassProc.cpp index 01b35aa..fddffe3 100755 --- a/plugins/WinVST/Hermepass/HermepassProc.cpp +++ b/plugins/WinVST/Hermepass/HermepassProc.cpp @@ -17,10 +17,8 @@ void Hermepass::processReplacing(float **inputs, float **outputs, VstInt32 sampl double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; - + long double fpNew = 1.0 - fpOld; double rangescale = 0.1 / overallscale; double cutoff = pow(A,3); @@ -175,26 +173,17 @@ void Hermepass::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleR -= correction; //end R channel - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -216,10 +205,8 @@ void Hermepass::processDoubleReplacing(double **inputs, double **outputs, VstInt double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing long double fpOld = 0.618033988749894848204586; //golden ratio! long double fpNew = 1.0 - fpOld; - double rangescale = 0.1 / overallscale; double cutoff = pow(A,3); @@ -374,26 +361,19 @@ void Hermepass::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleR -= correction; //end R channel - - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } fpFlip = !fpFlip; - //end noise shaping on 64 bit output + + + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/HighImpact/.vs/VSTProject/v14/.suo b/plugins/WinVST/HighImpact/.vs/VSTProject/v14/.suo Binary files differindex 56b69ec..fadcdca 100755 --- a/plugins/WinVST/HighImpact/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/HighImpact/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/HighImpact/HighImpact.cpp b/plugins/WinVST/HighImpact/HighImpact.cpp index 0944b18..960d80c 100755 --- a/plugins/WinVST/HighImpact/HighImpact.cpp +++ b/plugins/WinVST/HighImpact/HighImpact.cpp @@ -17,11 +17,8 @@ HighImpact::HighImpact(audioMasterCallback audioMaster) : C = 0.0; lastSampleL = 0.0; lastSampleR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/HighImpact/HighImpact.h b/plugins/WinVST/HighImpact/HighImpact.h index 9c7a4a0..a57230b 100755 --- a/plugins/WinVST/HighImpact/HighImpact.h +++ b/plugins/WinVST/HighImpact/HighImpact.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double lastSampleL; diff --git a/plugins/WinVST/HighImpact/HighImpactProc.cpp b/plugins/WinVST/HighImpact/HighImpactProc.cpp index 037bbe9..f24804a 100755 --- a/plugins/WinVST/HighImpact/HighImpactProc.cpp +++ b/plugins/WinVST/HighImpact/HighImpactProc.cpp @@ -14,9 +14,6 @@ void HighImpact::processReplacing(float **inputs, float **outputs, VstInt32 samp float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -161,25 +158,14 @@ void HighImpact::processReplacing(float **inputs, float **outputs, VstInt32 samp //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -201,9 +187,6 @@ void HighImpact::processDoubleReplacing(double **inputs, double **outputs, VstIn double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -348,25 +331,16 @@ void HighImpact::processDoubleReplacing(double **inputs, double **outputs, VstIn //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Highpass/.vs/VSTProject/v14/.suo b/plugins/WinVST/Highpass/.vs/VSTProject/v14/.suo Binary files differindex 9f7300c..3a225dd 100755 --- a/plugins/WinVST/Highpass/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Highpass/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Highpass/Highpass.cpp b/plugins/WinVST/Highpass/Highpass.cpp index ed43f9d..86ebe24 100755 --- a/plugins/WinVST/Highpass/Highpass.cpp +++ b/plugins/WinVST/Highpass/Highpass.cpp @@ -19,10 +19,8 @@ Highpass::Highpass(audioMasterCallback audioMaster) : iirSampleBL = 0.0; iirSampleAR = 0.0; iirSampleBR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; fpFlip = true; //this is reset: values being initialized only once. Startup values, whatever they are. diff --git a/plugins/WinVST/Highpass/Highpass.h b/plugins/WinVST/Highpass/Highpass.h index 03d8609..673f951 100755 --- a/plugins/WinVST/Highpass/Highpass.h +++ b/plugins/WinVST/Highpass/Highpass.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; @@ -68,7 +65,7 @@ private: double iirSampleBL; double iirSampleAR; double iirSampleBR; - + bool fpFlip; }; #endif diff --git a/plugins/WinVST/Highpass/HighpassProc.cpp b/plugins/WinVST/Highpass/HighpassProc.cpp index b1e7de9..371ed57 100755 --- a/plugins/WinVST/Highpass/HighpassProc.cpp +++ b/plugins/WinVST/Highpass/HighpassProc.cpp @@ -26,9 +26,6 @@ void Highpass::processReplacing(float **inputs, float **outputs, VstInt32 sample double inputSampleR; double outputSampleL; double outputSampleR; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; iirAmount += (iirAmount * tight * tight); if (tight > 0) tight /= 1.5; @@ -114,33 +111,21 @@ void Highpass::processReplacing(float **inputs, float **outputs, VstInt32 sample iirSampleBR = (iirSampleBR * (1 - (offset * iirAmount))) + (inputSampleR * (offset * iirAmount)); outputSampleR = outputSampleR - iirSampleBR; } + fpFlip = !fpFlip; if (wet < 1.0) outputSampleL = (outputSampleL * wet) + (inputSampleL * dry); if (wet < 1.0) outputSampleR = (outputSampleR * wet) + (inputSampleR * dry); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = outputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((outputSampleL-fpTemp)*fpNew); - outputSampleL += fpNShapeLA; - - fpTemp = outputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((outputSampleR-fpTemp)*fpNew); - outputSampleR += fpNShapeRA; - } - else { - fpTemp = outputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((outputSampleL-fpTemp)*fpNew); - outputSampleL += fpNShapeLB; - - fpTemp = outputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((outputSampleR-fpTemp)*fpNew); - outputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = outputSampleL; *out2 = outputSampleR; @@ -171,9 +156,6 @@ void Highpass::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double inputSampleR; double outputSampleL; double outputSampleR; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; iirAmount += (iirAmount * tight * tight); if (tight > 0) tight /= 1.5; @@ -259,33 +241,23 @@ void Highpass::processDoubleReplacing(double **inputs, double **outputs, VstInt3 iirSampleBR = (iirSampleBR * (1 - (offset * iirAmount))) + (inputSampleR * (offset * iirAmount)); outputSampleR = outputSampleR - iirSampleBR; } + fpFlip = !fpFlip; if (wet < 1.0) outputSampleL = (outputSampleL * wet) + (inputSampleL * dry); if (wet < 1.0) outputSampleR = (outputSampleR * wet) + (inputSampleR * dry); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = outputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((outputSampleL-fpTemp)*fpNew); - outputSampleL += fpNShapeLA; - - fpTemp = outputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((outputSampleR-fpTemp)*fpNew); - outputSampleR += fpNShapeRA; - } - else { - fpTemp = outputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((outputSampleL-fpTemp)*fpNew); - outputSampleL += fpNShapeLB; - - fpTemp = outputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((outputSampleR-fpTemp)*fpNew); - outputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = outputSampleL; *out2 = outputSampleR; diff --git a/plugins/WinVST/Hombre/.vs/VSTProject/v14/.suo b/plugins/WinVST/Hombre/.vs/VSTProject/v14/.suo Binary files differindex 1c81394..2fce309 100755 --- a/plugins/WinVST/Hombre/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Hombre/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Hombre/Hombre.cpp b/plugins/WinVST/Hombre/Hombre.cpp index 9ef8844..8b03ed1 100755 --- a/plugins/WinVST/Hombre/Hombre.cpp +++ b/plugins/WinVST/Hombre/Hombre.cpp @@ -17,11 +17,8 @@ Hombre::Hombre(audioMasterCallback audioMaster) : for(int count = 0; count < 4000; count++) {pL[count] = 0.0; pR[count] = 0.0;} gcount = 0; slide = 0.421; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Hombre/Hombre.h b/plugins/WinVST/Hombre/Hombre.h index 94e29b1..e23f6f3 100755 --- a/plugins/WinVST/Hombre/Hombre.h +++ b/plugins/WinVST/Hombre/Hombre.h @@ -58,11 +58,8 @@ private: double slide; int gcount; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/Hombre/HombreProc.cpp b/plugins/WinVST/Hombre/HombreProc.cpp index 01e08bd..16bf513 100755 --- a/plugins/WinVST/Hombre/HombreProc.cpp +++ b/plugins/WinVST/Hombre/HombreProc.cpp @@ -17,9 +17,6 @@ void Hombre::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double target = A; double offsetA; @@ -134,25 +131,14 @@ void Hombre::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -174,9 +160,6 @@ void Hombre::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double target = A; double offsetA; @@ -291,25 +274,16 @@ void Hombre::processDoubleReplacing(double **inputs, double **outputs, VstInt32 inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/IronOxide5/.vs/VSTProject/v14/.suo b/plugins/WinVST/IronOxide5/.vs/VSTProject/v14/.suo Binary files differindex 171a825..e1e2f87 100755 --- a/plugins/WinVST/IronOxide5/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/IronOxide5/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/IronOxide5/IronOxide5.cpp b/plugins/WinVST/IronOxide5/IronOxide5.cpp index 2d7c84f..914f53b 100755 --- a/plugins/WinVST/IronOxide5/IronOxide5.cpp +++ b/plugins/WinVST/IronOxide5/IronOxide5.cpp @@ -45,11 +45,8 @@ IronOxide5::IronOxide5(audioMasterCallback audioMaster) : rateof = 0.5; nextmax = 0.5; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/IronOxide5/IronOxide5.h b/plugins/WinVST/IronOxide5/IronOxide5.h index a7cad5d..82d4c9a 100755 --- a/plugins/WinVST/IronOxide5/IronOxide5.h +++ b/plugins/WinVST/IronOxide5/IronOxide5.h @@ -101,11 +101,8 @@ private: double nextmax; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/IronOxide5/IronOxide5Proc.cpp b/plugins/WinVST/IronOxide5/IronOxide5Proc.cpp index c0fbb35..e42d69f 100755 --- a/plugins/WinVST/IronOxide5/IronOxide5Proc.cpp +++ b/plugins/WinVST/IronOxide5/IronOxide5Proc.cpp @@ -17,9 +17,6 @@ void IronOxide5::processReplacing(float **inputs, float **outputs, VstInt32 samp double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = pow(10.0,((A*36.0)-18.0)/20.0); double outputgain = pow(10.0,((F*36.0)-18.0)/20.0); @@ -422,25 +419,14 @@ void IronOxide5::processReplacing(float **inputs, float **outputs, VstInt32 samp } //end invdrywet block with outputgain - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -462,9 +448,6 @@ void IronOxide5::processDoubleReplacing(double **inputs, double **outputs, VstIn double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = pow(10.0,((A*36.0)-18.0)/20.0); double outputgain = pow(10.0,((F*36.0)-18.0)/20.0); @@ -867,25 +850,16 @@ void IronOxide5::processDoubleReplacing(double **inputs, double **outputs, VstIn } //end invdrywet block with outputgain - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/IronOxideClassic/.vs/VSTProject/v14/.suo b/plugins/WinVST/IronOxideClassic/.vs/VSTProject/v14/.suo Binary files differindex b85b7c1..5e0f1e3 100755 --- a/plugins/WinVST/IronOxideClassic/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/IronOxideClassic/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/IronOxideClassic/IronOxideClassic.cpp b/plugins/WinVST/IronOxideClassic/IronOxideClassic.cpp index 012d8a3..8ce7103 100755 --- a/plugins/WinVST/IronOxideClassic/IronOxideClassic.cpp +++ b/plugins/WinVST/IronOxideClassic/IronOxideClassic.cpp @@ -22,12 +22,9 @@ IronOxideClassic::IronOxideClassic(audioMasterCallback audioMaster) : iirSampleAL = iirSampleBL = 0.0; fastIIRAR = fastIIRBR = slowIIRAR = slowIIRBR = 0.0; iirSampleAR = iirSampleBR = 0.0; - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/IronOxideClassic/IronOxideClassic.h b/plugins/WinVST/IronOxideClassic/IronOxideClassic.h index b7f8bfa..bafb457 100755 --- a/plugins/WinVST/IronOxideClassic/IronOxideClassic.h +++ b/plugins/WinVST/IronOxideClassic/IronOxideClassic.h @@ -71,12 +71,9 @@ private: double slowIIRBR; int gcount; - - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/IronOxideClassic/IronOxideClassicProc.cpp b/plugins/WinVST/IronOxideClassic/IronOxideClassicProc.cpp index c245166..97bbaca 100755 --- a/plugins/WinVST/IronOxideClassic/IronOxideClassicProc.cpp +++ b/plugins/WinVST/IronOxideClassic/IronOxideClassicProc.cpp @@ -17,9 +17,6 @@ void IronOxideClassic::processReplacing(float **inputs, float **outputs, VstInt3 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = pow(10.0,((A*36.0)-18.0)/20.0); double outputgain = pow(10.0,((C*36.0)-18.0)/20.0); @@ -343,26 +340,16 @@ void IronOxideClassic::processReplacing(float **inputs, float **outputs, VstInt3 inputSampleL *= outputgain; inputSampleR *= outputgain; } - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -384,9 +371,6 @@ void IronOxideClassic::processDoubleReplacing(double **inputs, double **outputs, double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = pow(10.0,((A*36.0)-18.0)/20.0); double outputgain = pow(10.0,((C*36.0)-18.0)/20.0); @@ -710,26 +694,18 @@ void IronOxideClassic::processDoubleReplacing(double **inputs, double **outputs, inputSampleL *= outputgain; inputSampleR *= outputgain; } - - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } fpFlip = !fpFlip; - //end noise shaping on 64 bit output + + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Logical4/.vs/VSTProject/v14/.suo b/plugins/WinVST/Logical4/.vs/VSTProject/v14/.suo Binary files differindex 0a67ad3..34fa65c 100755 --- a/plugins/WinVST/Logical4/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Logical4/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Logical4/Logical4.cpp b/plugins/WinVST/Logical4/Logical4.cpp index b17cc55..15d185b 100755 --- a/plugins/WinVST/Logical4/Logical4.cpp +++ b/plugins/WinVST/Logical4/Logical4.cpp @@ -77,12 +77,9 @@ Logical4::Logical4(audioMasterCallback audioMaster) : gcount = 0; //end Power Sags - - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Logical4/Logical4.h b/plugins/WinVST/Logical4/Logical4.h index 71e118e..fd802c8 100755 --- a/plugins/WinVST/Logical4/Logical4.h +++ b/plugins/WinVST/Logical4/Logical4.h @@ -143,10 +143,8 @@ private: int gcount; - double fpNShapeLA; - double fpNShapeLB; - double fpNShapeRA; - double fpNShapeRB; + double fpNShapeL; + double fpNShapeR; bool fpFlip; //default stuff diff --git a/plugins/WinVST/Logical4/Logical4Proc.cpp b/plugins/WinVST/Logical4/Logical4Proc.cpp index 0d09fcf..5d079f3 100755 --- a/plugins/WinVST/Logical4/Logical4Proc.cpp +++ b/plugins/WinVST/Logical4/Logical4Proc.cpp @@ -17,9 +17,8 @@ void Logical4::processReplacing(float **inputs, float **outputs, VstInt32 sample double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - double fpOld = 0.618033988749894848204586; //golden ratio! - double fpNew = 1.0 - fpOld; + long double fpOld = 0.618033988749894848204586; //golden ratio! + long double fpNew = 1.0 - fpOld; float drySampleL; float drySampleR; @@ -869,27 +868,17 @@ void Logical4::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleL = (inputSampleL * wet) + (drySampleL * dry); inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } + fpFlip = !fpFlip; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -911,9 +900,8 @@ void Logical4::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - double fpOld = 0.618033988749894848204586; //golden ratio! - double fpNew = 1.0 - fpOld; + long double fpOld = 0.618033988749894848204586; //golden ratio! + long double fpNew = 1.0 - fpOld; float drySampleL; float drySampleR; @@ -1762,26 +1750,18 @@ void Logical4::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleL = (inputSampleL * wet) + (drySampleL * dry); inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } fpFlip = !fpFlip; - //end noise shaping on 64 bit output + + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Loud/.vs/VSTProject/v14/.suo b/plugins/WinVST/Loud/.vs/VSTProject/v14/.suo Binary files differindex abcac37..ae71242 100755 --- a/plugins/WinVST/Loud/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Loud/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Loud/Loud.cpp b/plugins/WinVST/Loud/Loud.cpp index 43f7ffc..009124d 100755 --- a/plugins/WinVST/Loud/Loud.cpp +++ b/plugins/WinVST/Loud/Loud.cpp @@ -15,11 +15,8 @@ Loud::Loud(audioMasterCallback audioMaster) : A = 0.0; B = 1.0; C = 1.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Loud/Loud.h b/plugins/WinVST/Loud/Loud.h index 85b66a2..17537c2 100755 --- a/plugins/WinVST/Loud/Loud.h +++ b/plugins/WinVST/Loud/Loud.h @@ -56,11 +56,8 @@ private: double lastSampleL; double lastSampleR; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/Loud/LoudProc.cpp b/plugins/WinVST/Loud/LoudProc.cpp index 8aedede..35ee29b 100755 --- a/plugins/WinVST/Loud/LoudProc.cpp +++ b/plugins/WinVST/Loud/LoudProc.cpp @@ -18,9 +18,6 @@ void Loud::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram overallscale /= 44100.0; overallscale *= getSampleRate(); double boost = pow(A+1.0,5); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double output = B; double wet = C; double dry = 1.0-wet; @@ -143,25 +140,14 @@ void Loud::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -184,9 +170,6 @@ void Loud::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa overallscale /= 44100.0; overallscale *= getSampleRate(); double boost = pow(A+1.0,5); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double output = B; double wet = C; double dry = 1.0-wet; @@ -308,25 +291,16 @@ void Loud::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Lowpass/.vs/VSTProject/v14/.suo b/plugins/WinVST/Lowpass/.vs/VSTProject/v14/.suo Binary files differindex f5cbb3f..cf0ac15 100755 --- a/plugins/WinVST/Lowpass/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Lowpass/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Lowpass/Lowpass.cpp b/plugins/WinVST/Lowpass/Lowpass.cpp index 8178799..18064fc 100755 --- a/plugins/WinVST/Lowpass/Lowpass.cpp +++ b/plugins/WinVST/Lowpass/Lowpass.cpp @@ -19,10 +19,8 @@ Lowpass::Lowpass(audioMasterCallback audioMaster) : iirSampleBL = 0.0; iirSampleAR = 0.0; iirSampleBR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; fpFlip = true; //this is reset: values being initialized only once. Startup values, whatever they are. diff --git a/plugins/WinVST/Lowpass/Lowpass.h b/plugins/WinVST/Lowpass/Lowpass.h index 1b99c55..40ac456 100755 --- a/plugins/WinVST/Lowpass/Lowpass.h +++ b/plugins/WinVST/Lowpass/Lowpass.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; @@ -68,7 +65,7 @@ private: double iirSampleBL; double iirSampleAR; double iirSampleBR; - + bool fpFlip; }; #endif diff --git a/plugins/WinVST/Lowpass/LowpassProc.cpp b/plugins/WinVST/Lowpass/LowpassProc.cpp index bcce714..bcc3690 100755 --- a/plugins/WinVST/Lowpass/LowpassProc.cpp +++ b/plugins/WinVST/Lowpass/LowpassProc.cpp @@ -27,9 +27,6 @@ void Lowpass::processReplacing(float **inputs, float **outputs, VstInt32 sampleF double inputSampleR; double outputSampleL; double outputSampleR; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; iirAmount += (iirAmount * tight * tight); if (tight > 0) tight /= 1.5; @@ -116,33 +113,21 @@ void Lowpass::processReplacing(float **inputs, float **outputs, VstInt32 sampleF iirSampleBR = (iirSampleBR * (1 - (offset * iirAmount))) + (inputSampleR * (offset * iirAmount)); outputSampleR = iirSampleBR; } + fpFlip = !fpFlip; if (wet < 1.0) outputSampleL = (outputSampleL * wet) + (inputSampleL * dry); if (wet < 1.0) outputSampleR = (outputSampleR * wet) + (inputSampleR * dry); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = outputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((outputSampleL-fpTemp)*fpNew); - outputSampleL += fpNShapeLA; - - fpTemp = outputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((outputSampleR-fpTemp)*fpNew); - outputSampleR += fpNShapeRA; - } - else { - fpTemp = outputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((outputSampleL-fpTemp)*fpNew); - outputSampleL += fpNShapeLB; - - fpTemp = outputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((outputSampleR-fpTemp)*fpNew); - outputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = outputSampleL; *out2 = outputSampleR; @@ -174,9 +159,6 @@ void Lowpass::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double inputSampleR; double outputSampleL; double outputSampleR; - double fpTemp; - double fpOld = 0.618033988749894848204586; //golden ratio! - double fpNew = 1.0 - fpOld; iirAmount += (iirAmount * tight * tight); if (tight > 0) tight /= 1.5; @@ -263,33 +245,23 @@ void Lowpass::processDoubleReplacing(double **inputs, double **outputs, VstInt32 iirSampleBR = (iirSampleBR * (1 - (offset * iirAmount))) + (inputSampleR * (offset * iirAmount)); outputSampleR = iirSampleBR; } + fpFlip = !fpFlip; if (wet < 1.0) outputSampleL = (outputSampleL * wet) + (inputSampleL * dry); if (wet < 1.0) outputSampleR = (outputSampleR * wet) + (inputSampleR * dry); - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = outputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((outputSampleL-fpTemp)*fpNew); - outputSampleL += fpNShapeLA; - - fpTemp = outputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((outputSampleR-fpTemp)*fpNew); - outputSampleR += fpNShapeRA; - } - else { - fpTemp = outputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((outputSampleL-fpTemp)*fpNew); - outputSampleL += fpNShapeLB; - - fpTemp = outputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((outputSampleR-fpTemp)*fpNew); - outputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = outputSampleL; *out2 = outputSampleR; diff --git a/plugins/WinVST/Melt/.vs/VSTProject/v14/.suo b/plugins/WinVST/Melt/.vs/VSTProject/v14/.suo Binary files differindex ee90f48..e2993f2 100755 --- a/plugins/WinVST/Melt/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Melt/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Melt/Melt.cpp b/plugins/WinVST/Melt/Melt.cpp index 9722e1f..35ede1e 100755 --- a/plugins/WinVST/Melt/Melt.cpp +++ b/plugins/WinVST/Melt/Melt.cpp @@ -26,11 +26,8 @@ Melt::Melt(audioMasterCallback audioMaster) : slowCount = 0; gcount = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Melt/Melt.h b/plugins/WinVST/Melt/Melt.h index a8e0f38..af11f0f 100755 --- a/plugins/WinVST/Melt/Melt.h +++ b/plugins/WinVST/Melt/Melt.h @@ -70,11 +70,8 @@ private: int slowCount; int gcount; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/Melt/MeltProc.cpp b/plugins/WinVST/Melt/MeltProc.cpp index 48a1c11..8a55732 100755 --- a/plugins/WinVST/Melt/MeltProc.cpp +++ b/plugins/WinVST/Melt/MeltProc.cpp @@ -21,9 +21,6 @@ void Melt::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram double wet = D; double dry = 1.0-wet; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -271,25 +268,14 @@ void Melt::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -315,9 +301,6 @@ void Melt::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa double wet = D; double dry = 1.0-wet; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -565,25 +548,16 @@ void Melt::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/MidSide/.vs/VSTProject/v14/.suo b/plugins/WinVST/MidSide/.vs/VSTProject/v14/.suo Binary files differindex 652923f..9fdd1e3 100755 --- a/plugins/WinVST/MidSide/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/MidSide/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/MidSide/MidSide.cpp b/plugins/WinVST/MidSide/MidSide.cpp index bc37393..8f61cff 100755 --- a/plugins/WinVST/MidSide/MidSide.cpp +++ b/plugins/WinVST/MidSide/MidSide.cpp @@ -13,11 +13,8 @@ MidSide::MidSide(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, kNumPrograms, kNumParameters) { A = 0.5; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/MidSide/MidSide.h b/plugins/WinVST/MidSide/MidSide.h index 28b2ae7..4d139c8 100755 --- a/plugins/WinVST/MidSide/MidSide.h +++ b/plugins/WinVST/MidSide/MidSide.h @@ -52,11 +52,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/MidSide/MidSideProc.cpp b/plugins/WinVST/MidSide/MidSideProc.cpp index 2df14f4..cca7a5c 100755 --- a/plugins/WinVST/MidSide/MidSideProc.cpp +++ b/plugins/WinVST/MidSide/MidSideProc.cpp @@ -14,9 +14,6 @@ void MidSide::processReplacing(float **inputs, float **outputs, VstInt32 sampleF float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -76,25 +73,14 @@ void MidSide::processReplacing(float **inputs, float **outputs, VstInt32 sampleF mid *= midgain; side *= sidegain; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = mid; - fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLA; - fpTemp = side; - fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRA; - } - else { - fpTemp = mid; - fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLB; - fpTemp = side; - fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)mid, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + mid += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)side, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + side += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = mid; *out2 = side; @@ -113,9 +99,6 @@ void MidSide::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -175,25 +158,16 @@ void MidSide::processDoubleReplacing(double **inputs, double **outputs, VstInt32 mid *= midgain; side *= sidegain; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = mid; - fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLA; - fpTemp = side; - fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRA; - } - else { - fpTemp = mid; - fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew); - mid += fpNShapeLB; - fpTemp = side; - fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew); - side += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)mid, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + mid += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)side, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + side += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = mid; *out2 = side; diff --git a/plugins/WinVST/NC-17/.vs/Console4Channel64/v14/.suo b/plugins/WinVST/NC-17/.vs/Console4Channel64/v14/.suo Binary files differnew file mode 100755 index 0000000..777b846 --- /dev/null +++ b/plugins/WinVST/NC-17/.vs/Console4Channel64/v14/.suo diff --git a/plugins/WinVST/NC-17/.vs/VSTProject/v14/.suo b/plugins/WinVST/NC-17/.vs/VSTProject/v14/.suo Binary files differnew file mode 100755 index 0000000..eca2385 --- /dev/null +++ b/plugins/WinVST/NC-17/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/NC-17/NCSeventeen.cpp b/plugins/WinVST/NC-17/NCSeventeen.cpp new file mode 100755 index 0000000..409f983 --- /dev/null +++ b/plugins/WinVST/NC-17/NCSeventeen.cpp @@ -0,0 +1,144 @@ +/* ======================================== + * NCSeventeen - NCSeventeen.h + * Copyright (c) 2016 airwindows, All rights reserved + * ======================================== */ + +#ifndef __NCSeventeen_H +#include "NCSeventeen.h" +#endif + +AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new NCSeventeen(audioMaster);} + +NCSeventeen::NCSeventeen(audioMasterCallback audioMaster) : + AudioEffectX(audioMaster, kNumPrograms, kNumParameters) +{ + A = 0.0; + B = 1.0; + + lastSampleL = 0.0; + iirSampleAL = 0.0; + iirSampleBL = 0.0; + basslevL = 0.0; + treblevL = 0.0; + cheblevL = 0.0; + + lastSampleR = 0.0; + iirSampleAR = 0.0; + iirSampleBR = 0.0; + basslevR = 0.0; + treblevR = 0.0; + cheblevR = 0.0; + + flip = false; + + fpNShapeL = 0.0; + fpNShapeR = 0.0; + //this is reset: values being initialized only once. Startup values, whatever they are. + + _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. + _canDo.insert("plugAsSend"); // plug-in can be used as a send effect. + _canDo.insert("x2in2out"); + setNumInputs(kNumInputs); + setNumOutputs(kNumOutputs); + setUniqueID(kUniqueId); + canProcessReplacing(); // supports output replacing + canDoubleReplacing(); // supports double precision processing + programsAreChunks(true); + vst_strncpy (_programName, "Default", kVstMaxProgNameLen); // default program name +} + +NCSeventeen::~NCSeventeen() {} +VstInt32 NCSeventeen::getVendorVersion () {return 1000;} +void NCSeventeen::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);} +void NCSeventeen::getProgramName(char *name) {vst_strncpy (name, _programName, kVstMaxProgNameLen);} +//airwindows likes to ignore this stuff. Make your own programs, and make a different plugin rather than +//trying to do versioning and preventing people from using older versions. Maybe they like the old one! + +static float pinParameter(float data) +{ + if (data < 0.0f) return 0.0f; + if (data > 1.0f) return 1.0f; + return data; +} + +VstInt32 NCSeventeen::getChunk (void** data, bool isPreset) +{ + float *chunkData = (float *)calloc(kNumParameters, sizeof(float)); + chunkData[0] = A; + chunkData[1] = B; + /* Note: The way this is set up, it will break if you manage to save settings on an Intel + machine and load them on a PPC Mac. However, it's fine if you stick to the machine you + started with. */ + + *data = chunkData; + return kNumParameters * sizeof(float); +} + +VstInt32 NCSeventeen::setChunk (void* data, VstInt32 byteSize, bool isPreset) +{ + float *chunkData = (float *)data; + A = pinParameter(chunkData[0]); + B = pinParameter(chunkData[1]); + /* We're ignoring byteSize as we found it to be a filthy liar */ + + /* calculate any other fields you need here - you could copy in + code from setParameter() here. */ + return 0; +} + +void NCSeventeen::setParameter(VstInt32 index, float value) { + switch (index) { + case kParamA: A = value; break; + case kParamB: B = value; break; + default: throw; // unknown parameter, shouldn't happen! + } +} + +float NCSeventeen::getParameter(VstInt32 index) { + switch (index) { + case kParamA: return A; break; + case kParamB: return B; break; + default: break; // unknown parameter, shouldn't happen! + } return 0.0; //we only need to update the relevant name, this is simple to manage +} + +void NCSeventeen::getParameterName(VstInt32 index, char *text) { + switch (index) { + case kParamA: vst_strncpy (text, "LOUDER", kVstMaxParamStrLen); break; + case kParamB: vst_strncpy (text, "Output", kVstMaxParamStrLen); break; + default: break; // unknown parameter, shouldn't happen! + } //this is our labels for displaying in the VST host +} + +void NCSeventeen::getParameterDisplay(VstInt32 index, char *text) { + switch (index) { + case kParamA: float2string (A*24.0, text, kVstMaxParamStrLen); break; + case kParamB: float2string (B, text, kVstMaxParamStrLen); break; + default: break; // unknown parameter, shouldn't happen! + } //this displays the values and handles 'popups' where it's discrete choices +} + +void NCSeventeen::getParameterLabel(VstInt32 index, char *text) { + switch (index) { + case kParamA: vst_strncpy (text, "dB", kVstMaxParamStrLen); break; + case kParamB: vst_strncpy (text, " ", kVstMaxParamStrLen); break; + default: break; // unknown parameter, shouldn't happen! + } +} + +VstInt32 NCSeventeen::canDo(char *text) +{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know + +bool NCSeventeen::getEffectName(char* name) { + vst_strncpy(name, "NC-17", kVstMaxProductStrLen); return true; +} + +VstPlugCategory NCSeventeen::getPlugCategory() {return kPlugCategEffect;} + +bool NCSeventeen::getProductString(char* text) { + vst_strncpy (text, "airwindows NC-17", kVstMaxProductStrLen); return true; +} + +bool NCSeventeen::getVendorString(char* text) { + vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true; +} diff --git a/plugins/WinVST/NC-17/NCSeventeen.h b/plugins/WinVST/NC-17/NCSeventeen.h new file mode 100755 index 0000000..b3ecd94 --- /dev/null +++ b/plugins/WinVST/NC-17/NCSeventeen.h @@ -0,0 +1,81 @@ +/* ======================================== + * NCSeventeen - NCSeventeen.h + * Created 8/12/11 by SPIAdmin + * Copyright (c) 2011 __MyCompanyName__, All rights reserved + * ======================================== */ + +#ifndef __NCSeventeen_H +#define __NCSeventeen_H + +#ifndef __audioeffect__ +#include "audioeffectx.h" +#endif + +#include <set> +#include <string> +#include <math.h> + +enum { + kParamA = 0, + kParamB = 1, + kNumParameters = 2 +}; // + +const int kNumPrograms = 0; +const int kNumInputs = 2; +const int kNumOutputs = 2; +const unsigned long kUniqueId = 'ncse'; //Change this to what the AU identity is! + +class NCSeventeen : + public AudioEffectX +{ +public: + NCSeventeen(audioMasterCallback audioMaster); + ~NCSeventeen(); + virtual bool getEffectName(char* name); // The plug-in name + virtual VstPlugCategory getPlugCategory(); // The general category for the plug-in + virtual bool getProductString(char* text); // This is a unique plug-in string provided by Steinberg + virtual bool getVendorString(char* text); // Vendor info + virtual VstInt32 getVendorVersion(); // Version number + virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames); + virtual void processDoubleReplacing (double** inputs, double** outputs, VstInt32 sampleFrames); + virtual void getProgramName(char *name); // read the name from the host + virtual void setProgramName(char *name); // changes the name of the preset displayed in the host + virtual VstInt32 getChunk (void** data, bool isPreset); + virtual VstInt32 setChunk (void* data, VstInt32 byteSize, bool isPreset); + virtual float getParameter(VstInt32 index); // get the parameter value at the specified index + virtual void setParameter(VstInt32 index, float value); // set the parameter at index to value + virtual void getParameterLabel(VstInt32 index, char *text); // label for the parameter (eg dB) + virtual void getParameterName(VstInt32 index, char *text); // name of the parameter + virtual void getParameterDisplay(VstInt32 index, char *text); // text description of the current value + virtual VstInt32 canDo(char *text); +private: + char _programName[kVstMaxProgNameLen + 1]; + std::set< std::string > _canDo; + +private: + double lastSampleL; + double iirSampleAL; + double iirSampleBL; + double basslevL; + double treblevL; + double cheblevL; + + double lastSampleR; + double iirSampleAR; + double iirSampleBR; + double basslevR; + double treblevR; + double cheblevR; + + bool flip; + + long double fpNShapeL; + long double fpNShapeR; + //default stuff + + float A; + float B; +}; + +#endif diff --git a/plugins/WinVST/NC-17/NCSeventeenProc.cpp b/plugins/WinVST/NC-17/NCSeventeenProc.cpp new file mode 100755 index 0000000..e124cb5 --- /dev/null +++ b/plugins/WinVST/NC-17/NCSeventeenProc.cpp @@ -0,0 +1,721 @@ +/* ======================================== + * NCSeventeen - NCSeventeen.h + * Copyright (c) 2016 airwindows, All rights reserved + * ======================================== */ + +#ifndef __NCSeventeen_H +#include "NCSeventeen.h" +#endif + +void NCSeventeen::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames) +{ + float* in1 = inputs[0]; + float* in2 = inputs[1]; + float* out1 = outputs[0]; + float* out2 = outputs[1]; + + double inP2; + double chebyshev; + double overallscale = 1.0; + overallscale /= 44100.0; + overallscale *= getSampleRate(); + + double IIRscaleback = 0.0004716; + double bassScaleback = 0.0002364; + double trebleScaleback = 0.0005484; + double addBassBuss = 0.000243; + double addTrebBuss = 0.000407; + double addShortBuss = 0.000326; + IIRscaleback /= overallscale; + bassScaleback /= overallscale; + trebleScaleback /= overallscale; + addBassBuss /= overallscale; + addTrebBuss /= overallscale; + addShortBuss /= overallscale; + double limitingBass = 0.39; + double limitingTreb = 0.6; + double limiting = 0.36; + double maxfeedBass = 0.972; + double maxfeedTreb = 0.972; + double maxfeed = 0.975; + double bridgerectifier; + long double inputSampleL; + double lowSampleL = 0.0; + double highSampleL; + double distSampleL; + double minusSampleL; + double plusSampleL; + long double inputSampleR; + double lowSampleR = 0.0; + double highSampleR; + double distSampleR; + double minusSampleR; + double plusSampleR; + double gain = pow(10.0,(A*24.0)/20); + double outlevel = B; + + + while (--sampleFrames >= 0) + { + inputSampleL = *in1; + inputSampleR = *in2; + if (inputSampleL<1.2e-38 && -inputSampleL<1.2e-38) { + static int noisesource = 0; + //this declares a variable before anything else is compiled. It won't keep assigning + //it to 0 for every sample, it's as if the declaration doesn't exist in this context, + //but it lets me add this denormalization fix in a single place rather than updating + //it in three different locations. The variable isn't thread-safe but this is only + //a random seed and we can share it with whatever. + noisesource = noisesource % 1700021; noisesource++; + int residue = noisesource * noisesource; + residue = residue % 170003; residue *= residue; + residue = residue % 17011; residue *= residue; + residue = residue % 1709; residue *= residue; + residue = residue % 173; residue *= residue; + residue = residue % 17; + double applyresidue = residue; + applyresidue *= 0.00000001; + applyresidue *= 0.00000001; + inputSampleL = applyresidue; + } + if (inputSampleR<1.2e-38 && -inputSampleR<1.2e-38) { + static int noisesource = 0; + noisesource = noisesource % 1700021; noisesource++; + int residue = noisesource * noisesource; + residue = residue % 170003; residue *= residue; + residue = residue % 17011; residue *= residue; + residue = residue % 1709; residue *= residue; + residue = residue % 173; residue *= residue; + residue = residue % 17; + double applyresidue = residue; + applyresidue *= 0.00000001; + applyresidue *= 0.00000001; + inputSampleR = applyresidue; + //this denormalization routine produces a white noise at -300 dB which the noise + //shaping will interact with to produce a bipolar output, but the noise is actually + //all positive. That should stop any variables from going denormal, and the routine + //only kicks in if digital black is input. As a final touch, if you save to 24-bit + //the silence will return to being digital black again. + } + + inputSampleL *= gain; + inputSampleR *= gain; + + if (flip) + { + iirSampleAL = (iirSampleAL * 0.9) + (inputSampleL * 0.1); + lowSampleL = iirSampleAL; + iirSampleAR = (iirSampleAR * 0.9) + (inputSampleR * 0.1); + lowSampleR = iirSampleAR; + } + else + { + iirSampleBL = (iirSampleBL * 0.9) + (inputSampleL * 0.1); + lowSampleL = iirSampleBL; + iirSampleBR = (iirSampleBR * 0.9) + (inputSampleR * 0.1); + lowSampleR = iirSampleBR; + } + highSampleL = inputSampleL - lowSampleL; + highSampleR = inputSampleR - lowSampleR; + flip = !flip; + //we now have two bands and the original source + + inP2 = lowSampleL * lowSampleL; + if (inP2 > 1.0) inP2 = 1.0; if (inP2 < -1.0) inP2 = -1.0; + chebyshev = (2 * inP2); + chebyshev *= basslevL; + //second harmonic max +1 + if (basslevL > 0) basslevL -= bassScaleback; + if (basslevL < 0) basslevL += bassScaleback; + //this is ShortBuss, IIRscaleback is the decay speed. *2 for second harmonic, and so on + bridgerectifier = fabs(lowSampleL); + if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633; + //max value for sine function + bridgerectifier = sin(bridgerectifier); + if (lowSampleL > 0.0) distSampleL = bridgerectifier; + else distSampleL = -bridgerectifier; + minusSampleL = lowSampleL - distSampleL; + plusSampleL = lowSampleL + distSampleL; + if (minusSampleL > maxfeedBass) minusSampleL = maxfeedBass; + if (plusSampleL > maxfeedBass) plusSampleL = maxfeedBass; + if (plusSampleL < -maxfeedBass) plusSampleL = -maxfeedBass; + if (minusSampleL < -maxfeedBass) minusSampleL = -maxfeedBass; + if (lowSampleL > distSampleL) basslevL += (minusSampleL*addBassBuss); + if (lowSampleL < -distSampleL) basslevL -= (plusSampleL*addBassBuss); + if (basslevL > 1.0) basslevL = 1.0; + if (basslevL < -1.0) basslevL = -1.0; + bridgerectifier = fabs(lowSampleL); + if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633; + //max value for sine function + bridgerectifier = sin(bridgerectifier); + if (lowSampleL > 0.0) lowSampleL = bridgerectifier; + else lowSampleL = -bridgerectifier; + //apply the distortion transform for reals + lowSampleL /= (1.0+fabs(basslevL*limitingBass)); + lowSampleL += chebyshev; + //apply the correction measuresL + + inP2 = lowSampleR * lowSampleR; + if (inP2 > 1.0) inP2 = 1.0; if (inP2 < -1.0) inP2 = -1.0; + chebyshev = (2 * inP2); + chebyshev *= basslevR; + //second harmonic max +1 + if (basslevR > 0) basslevR -= bassScaleback; + if (basslevR < 0) basslevR += bassScaleback; + //this is ShortBuss, IIRscaleback is the decay speed. *2 for second harmonic, and so on + bridgerectifier = fabs(lowSampleR); + if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633; + //max value for sine function + bridgerectifier = sin(bridgerectifier); + if (lowSampleR > 0.0) distSampleR = bridgerectifier; + else distSampleR = -bridgerectifier; + minusSampleR = lowSampleR - distSampleR; + plusSampleR = lowSampleR + distSampleR; + if (minusSampleR > maxfeedBass) minusSampleR = maxfeedBass; + if (plusSampleR > maxfeedBass) plusSampleR = maxfeedBass; + if (plusSampleR < -maxfeedBass) plusSampleR = -maxfeedBass; + if (minusSampleR < -maxfeedBass) minusSampleR = -maxfeedBass; + if (lowSampleR > distSampleR) basslevR += (minusSampleR*addBassBuss); + if (lowSampleR < -distSampleR) basslevR -= (plusSampleR*addBassBuss); + if (basslevR > 1.0) basslevR = 1.0; + if (basslevR < -1.0) basslevR = -1.0; + bridgerectifier = fabs(lowSampleR); + if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633; + //max value for sine function + bridgerectifier = sin(bridgerectifier); + if (lowSampleR > 0.0) lowSampleR = bridgerectifier; + else lowSampleR = -bridgerectifier; + //apply the distortion transform for reals + lowSampleR /= (1.0+fabs(basslevR*limitingBass)); + lowSampleR += chebyshev; + //apply the correction measuresR + + inP2 = highSampleL * highSampleL; + if (inP2 > 1.0) inP2 = 1.0; if (inP2 < -1.0) inP2 = -1.0; + chebyshev = (2 * inP2); + chebyshev *= treblevL; + //second harmonic max +1 + if (treblevL > 0) treblevL -= trebleScaleback; + if (treblevL < 0) treblevL += trebleScaleback; + //this is ShortBuss, IIRscaleback is the decay speed. *2 for second harmonic, and so on + bridgerectifier = fabs(highSampleL); + if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633; + //max value for sine function + bridgerectifier = sin(bridgerectifier); + if (highSampleL > 0.0) distSampleL = bridgerectifier; + else distSampleL = -bridgerectifier; + minusSampleL = highSampleL - distSampleL; + plusSampleL = highSampleL + distSampleL; + if (minusSampleL > maxfeedTreb) minusSampleL = maxfeedTreb; + if (plusSampleL > maxfeedTreb) plusSampleL = maxfeedTreb; + if (plusSampleL < -maxfeedTreb) plusSampleL = -maxfeedTreb; + if (minusSampleL < -maxfeedTreb) minusSampleL = -maxfeedTreb; + if (highSampleL > distSampleL) treblevL += (minusSampleL*addTrebBuss); + if (highSampleL < -distSampleL) treblevL -= (plusSampleL*addTrebBuss); + if (treblevL > 1.0) treblevL = 1.0; + if (treblevL < -1.0) treblevL = -1.0; + bridgerectifier = fabs(highSampleL); + if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633; + //max value for sine function + bridgerectifier = sin(bridgerectifier); + if (highSampleL > 0.0) highSampleL = bridgerectifier; + else highSampleL = -bridgerectifier; + //apply the distortion transform for reals + highSampleL /= (1.0+fabs(treblevL*limitingTreb)); + highSampleL += chebyshev; + //apply the correction measuresL + + inP2 = highSampleR * highSampleR; + if (inP2 > 1.0) inP2 = 1.0; if (inP2 < -1.0) inP2 = -1.0; + chebyshev = (2 * inP2); + chebyshev *= treblevR; + //second harmonic max +1 + if (treblevR > 0) treblevR -= trebleScaleback; + if (treblevR < 0) treblevR += trebleScaleback; + //this is ShortBuss, IIRscaleback is the decay speed. *2 for second harmonic, and so on + bridgerectifier = fabs(highSampleR); + if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633; + //max value for sine function + bridgerectifier = sin(bridgerectifier); + if (highSampleR > 0.0) distSampleR = bridgerectifier; + else distSampleR = -bridgerectifier; + minusSampleR = highSampleR - distSampleR; + plusSampleR = highSampleR + distSampleR; + if (minusSampleR > maxfeedTreb) minusSampleR = maxfeedTreb; + if (plusSampleR > maxfeedTreb) plusSampleR = maxfeedTreb; + if (plusSampleR < -maxfeedTreb) plusSampleR = -maxfeedTreb; + if (minusSampleR < -maxfeedTreb) minusSampleR = -maxfeedTreb; + if (highSampleR > distSampleR) treblevR += (minusSampleR*addTrebBuss); + if (highSampleR < -distSampleR) treblevR -= (plusSampleR*addTrebBuss); + if (treblevR > 1.0) treblevR = 1.0; + if (treblevR < -1.0) treblevR = -1.0; + bridgerectifier = fabs(highSampleR); + if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633; + //max value for sine function + bridgerectifier = sin(bridgerectifier); + if (highSampleR > 0.0) highSampleR = bridgerectifier; + else highSampleR = -bridgerectifier; + //apply the distortion transform for reals + highSampleR /= (1.0+fabs(treblevR*limitingTreb)); + highSampleR += chebyshev; + //apply the correction measuresR + + inputSampleL = lowSampleL + highSampleL; + inputSampleR = lowSampleR + highSampleR; + + inP2 = inputSampleL * inputSampleL; + if (inP2 > 1.0) inP2 = 1.0; if (inP2 < -1.0) inP2 = -1.0; + chebyshev = (2 * inP2); + chebyshev *= cheblevL; + //third harmonic max -1 + if (cheblevL > 0) cheblevL -= (IIRscaleback); + if (cheblevL < 0) cheblevL += (IIRscaleback); + //this is ShortBuss, IIRscaleback is the decay speed. *2 for second harmonic, and so on + bridgerectifier = fabs(inputSampleL); + if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633; + //max value for sine function + bridgerectifier = sin(bridgerectifier); + if (inputSampleL > 0.0) distSampleL = bridgerectifier; + else distSampleL = -bridgerectifier; + minusSampleL = inputSampleL - distSampleL; + plusSampleL = inputSampleL + distSampleL; + if (minusSampleL > maxfeed) minusSampleL = maxfeed; + if (plusSampleL > maxfeed) plusSampleL = maxfeed; + if (plusSampleL < -maxfeed) plusSampleL = -maxfeed; + if (minusSampleL < -maxfeed) minusSampleL = -maxfeed; + if (inputSampleL > distSampleL) cheblevL += (minusSampleL*addShortBuss); + if (inputSampleL < -distSampleL) cheblevL -= (plusSampleL*addShortBuss); + if (cheblevL > 1.0) cheblevL = 1.0; + if (cheblevL < -1.0) cheblevL = -1.0; + bridgerectifier = fabs(inputSampleL); + if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633; + //max value for sine function + bridgerectifier = sin(bridgerectifier); + if (inputSampleL > 0.0) inputSampleL = bridgerectifier; + else inputSampleL = -bridgerectifier; + //apply the distortion transform for reals + inputSampleL /= (1.0+fabs(cheblevL*limiting)); + inputSampleL += chebyshev; + //apply the correction measuresL + + inP2 = inputSampleR * inputSampleR; + if (inP2 > 1.0) inP2 = 1.0; if (inP2 < -1.0) inP2 = -1.0; + chebyshev = (2 * inP2); + chebyshev *= cheblevR; + //third harmonic max -1 + if (cheblevR > 0) cheblevR -= IIRscaleback; + if (cheblevR < 0) cheblevR += IIRscaleback; + //this is ShortBuss, IIRscaleback is the decay speed. *2 for second harmonic, and so on + bridgerectifier = fabs(inputSampleR); + if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633; + //max value for sine function + bridgerectifier = sin(bridgerectifier); + if (inputSampleR > 0.0) distSampleR = bridgerectifier; + else distSampleR = -bridgerectifier; + minusSampleR = inputSampleR - distSampleR; + plusSampleR = inputSampleR + distSampleR; + if (minusSampleR > maxfeed) minusSampleR = maxfeed; + if (plusSampleR > maxfeed) plusSampleR = maxfeed; + if (plusSampleR < -maxfeed) plusSampleR = -maxfeed; + if (minusSampleR < -maxfeed) minusSampleR = -maxfeed; + if (inputSampleR > distSampleR) cheblevR += (minusSampleR*addShortBuss); + if (inputSampleR < -distSampleR) cheblevR -= (plusSampleR*addShortBuss); + if (cheblevR > 1.0) cheblevR = 1.0; + if (cheblevR < -1.0) cheblevR = -1.0; + bridgerectifier = fabs(inputSampleR); + if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633; + //max value for sine function + bridgerectifier = sin(bridgerectifier); + if (inputSampleR > 0.0) inputSampleR = bridgerectifier; + else inputSampleR = -bridgerectifier; + //apply the distortion transform for reals + inputSampleR /= (1.0+fabs(cheblevR*limiting)); + inputSampleR += chebyshev; + //apply the correction measuresR + + if (outlevel < 1.0) { + inputSampleL *= outlevel; + inputSampleR *= outlevel; + } + + if (inputSampleL > 0.95) inputSampleL = 0.95; + if (inputSampleL < -0.95) inputSampleL = -0.95; + if (inputSampleR > 0.95) inputSampleR = 0.95; + if (inputSampleR < -0.95) inputSampleR = -0.95; + //iron bar + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither + + *out1 = inputSampleL; + *out2 = inputSampleR; + + *in1++; + *in2++; + *out1++; + *out2++; + } +} + +void NCSeventeen::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) +{ + double* in1 = inputs[0]; + double* in2 = inputs[1]; + double* out1 = outputs[0]; + double* out2 = outputs[1]; + + double inP2; + double chebyshev; + double overallscale = 1.0; + overallscale /= 44100.0; + overallscale *= getSampleRate(); + + double IIRscaleback = 0.0004716; + double bassScaleback = 0.0002364; + double trebleScaleback = 0.0005484; + double addBassBuss = 0.000243; + double addTrebBuss = 0.000407; + double addShortBuss = 0.000326; + IIRscaleback /= overallscale; + bassScaleback /= overallscale; + trebleScaleback /= overallscale; + addBassBuss /= overallscale; + addTrebBuss /= overallscale; + addShortBuss /= overallscale; + double limitingBass = 0.39; + double limitingTreb = 0.6; + double limiting = 0.36; + double maxfeedBass = 0.972; + double maxfeedTreb = 0.972; + double maxfeed = 0.975; + double bridgerectifier; + long double inputSampleL; + double lowSampleL = 0.0; + double highSampleL; + double distSampleL; + double minusSampleL; + double plusSampleL; + long double inputSampleR; + double lowSampleR = 0.0; + double highSampleR; + double distSampleR; + double minusSampleR; + double plusSampleR; + double gain = pow(10.0,(A*24.0)/20); + double outlevel = B; + + while (--sampleFrames >= 0) + { + inputSampleL = *in1; + inputSampleR = *in2; + if (inputSampleL<1.2e-38 && -inputSampleL<1.2e-38) { + static int noisesource = 0; + //this declares a variable before anything else is compiled. It won't keep assigning + //it to 0 for every sample, it's as if the declaration doesn't exist in this context, + //but it lets me add this denormalization fix in a single place rather than updating + //it in three different locations. The variable isn't thread-safe but this is only + //a random seed and we can share it with whatever. + noisesource = noisesource % 1700021; noisesource++; + int residue = noisesource * noisesource; + residue = residue % 170003; residue *= residue; + residue = residue % 17011; residue *= residue; + residue = residue % 1709; residue *= residue; + residue = residue % 173; residue *= residue; + residue = residue % 17; + double applyresidue = residue; + applyresidue *= 0.00000001; + applyresidue *= 0.00000001; + inputSampleL = applyresidue; + } + if (inputSampleR<1.2e-38 && -inputSampleR<1.2e-38) { + static int noisesource = 0; + noisesource = noisesource % 1700021; noisesource++; + int residue = noisesource * noisesource; + residue = residue % 170003; residue *= residue; + residue = residue % 17011; residue *= residue; + residue = residue % 1709; residue *= residue; + residue = residue % 173; residue *= residue; + residue = residue % 17; + double applyresidue = residue; + applyresidue *= 0.00000001; + applyresidue *= 0.00000001; + inputSampleR = applyresidue; + //this denormalization routine produces a white noise at -300 dB which the noise + //shaping will interact with to produce a bipolar output, but the noise is actually + //all positive. That should stop any variables from going denormal, and the routine + //only kicks in if digital black is input. As a final touch, if you save to 24-bit + //the silence will return to being digital black again. + } + + inputSampleL *= gain; + inputSampleR *= gain; + + if (flip) + { + iirSampleAL = (iirSampleAL * 0.9) + (inputSampleL * 0.1); + lowSampleL = iirSampleAL; + iirSampleAR = (iirSampleAR * 0.9) + (inputSampleR * 0.1); + lowSampleR = iirSampleAR; + } + else + { + iirSampleBL = (iirSampleBL * 0.9) + (inputSampleL * 0.1); + lowSampleL = iirSampleBL; + iirSampleBR = (iirSampleBR * 0.9) + (inputSampleR * 0.1); + lowSampleR = iirSampleBR; + } + highSampleL = inputSampleL - lowSampleL; + highSampleR = inputSampleR - lowSampleR; + flip = !flip; + //we now have two bands and the original source + + inP2 = lowSampleL * lowSampleL; + if (inP2 > 1.0) inP2 = 1.0; if (inP2 < -1.0) inP2 = -1.0; + chebyshev = (2 * inP2); + chebyshev *= basslevL; + //second harmonic max +1 + if (basslevL > 0) basslevL -= bassScaleback; + if (basslevL < 0) basslevL += bassScaleback; + //this is ShortBuss, IIRscaleback is the decay speed. *2 for second harmonic, and so on + bridgerectifier = fabs(lowSampleL); + if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633; + //max value for sine function + bridgerectifier = sin(bridgerectifier); + if (lowSampleL > 0.0) distSampleL = bridgerectifier; + else distSampleL = -bridgerectifier; + minusSampleL = lowSampleL - distSampleL; + plusSampleL = lowSampleL + distSampleL; + if (minusSampleL > maxfeedBass) minusSampleL = maxfeedBass; + if (plusSampleL > maxfeedBass) plusSampleL = maxfeedBass; + if (plusSampleL < -maxfeedBass) plusSampleL = -maxfeedBass; + if (minusSampleL < -maxfeedBass) minusSampleL = -maxfeedBass; + if (lowSampleL > distSampleL) basslevL += (minusSampleL*addBassBuss); + if (lowSampleL < -distSampleL) basslevL -= (plusSampleL*addBassBuss); + if (basslevL > 1.0) basslevL = 1.0; + if (basslevL < -1.0) basslevL = -1.0; + bridgerectifier = fabs(lowSampleL); + if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633; + //max value for sine function + bridgerectifier = sin(bridgerectifier); + if (lowSampleL > 0.0) lowSampleL = bridgerectifier; + else lowSampleL = -bridgerectifier; + //apply the distortion transform for reals + lowSampleL /= (1.0+fabs(basslevL*limitingBass)); + lowSampleL += chebyshev; + //apply the correction measuresL + + inP2 = lowSampleR * lowSampleR; + if (inP2 > 1.0) inP2 = 1.0; if (inP2 < -1.0) inP2 = -1.0; + chebyshev = (2 * inP2); + chebyshev *= basslevR; + //second harmonic max +1 + if (basslevR > 0) basslevR -= bassScaleback; + if (basslevR < 0) basslevR += bassScaleback; + //this is ShortBuss, IIRscaleback is the decay speed. *2 for second harmonic, and so on + bridgerectifier = fabs(lowSampleR); + if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633; + //max value for sine function + bridgerectifier = sin(bridgerectifier); + if (lowSampleR > 0.0) distSampleR = bridgerectifier; + else distSampleR = -bridgerectifier; + minusSampleR = lowSampleR - distSampleR; + plusSampleR = lowSampleR + distSampleR; + if (minusSampleR > maxfeedBass) minusSampleR = maxfeedBass; + if (plusSampleR > maxfeedBass) plusSampleR = maxfeedBass; + if (plusSampleR < -maxfeedBass) plusSampleR = -maxfeedBass; + if (minusSampleR < -maxfeedBass) minusSampleR = -maxfeedBass; + if (lowSampleR > distSampleR) basslevR += (minusSampleR*addBassBuss); + if (lowSampleR < -distSampleR) basslevR -= (plusSampleR*addBassBuss); + if (basslevR > 1.0) basslevR = 1.0; + if (basslevR < -1.0) basslevR = -1.0; + bridgerectifier = fabs(lowSampleR); + if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633; + //max value for sine function + bridgerectifier = sin(bridgerectifier); + if (lowSampleR > 0.0) lowSampleR = bridgerectifier; + else lowSampleR = -bridgerectifier; + //apply the distortion transform for reals + lowSampleR /= (1.0+fabs(basslevR*limitingBass)); + lowSampleR += chebyshev; + //apply the correction measuresR + + inP2 = highSampleL * highSampleL; + if (inP2 > 1.0) inP2 = 1.0; if (inP2 < -1.0) inP2 = -1.0; + chebyshev = (2 * inP2); + chebyshev *= treblevL; + //second harmonic max +1 + if (treblevL > 0) treblevL -= trebleScaleback; + if (treblevL < 0) treblevL += trebleScaleback; + //this is ShortBuss, IIRscaleback is the decay speed. *2 for second harmonic, and so on + bridgerectifier = fabs(highSampleL); + if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633; + //max value for sine function + bridgerectifier = sin(bridgerectifier); + if (highSampleL > 0.0) distSampleL = bridgerectifier; + else distSampleL = -bridgerectifier; + minusSampleL = highSampleL - distSampleL; + plusSampleL = highSampleL + distSampleL; + if (minusSampleL > maxfeedTreb) minusSampleL = maxfeedTreb; + if (plusSampleL > maxfeedTreb) plusSampleL = maxfeedTreb; + if (plusSampleL < -maxfeedTreb) plusSampleL = -maxfeedTreb; + if (minusSampleL < -maxfeedTreb) minusSampleL = -maxfeedTreb; + if (highSampleL > distSampleL) treblevL += (minusSampleL*addTrebBuss); + if (highSampleL < -distSampleL) treblevL -= (plusSampleL*addTrebBuss); + if (treblevL > 1.0) treblevL = 1.0; + if (treblevL < -1.0) treblevL = -1.0; + bridgerectifier = fabs(highSampleL); + if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633; + //max value for sine function + bridgerectifier = sin(bridgerectifier); + if (highSampleL > 0.0) highSampleL = bridgerectifier; + else highSampleL = -bridgerectifier; + //apply the distortion transform for reals + highSampleL /= (1.0+fabs(treblevL*limitingTreb)); + highSampleL += chebyshev; + //apply the correction measuresL + + inP2 = highSampleR * highSampleR; + if (inP2 > 1.0) inP2 = 1.0; if (inP2 < -1.0) inP2 = -1.0; + chebyshev = (2 * inP2); + chebyshev *= treblevR; + //second harmonic max +1 + if (treblevR > 0) treblevR -= trebleScaleback; + if (treblevR < 0) treblevR += trebleScaleback; + //this is ShortBuss, IIRscaleback is the decay speed. *2 for second harmonic, and so on + bridgerectifier = fabs(highSampleR); + if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633; + //max value for sine function + bridgerectifier = sin(bridgerectifier); + if (highSampleR > 0.0) distSampleR = bridgerectifier; + else distSampleR = -bridgerectifier; + minusSampleR = highSampleR - distSampleR; + plusSampleR = highSampleR + distSampleR; + if (minusSampleR > maxfeedTreb) minusSampleR = maxfeedTreb; + if (plusSampleR > maxfeedTreb) plusSampleR = maxfeedTreb; + if (plusSampleR < -maxfeedTreb) plusSampleR = -maxfeedTreb; + if (minusSampleR < -maxfeedTreb) minusSampleR = -maxfeedTreb; + if (highSampleR > distSampleR) treblevR += (minusSampleR*addTrebBuss); + if (highSampleR < -distSampleR) treblevR -= (plusSampleR*addTrebBuss); + if (treblevR > 1.0) treblevR = 1.0; + if (treblevR < -1.0) treblevR = -1.0; + bridgerectifier = fabs(highSampleR); + if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633; + //max value for sine function + bridgerectifier = sin(bridgerectifier); + if (highSampleR > 0.0) highSampleR = bridgerectifier; + else highSampleR = -bridgerectifier; + //apply the distortion transform for reals + highSampleR /= (1.0+fabs(treblevR*limitingTreb)); + highSampleR += chebyshev; + //apply the correction measuresR + + inputSampleL = lowSampleL + highSampleL; + inputSampleR = lowSampleR + highSampleR; + + inP2 = inputSampleL * inputSampleL; + if (inP2 > 1.0) inP2 = 1.0; if (inP2 < -1.0) inP2 = -1.0; + chebyshev = (2 * inP2); + chebyshev *= cheblevL; + //third harmonic max -1 + if (cheblevL > 0) cheblevL -= (IIRscaleback); + if (cheblevL < 0) cheblevL += (IIRscaleback); + //this is ShortBuss, IIRscaleback is the decay speed. *2 for second harmonic, and so on + bridgerectifier = fabs(inputSampleL); + if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633; + //max value for sine function + bridgerectifier = sin(bridgerectifier); + if (inputSampleL > 0.0) distSampleL = bridgerectifier; + else distSampleL = -bridgerectifier; + minusSampleL = inputSampleL - distSampleL; + plusSampleL = inputSampleL + distSampleL; + if (minusSampleL > maxfeed) minusSampleL = maxfeed; + if (plusSampleL > maxfeed) plusSampleL = maxfeed; + if (plusSampleL < -maxfeed) plusSampleL = -maxfeed; + if (minusSampleL < -maxfeed) minusSampleL = -maxfeed; + if (inputSampleL > distSampleL) cheblevL += (minusSampleL*addShortBuss); + if (inputSampleL < -distSampleL) cheblevL -= (plusSampleL*addShortBuss); + if (cheblevL > 1.0) cheblevL = 1.0; + if (cheblevL < -1.0) cheblevL = -1.0; + bridgerectifier = fabs(inputSampleL); + if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633; + //max value for sine function + bridgerectifier = sin(bridgerectifier); + if (inputSampleL > 0.0) inputSampleL = bridgerectifier; + else inputSampleL = -bridgerectifier; + //apply the distortion transform for reals + inputSampleL /= (1.0+fabs(cheblevL*limiting)); + inputSampleL += chebyshev; + //apply the correction measuresL + + inP2 = inputSampleR * inputSampleR; + if (inP2 > 1.0) inP2 = 1.0; if (inP2 < -1.0) inP2 = -1.0; + chebyshev = (2 * inP2); + chebyshev *= cheblevR; + //third harmonic max -1 + if (cheblevR > 0) cheblevR -= IIRscaleback; + if (cheblevR < 0) cheblevR += IIRscaleback; + //this is ShortBuss, IIRscaleback is the decay speed. *2 for second harmonic, and so on + bridgerectifier = fabs(inputSampleR); + if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633; + //max value for sine function + bridgerectifier = sin(bridgerectifier); + if (inputSampleR > 0.0) distSampleR = bridgerectifier; + else distSampleR = -bridgerectifier; + minusSampleR = inputSampleR - distSampleR; + plusSampleR = inputSampleR + distSampleR; + if (minusSampleR > maxfeed) minusSampleR = maxfeed; + if (plusSampleR > maxfeed) plusSampleR = maxfeed; + if (plusSampleR < -maxfeed) plusSampleR = -maxfeed; + if (minusSampleR < -maxfeed) minusSampleR = -maxfeed; + if (inputSampleR > distSampleR) cheblevR += (minusSampleR*addShortBuss); + if (inputSampleR < -distSampleR) cheblevR -= (plusSampleR*addShortBuss); + if (cheblevR > 1.0) cheblevR = 1.0; + if (cheblevR < -1.0) cheblevR = -1.0; + bridgerectifier = fabs(inputSampleR); + if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633; + //max value for sine function + bridgerectifier = sin(bridgerectifier); + if (inputSampleR > 0.0) inputSampleR = bridgerectifier; + else inputSampleR = -bridgerectifier; + //apply the distortion transform for reals + inputSampleR /= (1.0+fabs(cheblevR*limiting)); + inputSampleR += chebyshev; + //apply the correction measuresR + + if (outlevel < 1.0) { + inputSampleL *= outlevel; + inputSampleR *= outlevel; + } + + if (inputSampleL > 0.95) inputSampleL = 0.95; + if (inputSampleL < -0.95) inputSampleL = -0.95; + if (inputSampleR > 0.95) inputSampleR = 0.95; + if (inputSampleR < -0.95) inputSampleR = -0.95; + //iron bar + + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither + + *out1 = inputSampleL; + *out2 = inputSampleR; + + *in1++; + *in2++; + *out1++; + *out2++; + } +}
\ No newline at end of file diff --git a/plugins/WinVST/NC-17/VSTProject.sln b/plugins/WinVST/NC-17/VSTProject.sln new file mode 100755 index 0000000..694b424 --- /dev/null +++ b/plugins/WinVST/NC-17/VSTProject.sln @@ -0,0 +1,28 @@ +
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.25420.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VSTProject", "VSTProject.vcxproj", "{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Debug|x64.ActiveCfg = Debug|x64
+ {16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Debug|x64.Build.0 = Debug|x64
+ {16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Debug|x86.ActiveCfg = Debug|Win32
+ {16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Debug|x86.Build.0 = Debug|Win32
+ {16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Release|x64.ActiveCfg = Release|x64
+ {16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Release|x64.Build.0 = Release|x64
+ {16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Release|x86.ActiveCfg = Release|Win32
+ {16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/plugins/WinVST/NC-17/VSTProject.vcxproj b/plugins/WinVST/NC-17/VSTProject.vcxproj new file mode 100755 index 0000000..06ea4cd --- /dev/null +++ b/plugins/WinVST/NC-17/VSTProject.vcxproj @@ -0,0 +1,183 @@ +<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffect.cpp" />
+ <ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.cpp" />
+ <ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\vstplugmain.cpp" />
+ <ClCompile Include="NCSeventeen.cpp" />
+ <ClCompile Include="NCSeventeenProc.cpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\aeffeditor.h" />
+ <ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffect.h" />
+ <ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.h" />
+ <ClInclude Include="NCSeventeen.h" />
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}</ProjectGuid>
+ <RootNamespace>VSTProject</RootNamespace>
+ <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+ <ProjectName>NC-1764</ProjectName>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <CharacterSet>NotSet</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <CharacterSet>NotSet</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <CharacterSet>NotSet</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <CharacterSet>NotSet</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="Shared">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <TargetExt>.dll</TargetExt>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <OutDir>$(SolutionDir)$(Configuration)\</OutDir>
+ <IntDir>$(Configuration)\</IntDir>
+ <ExecutablePath>$(VC_ExecutablePath_x64);$(WindowsSDK_ExecutablePath);$(VS_ExecutablePath);$(MSBuild_ExecutablePath);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH)</ExecutablePath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <OutDir>$(SolutionDir)$(Configuration)\</OutDir>
+ <IntDir>$(Configuration)\</IntDir>
+ <ExecutablePath>$(VC_ExecutablePath_x64);$(WindowsSDK_ExecutablePath);$(VS_ExecutablePath);$(MSBuild_ExecutablePath);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH)</ExecutablePath>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <SDLCheck>true</SDLCheck>
+ <AdditionalIncludeDirectories>C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <MinimalRebuild>false</MinimalRebuild>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <FunctionLevelLinking>false</FunctionLevelLinking>
+ <DebugInformationFormat>None</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <ModuleDefinitionFile>vstplug.def</ModuleDefinitionFile>
+ <IgnoreSpecificDefaultLibraries>libcmt.dll;libcmtd.dll;msvcrt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+ <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <SDLCheck>true</SDLCheck>
+ <AdditionalIncludeDirectories>C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <PreprocessorDefinitions>WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <FunctionLevelLinking>false</FunctionLevelLinking>
+ <DebugInformationFormat>None</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <IgnoreSpecificDefaultLibraries>libcmt.dll;libcmtd.dll;msvcrt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+ <ModuleDefinitionFile>vstplug.def</ModuleDefinitionFile>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>false</FunctionLevelLinking>
+ <IntrinsicFunctions>false</IntrinsicFunctions>
+ <SDLCheck>true</SDLCheck>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <AdditionalIncludeDirectories>C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <DebugInformationFormat>None</DebugInformationFormat>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <PreprocessorDefinitions>WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ <Link>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ <IgnoreSpecificDefaultLibraries>libcmt.dll;libcmtd.dll;msvcrt.lib;libc.lib;libcd.lib;libcmt.lib;msvcrtd.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+ <AdditionalDependencies>libcmt.lib;uuid.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <ModuleDefinitionFile>vstplug.def</ModuleDefinitionFile>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>false</FunctionLevelLinking>
+ <IntrinsicFunctions>false</IntrinsicFunctions>
+ <SDLCheck>true</SDLCheck>
+ <AdditionalIncludeDirectories>C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <DebugInformationFormat>None</DebugInformationFormat>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <PreprocessorDefinitions>WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ </ClCompile>
+ <Link>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ <IgnoreSpecificDefaultLibraries>libcmt.dll;libcmtd.dll;msvcrt.lib;libc.lib;libcd.lib;libcmt.lib;msvcrtd.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+ <AdditionalDependencies>libcmt.lib;uuid.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <ModuleDefinitionFile>vstplug.def</ModuleDefinitionFile>
+ </Link>
+ </ItemDefinitionGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
\ No newline at end of file diff --git a/plugins/WinVST/NC-17/VSTProject.vcxproj.filters b/plugins/WinVST/NC-17/VSTProject.vcxproj.filters new file mode 100755 index 0000000..266110e --- /dev/null +++ b/plugins/WinVST/NC-17/VSTProject.vcxproj.filters @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffect.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\vstplugmain.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="NCSeventeen.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="NCSeventeenProc.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\aeffeditor.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffect.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="NCSeventeen.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project>
\ No newline at end of file diff --git a/plugins/WinVST/NC-17/VSTProject.vcxproj.user b/plugins/WinVST/NC-17/VSTProject.vcxproj.user new file mode 100755 index 0000000..2216267 --- /dev/null +++ b/plugins/WinVST/NC-17/VSTProject.vcxproj.user @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LocalDebuggerAmpDefaultAccelerator>{ADEFF70D-84BF-47A1-91C3-FF6B0FC71218}</LocalDebuggerAmpDefaultAccelerator>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <LocalDebuggerAmpDefaultAccelerator>{ADEFF70D-84BF-47A1-91C3-FF6B0FC71218}</LocalDebuggerAmpDefaultAccelerator>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <LocalDebuggerAmpDefaultAccelerator>{ADEFF70D-84BF-47A1-91C3-FF6B0FC71218}</LocalDebuggerAmpDefaultAccelerator>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <LocalDebuggerAmpDefaultAccelerator>{ADEFF70D-84BF-47A1-91C3-FF6B0FC71218}</LocalDebuggerAmpDefaultAccelerator>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+</Project>
\ No newline at end of file diff --git a/plugins/WinVST/NC-17/vstplug.def b/plugins/WinVST/NC-17/vstplug.def new file mode 100755 index 0000000..5bf499a --- /dev/null +++ b/plugins/WinVST/NC-17/vstplug.def @@ -0,0 +1,3 @@ +EXPORTS
+ VSTPluginMain
+ main=VSTPluginMain
\ No newline at end of file diff --git a/plugins/WinVST/Noise/.vs/VSTProject/v14/.suo b/plugins/WinVST/Noise/.vs/VSTProject/v14/.suo Binary files differindex 78a0fe9..082f829 100755 --- a/plugins/WinVST/Noise/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Noise/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Noise/Noise.cpp b/plugins/WinVST/Noise/Noise.cpp index 76d00c8..d955a29 100755 --- a/plugins/WinVST/Noise/Noise.cpp +++ b/plugins/WinVST/Noise/Noise.cpp @@ -36,11 +36,8 @@ Noise::Noise(audioMasterCallback audioMaster) : flipR = false; filterflip = false; for(int count = 0; count < 11; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;} - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Noise/Noise.h b/plugins/WinVST/Noise/Noise.h index 0ee4d76..67c32bc 100755 --- a/plugins/WinVST/Noise/Noise.h +++ b/plugins/WinVST/Noise/Noise.h @@ -81,11 +81,8 @@ private: double f[11]; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/Noise/NoiseProc.cpp b/plugins/WinVST/Noise/NoiseProc.cpp index e185120..31cba20 100755 --- a/plugins/WinVST/Noise/NoiseProc.cpp +++ b/plugins/WinVST/Noise/NoiseProc.cpp @@ -104,9 +104,6 @@ void Noise::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra f[9] /= overallscale; //and now it's neatly scaled, too - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; @@ -299,25 +296,14 @@ void Noise::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra //sometimes I'm really tired and can't do stuff, and I remember trying to simplify this //and breaking it somehow. So, there ya go, strange obtuse code. - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -426,9 +412,6 @@ void Noise::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s f[9] /= overallscale; //and now it's neatly scaled, too - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; while (--sampleFrames >= 0) { @@ -619,25 +602,16 @@ void Noise::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s //sometimes I'm really tired and can't do stuff, and I remember trying to simplify this //and breaking it somehow. So, there ya go, strange obtuse code. - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/NonlinearSpace/.vs/VSTProject/v14/.suo b/plugins/WinVST/NonlinearSpace/.vs/VSTProject/v14/.suo Binary files differindex 7a7784d..975efbe 100755 --- a/plugins/WinVST/NonlinearSpace/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/NonlinearSpace/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/NonlinearSpace/NonlinearSpace.cpp b/plugins/WinVST/NonlinearSpace/NonlinearSpace.cpp index 6941556..eb05bc3 100755 --- a/plugins/WinVST/NonlinearSpace/NonlinearSpace.cpp +++ b/plugins/WinVST/NonlinearSpace/NonlinearSpace.cpp @@ -195,11 +195,8 @@ NonlinearSpace::NonlinearSpace(audioMasterCallback audioMaster) : countdown = -1; flip = true; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/NonlinearSpace/NonlinearSpace.h b/plugins/WinVST/NonlinearSpace/NonlinearSpace.h index e915b21..dbaa0b3 100755 --- a/plugins/WinVST/NonlinearSpace/NonlinearSpace.h +++ b/plugins/WinVST/NonlinearSpace/NonlinearSpace.h @@ -208,11 +208,8 @@ private: double nonlin; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/NonlinearSpace/NonlinearSpaceProc.cpp b/plugins/WinVST/NonlinearSpace/NonlinearSpaceProc.cpp index 597e184..f9df9fc 100755 --- a/plugins/WinVST/NonlinearSpace/NonlinearSpaceProc.cpp +++ b/plugins/WinVST/NonlinearSpace/NonlinearSpaceProc.cpp @@ -14,9 +14,6 @@ void NonlinearSpace::processReplacing(float **inputs, float **outputs, VstInt32 float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double drySampleL; double drySampleR; @@ -746,25 +743,14 @@ void NonlinearSpace::processReplacing(float **inputs, float **outputs, VstInt32 inputSampleR += drySampleR; //here we combine the tanks with the dry signal - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither flip = !flip; *out1 = inputSampleL; @@ -784,9 +770,6 @@ void NonlinearSpace::processDoubleReplacing(double **inputs, double **outputs, V double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double drySampleL; double drySampleR; @@ -1516,25 +1499,16 @@ void NonlinearSpace::processDoubleReplacing(double **inputs, double **outputs, V inputSampleR += drySampleR; //here we combine the tanks with the dry signal - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither flip = !flip; *out1 = inputSampleL; diff --git a/plugins/WinVST/OneCornerClip/.vs/VSTProject/v14/.suo b/plugins/WinVST/OneCornerClip/.vs/VSTProject/v14/.suo Binary files differindex 18173df..f5ef448 100755 --- a/plugins/WinVST/OneCornerClip/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/OneCornerClip/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/OneCornerClip/OneCornerClip.cpp b/plugins/WinVST/OneCornerClip/OneCornerClip.cpp index bf8828e..59e2824 100755 --- a/plugins/WinVST/OneCornerClip/OneCornerClip.cpp +++ b/plugins/WinVST/OneCornerClip/OneCornerClip.cpp @@ -25,11 +25,8 @@ OneCornerClip::OneCornerClip(audioMasterCallback audioMaster) : limitPosR = 0.0; limitNegR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/OneCornerClip/OneCornerClip.h b/plugins/WinVST/OneCornerClip/OneCornerClip.h index 07f480a..4f039fa 100755 --- a/plugins/WinVST/OneCornerClip/OneCornerClip.h +++ b/plugins/WinVST/OneCornerClip/OneCornerClip.h @@ -56,11 +56,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double lastSampleL; diff --git a/plugins/WinVST/OneCornerClip/OneCornerClipProc.cpp b/plugins/WinVST/OneCornerClip/OneCornerClipProc.cpp index 0398b60..c45c69b 100755 --- a/plugins/WinVST/OneCornerClip/OneCornerClipProc.cpp +++ b/plugins/WinVST/OneCornerClip/OneCornerClipProc.cpp @@ -17,9 +17,6 @@ void OneCornerClip::processReplacing(float **inputs, float **outputs, VstInt32 s double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputGain = pow(10.0,(((A*36.0)-12.0)/20.0)); double posThreshold = B; @@ -157,25 +154,14 @@ void OneCornerClip::processReplacing(float **inputs, float **outputs, VstInt32 s inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither if (clipEngage == false) { @@ -204,9 +190,6 @@ void OneCornerClip::processDoubleReplacing(double **inputs, double **outputs, Vs double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputGain = pow(10.0,(((A*36.0)-12.0)/20.0)); double posThreshold = B; @@ -345,25 +328,16 @@ void OneCornerClip::processDoubleReplacing(double **inputs, double **outputs, Vs inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither if (clipEngage == false) { diff --git a/plugins/WinVST/PDBuss/.vs/VSTProject/v14/.suo b/plugins/WinVST/PDBuss/.vs/VSTProject/v14/.suo Binary files differindex ac1db30..dc3eb7b 100755 --- a/plugins/WinVST/PDBuss/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/PDBuss/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/PDBuss/PDBuss.cpp b/plugins/WinVST/PDBuss/PDBuss.cpp index 323d8cf..8b31d8b 100755 --- a/plugins/WinVST/PDBuss/PDBuss.cpp +++ b/plugins/WinVST/PDBuss/PDBuss.cpp @@ -21,11 +21,8 @@ PDBuss::PDBuss(audioMasterCallback audioMaster) : previousSampleL = 0.0; previousSampleR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/PDBuss/PDBuss.h b/plugins/WinVST/PDBuss/PDBuss.h index 5c7a504..3e6d9b8 100755 --- a/plugins/WinVST/PDBuss/PDBuss.h +++ b/plugins/WinVST/PDBuss/PDBuss.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double gainchase; double settingchase; diff --git a/plugins/WinVST/PDBuss/PDBussProc.cpp b/plugins/WinVST/PDBuss/PDBussProc.cpp index c099057..6da8fa0 100755 --- a/plugins/WinVST/PDBuss/PDBussProc.cpp +++ b/plugins/WinVST/PDBuss/PDBussProc.cpp @@ -13,9 +13,6 @@ void PDBuss::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr float* in2 = inputs[1]; float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double intensity = B; @@ -122,25 +119,14 @@ void PDBuss::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr previousSampleR = sin(drySampleR); //apply the sine while storing previous sample - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -158,9 +144,6 @@ void PDBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double* in2 = inputs[1]; double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double intensity = B; @@ -267,25 +250,16 @@ void PDBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 previousSampleR = sin(drySampleR); //apply the sine while storing previous sample - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/PDChannel/.vs/VSTProject/v14/.suo b/plugins/WinVST/PDChannel/.vs/VSTProject/v14/.suo Binary files differindex 5debbed..3c18924 100755 --- a/plugins/WinVST/PDChannel/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/PDChannel/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/PDChannel/PDChannel.cpp b/plugins/WinVST/PDChannel/PDChannel.cpp index d300fc8..aef639d 100755 --- a/plugins/WinVST/PDChannel/PDChannel.cpp +++ b/plugins/WinVST/PDChannel/PDChannel.cpp @@ -21,11 +21,8 @@ PDChannel::PDChannel(audioMasterCallback audioMaster) : previousSampleL = 0.0; previousSampleR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/PDChannel/PDChannel.h b/plugins/WinVST/PDChannel/PDChannel.h index e92117c..ea233e2 100755 --- a/plugins/WinVST/PDChannel/PDChannel.h +++ b/plugins/WinVST/PDChannel/PDChannel.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double gainchase; double settingchase; diff --git a/plugins/WinVST/PDChannel/PDChannelProc.cpp b/plugins/WinVST/PDChannel/PDChannelProc.cpp index d8f79df..fb5932d 100755 --- a/plugins/WinVST/PDChannel/PDChannelProc.cpp +++ b/plugins/WinVST/PDChannel/PDChannelProc.cpp @@ -13,9 +13,6 @@ void PDChannel::processReplacing(float **inputs, float **outputs, VstInt32 sampl float* in2 = inputs[1]; float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double intensity = B; @@ -115,25 +112,14 @@ void PDChannel::processReplacing(float **inputs, float **outputs, VstInt32 sampl previousSampleR = sin(drySampleR); //apply the sine while storing previous sample - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -151,9 +137,6 @@ void PDChannel::processDoubleReplacing(double **inputs, double **outputs, VstInt double* in2 = inputs[1]; double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputgain = A; double intensity = B; @@ -253,25 +236,16 @@ void PDChannel::processDoubleReplacing(double **inputs, double **outputs, VstInt previousSampleR = sin(drySampleR); //apply the sine while storing previous sample - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/PhaseNudge/.vs/VSTProject/v14/.suo b/plugins/WinVST/PhaseNudge/.vs/VSTProject/v14/.suo Binary files differindex 11ae01b..f0b5d94 100755 --- a/plugins/WinVST/PhaseNudge/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/PhaseNudge/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/PhaseNudge/PhaseNudge.cpp b/plugins/WinVST/PhaseNudge/PhaseNudge.cpp index 8a77175..e9e5c8d 100755 --- a/plugins/WinVST/PhaseNudge/PhaseNudge.cpp +++ b/plugins/WinVST/PhaseNudge/PhaseNudge.cpp @@ -16,11 +16,8 @@ PhaseNudge::PhaseNudge(audioMasterCallback audioMaster) : B = 1.0; for(int count = 0; count < 1502; count++) {dL[count] = 0.0; dR[count] = 0.0;} one = 1; maxdelay = 9001; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/PhaseNudge/PhaseNudge.h b/plugins/WinVST/PhaseNudge/PhaseNudge.h index cba0ac8..2926ccb 100755 --- a/plugins/WinVST/PhaseNudge/PhaseNudge.h +++ b/plugins/WinVST/PhaseNudge/PhaseNudge.h @@ -57,11 +57,8 @@ private: double dR[1503]; int one, maxdelay; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/PhaseNudge/PhaseNudgeProc.cpp b/plugins/WinVST/PhaseNudge/PhaseNudgeProc.cpp index 494c841..150ecd5 100755 --- a/plugins/WinVST/PhaseNudge/PhaseNudgeProc.cpp +++ b/plugins/WinVST/PhaseNudge/PhaseNudgeProc.cpp @@ -14,9 +14,6 @@ void PhaseNudge::processReplacing(float **inputs, float **outputs, VstInt32 samp float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; int allpasstemp; double outallpass = 0.618033988749894848204586; //golden ratio! @@ -136,25 +133,14 @@ void PhaseNudge::processReplacing(float **inputs, float **outputs, VstInt32 samp inputSampleR = (drySampleR * dry)+(inputSampleR * wet); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -173,9 +159,6 @@ void PhaseNudge::processDoubleReplacing(double **inputs, double **outputs, VstIn double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; int allpasstemp; double outallpass = 0.618033988749894848204586; //golden ratio! @@ -294,25 +277,16 @@ void PhaseNudge::processDoubleReplacing(double **inputs, double **outputs, VstIn inputSampleR = (drySampleR * dry)+(inputSampleR * wet); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Point/.vs/VSTProject/v14/.suo b/plugins/WinVST/Point/.vs/VSTProject/v14/.suo Binary files differindex 8ad608b..b4a9ec3 100755 --- a/plugins/WinVST/Point/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Point/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Point/Point.cpp b/plugins/WinVST/Point/Point.cpp index 22885b5..f795470 100755 --- a/plugins/WinVST/Point/Point.cpp +++ b/plugins/WinVST/Point/Point.cpp @@ -24,10 +24,8 @@ Point::Point(audioMasterCallback audioMaster) : nibBR = 0.0; nobBR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; fpFlip = true; //this is reset: values being initialized only once. Startup values, whatever they are. diff --git a/plugins/WinVST/Point/Point.h b/plugins/WinVST/Point/Point.h index 12c8001..ff898cb 100755 --- a/plugins/WinVST/Point/Point.h +++ b/plugins/WinVST/Point/Point.h @@ -54,10 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; + long double fpNShapeL; + long double fpNShapeR; bool fpFlip; //default stuff double nibAL; diff --git a/plugins/WinVST/Point/PointProc.cpp b/plugins/WinVST/Point/PointProc.cpp index a00263d..a3bbe3c 100755 --- a/plugins/WinVST/Point/PointProc.cpp +++ b/plugins/WinVST/Point/PointProc.cpp @@ -27,9 +27,6 @@ void Point::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra double nibnobFactor = 0.0; //start with the fallthrough value, why not double absolute; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -128,26 +125,16 @@ void Point::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra } } inputSampleR *= nibnobFactor; - - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } fpFlip = !fpFlip; - //end noise shaping on 32 bit output + + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -179,9 +166,6 @@ void Point::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s double nibnobFactor = 0.0; //start with the fallthrough value, why not double absolute; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -280,26 +264,18 @@ void Point::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s } } inputSampleR *= nibnobFactor; - - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } fpFlip = !fpFlip; - //end noise shaping on 64 bit output + + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Pop/.vs/VSTProject/v14/.suo b/plugins/WinVST/Pop/.vs/VSTProject/v14/.suo Binary files differindex 3af8535..4126984 100755 --- a/plugins/WinVST/Pop/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Pop/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Pop/PopProc.cpp b/plugins/WinVST/Pop/PopProc.cpp index ae7dd4d..baa9420 100755 --- a/plugins/WinVST/Pop/PopProc.cpp +++ b/plugins/WinVST/Pop/PopProc.cpp @@ -268,18 +268,14 @@ void Pop::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame inputSampleR = (drySampleR*(1.0-wet))+(inputSampleR*wet); } - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -289,12 +285,6 @@ void Pop::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Pop::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -558,18 +548,16 @@ void Pop::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam inputSampleR = (drySampleR*(1.0-wet))+(inputSampleR*wet); } - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -579,10 +567,4 @@ void Pop::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/WinVST/PowerSag/.vs/VSTProject/v14/.suo b/plugins/WinVST/PowerSag/.vs/VSTProject/v14/.suo Binary files differindex b1569f1..b258318 100755 --- a/plugins/WinVST/PowerSag/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/PowerSag/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/PowerSag/PowerSag.cpp b/plugins/WinVST/PowerSag/PowerSag.cpp index 0218186..d1d0745 100755 --- a/plugins/WinVST/PowerSag/PowerSag.cpp +++ b/plugins/WinVST/PowerSag/PowerSag.cpp @@ -18,11 +18,8 @@ PowerSag::PowerSag(audioMasterCallback audioMaster) : gcount = 0; A = 0.0; B = 0.3; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/PowerSag/PowerSag.h b/plugins/WinVST/PowerSag/PowerSag.h index 930f05b..38839b6 100755 --- a/plugins/WinVST/PowerSag/PowerSag.h +++ b/plugins/WinVST/PowerSag/PowerSag.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double dL[9000]; double dR[9000]; diff --git a/plugins/WinVST/PowerSag/PowerSagProc.cpp b/plugins/WinVST/PowerSag/PowerSagProc.cpp index d1afa31..de43be6 100755 --- a/plugins/WinVST/PowerSag/PowerSagProc.cpp +++ b/plugins/WinVST/PowerSag/PowerSagProc.cpp @@ -22,9 +22,6 @@ void PowerSag::processReplacing(float **inputs, float **outputs, VstInt32 sample double out; double bridgerectifier; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -123,25 +120,14 @@ void PowerSag::processReplacing(float **inputs, float **outputs, VstInt32 sample gcount--; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -168,9 +154,6 @@ void PowerSag::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double out; double bridgerectifier; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -269,25 +252,16 @@ void PowerSag::processDoubleReplacing(double **inputs, double **outputs, VstInt3 gcount--; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Pressure4/.vs/VSTProject/v14/.suo b/plugins/WinVST/Pressure4/.vs/VSTProject/v14/.suo Binary files differindex a911044..b3e9f08 100755 --- a/plugins/WinVST/Pressure4/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Pressure4/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Pressure4/Pressure4.cpp b/plugins/WinVST/Pressure4/Pressure4.cpp index 8ae2adc..10ed5fa 100755 --- a/plugins/WinVST/Pressure4/Pressure4.cpp +++ b/plugins/WinVST/Pressure4/Pressure4.cpp @@ -16,10 +16,8 @@ Pressure4::Pressure4(audioMasterCallback audioMaster) : B = 0.2; C = 1.0; D = 1.0; - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; muSpeedA = 10000; muSpeedB = 10000; muCoefficientA = 1; diff --git a/plugins/WinVST/Pressure4/Pressure4.h b/plugins/WinVST/Pressure4/Pressure4.h index 29d20eb..6cf3448 100755 --- a/plugins/WinVST/Pressure4/Pressure4.h +++ b/plugins/WinVST/Pressure4/Pressure4.h @@ -62,10 +62,8 @@ private: double muSpeedB; double muCoefficientA; double muCoefficientB; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; + long double fpNShapeL; + long double fpNShapeR; bool flip; float A; diff --git a/plugins/WinVST/Pressure4/Pressure4Proc.cpp b/plugins/WinVST/Pressure4/Pressure4Proc.cpp index 02b8a78..7e285df 100755 --- a/plugins/WinVST/Pressure4/Pressure4Proc.cpp +++ b/plugins/WinVST/Pressure4/Pressure4Proc.cpp @@ -43,9 +43,6 @@ void Pressure4::processReplacing(float **inputs, float **outputs, VstInt32 sampl unmewiness = 1.0-mewiness; } // µ µ µ µ µ µ µ µ µ µ µ µ is the kitten song o/~ - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -195,27 +192,14 @@ void Pressure4::processReplacing(float **inputs, float **outputs, VstInt32 sampl else {inputSampleR = -bridgerectifier;} //second stage of overdrive to prevent overs and allow bloody loud extremeness - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *outputL = inputSampleL; *outputR = inputSampleR; @@ -263,9 +247,6 @@ void Pressure4::processDoubleReplacing(double **inputs, double **outputs, VstInt unmewiness = 1.0-mewiness; } // µ µ µ µ µ µ µ µ µ µ µ µ is the kitten song o/~ - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -416,27 +397,16 @@ void Pressure4::processDoubleReplacing(double **inputs, double **outputs, VstInt else {inputSampleR = -bridgerectifier;} //second stage of overdrive to prevent overs and allow bloody loud extremeness - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *outputL = inputSampleL; *outputR = inputSampleR; diff --git a/plugins/WinVST/PurestConsoleBuss/.vs/Console4Channel64/v14/.suo b/plugins/WinVST/PurestConsoleBuss/.vs/Console4Channel64/v14/.suo Binary files differindex 777b846..777b846 100644..100755 --- a/plugins/WinVST/PurestConsoleBuss/.vs/Console4Channel64/v14/.suo +++ b/plugins/WinVST/PurestConsoleBuss/.vs/Console4Channel64/v14/.suo diff --git a/plugins/WinVST/PurestConsoleBuss/.vs/VSTProject/v14/.suo b/plugins/WinVST/PurestConsoleBuss/.vs/VSTProject/v14/.suo Binary files differindex be45c22..892a377 100644..100755 --- a/plugins/WinVST/PurestConsoleBuss/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/PurestConsoleBuss/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/PurestConsoleBuss/PurestConsoleBuss.cpp b/plugins/WinVST/PurestConsoleBuss/PurestConsoleBuss.cpp index ed0b223..2d8e619 100644..100755 --- a/plugins/WinVST/PurestConsoleBuss/PurestConsoleBuss.cpp +++ b/plugins/WinVST/PurestConsoleBuss/PurestConsoleBuss.cpp @@ -12,11 +12,8 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new P PurestConsoleBuss::PurestConsoleBuss(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, kNumPrograms, kNumParameters) { - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/PurestConsoleBuss/PurestConsoleBuss.h b/plugins/WinVST/PurestConsoleBuss/PurestConsoleBuss.h index 0d237ec..51495fc 100644..100755 --- a/plugins/WinVST/PurestConsoleBuss/PurestConsoleBuss.h +++ b/plugins/WinVST/PurestConsoleBuss/PurestConsoleBuss.h @@ -51,11 +51,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff }; diff --git a/plugins/WinVST/PurestConsoleBuss/PurestConsoleBussProc.cpp b/plugins/WinVST/PurestConsoleBuss/PurestConsoleBussProc.cpp index c06258a..6211eeb 100644..100755 --- a/plugins/WinVST/PurestConsoleBuss/PurestConsoleBussProc.cpp +++ b/plugins/WinVST/PurestConsoleBuss/PurestConsoleBussProc.cpp @@ -14,9 +14,6 @@ void PurestConsoleBuss::processReplacing(float **inputs, float **outputs, VstInt float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -74,25 +71,14 @@ void PurestConsoleBuss::processReplacing(float **inputs, float **outputs, VstInt inputSampleR = asin(inputSampleR); //amplitude aspect - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -111,9 +97,6 @@ void PurestConsoleBuss::processDoubleReplacing(double **inputs, double **outputs double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -171,25 +154,16 @@ void PurestConsoleBuss::processDoubleReplacing(double **inputs, double **outputs inputSampleR = asin(inputSampleR); //amplitude aspect - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/PurestConsoleBuss/VSTProject.sln b/plugins/WinVST/PurestConsoleBuss/VSTProject.sln index 694b424..694b424 100644..100755 --- a/plugins/WinVST/PurestConsoleBuss/VSTProject.sln +++ b/plugins/WinVST/PurestConsoleBuss/VSTProject.sln diff --git a/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj b/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj index c4c86ff..c4c86ff 100644..100755 --- a/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj +++ b/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj diff --git a/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj.filters b/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj.filters index 9a9d0ad..9a9d0ad 100644..100755 --- a/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj.filters +++ b/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj.filters diff --git a/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj.user b/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj.user index 2216267..2216267 100644..100755 --- a/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj.user +++ b/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj.user diff --git a/plugins/WinVST/PurestConsoleBuss/vstplug.def b/plugins/WinVST/PurestConsoleBuss/vstplug.def index 5bf499a..5bf499a 100644..100755 --- a/plugins/WinVST/PurestConsoleBuss/vstplug.def +++ b/plugins/WinVST/PurestConsoleBuss/vstplug.def diff --git a/plugins/WinVST/PurestConsoleChannel/.vs/Console4Channel64/v14/.suo b/plugins/WinVST/PurestConsoleChannel/.vs/Console4Channel64/v14/.suo Binary files differindex 777b846..777b846 100644..100755 --- a/plugins/WinVST/PurestConsoleChannel/.vs/Console4Channel64/v14/.suo +++ b/plugins/WinVST/PurestConsoleChannel/.vs/Console4Channel64/v14/.suo diff --git a/plugins/WinVST/PurestConsoleChannel/.vs/VSTProject/v14/.suo b/plugins/WinVST/PurestConsoleChannel/.vs/VSTProject/v14/.suo Binary files differindex 506b762..1bcc2a5 100644..100755 --- a/plugins/WinVST/PurestConsoleChannel/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/PurestConsoleChannel/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannel.cpp b/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannel.cpp index b9f3e04..35649a6 100644..100755 --- a/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannel.cpp +++ b/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannel.cpp @@ -12,11 +12,8 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new P PurestConsoleChannel::PurestConsoleChannel(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, kNumPrograms, kNumParameters) { - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannel.h b/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannel.h index c0a1648..51e728f 100644..100755 --- a/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannel.h +++ b/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannel.h @@ -51,11 +51,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff }; diff --git a/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannelProc.cpp b/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannelProc.cpp index 630cba7..2fc513a 100644..100755 --- a/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannelProc.cpp +++ b/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannelProc.cpp @@ -14,9 +14,6 @@ void PurestConsoleChannel::processReplacing(float **inputs, float **outputs, Vst float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -68,25 +65,14 @@ void PurestConsoleChannel::processReplacing(float **inputs, float **outputs, Vst inputSampleR = sin(inputSampleR); //amplitude aspect - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -105,9 +91,6 @@ void PurestConsoleChannel::processDoubleReplacing(double **inputs, double **outp double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -159,25 +142,16 @@ void PurestConsoleChannel::processDoubleReplacing(double **inputs, double **outp inputSampleR = sin(inputSampleR); //amplitude aspect - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/PurestConsoleChannel/VSTProject.sln b/plugins/WinVST/PurestConsoleChannel/VSTProject.sln index 694b424..694b424 100644..100755 --- a/plugins/WinVST/PurestConsoleChannel/VSTProject.sln +++ b/plugins/WinVST/PurestConsoleChannel/VSTProject.sln diff --git a/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj b/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj index 8ed20f5..8ed20f5 100644..100755 --- a/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj +++ b/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj diff --git a/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj.filters b/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj.filters index 2e64344..2e64344 100644..100755 --- a/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj.filters +++ b/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj.filters diff --git a/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj.user b/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj.user index 2216267..2216267 100644..100755 --- a/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj.user +++ b/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj.user diff --git a/plugins/WinVST/PurestConsoleChannel/vstplug.def b/plugins/WinVST/PurestConsoleChannel/vstplug.def index 5bf499a..5bf499a 100644..100755 --- a/plugins/WinVST/PurestConsoleChannel/vstplug.def +++ b/plugins/WinVST/PurestConsoleChannel/vstplug.def diff --git a/plugins/WinVST/PurestDrive/.vs/Console4Channel64/v14/.suo b/plugins/WinVST/PurestDrive/.vs/Console4Channel64/v14/.suo Binary files differindex 777b846..777b846 100644..100755 --- a/plugins/WinVST/PurestDrive/.vs/Console4Channel64/v14/.suo +++ b/plugins/WinVST/PurestDrive/.vs/Console4Channel64/v14/.suo diff --git a/plugins/WinVST/PurestDrive/.vs/VSTProject/v14/.suo b/plugins/WinVST/PurestDrive/.vs/VSTProject/v14/.suo Binary files differindex 2c7648b..b079ddd 100644..100755 --- a/plugins/WinVST/PurestDrive/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/PurestDrive/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/PurestDrive/PurestDrive.cpp b/plugins/WinVST/PurestDrive/PurestDrive.cpp index e2451fe..a1d9264 100644..100755 --- a/plugins/WinVST/PurestDrive/PurestDrive.cpp +++ b/plugins/WinVST/PurestDrive/PurestDrive.cpp @@ -17,11 +17,8 @@ PurestDrive::PurestDrive(audioMasterCallback audioMaster) : previousSampleL = 0.0; previousSampleR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/PurestDrive/PurestDrive.h b/plugins/WinVST/PurestDrive/PurestDrive.h index 1f5b349..abcd65b 100644..100755 --- a/plugins/WinVST/PurestDrive/PurestDrive.h +++ b/plugins/WinVST/PurestDrive/PurestDrive.h @@ -52,11 +52,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double previousSampleL; diff --git a/plugins/WinVST/PurestDrive/PurestDriveProc.cpp b/plugins/WinVST/PurestDrive/PurestDriveProc.cpp index e453883..f5cc804 100644..100755 --- a/plugins/WinVST/PurestDrive/PurestDriveProc.cpp +++ b/plugins/WinVST/PurestDrive/PurestDriveProc.cpp @@ -14,9 +14,6 @@ void PurestDrive::processReplacing(float **inputs, float **outputs, VstInt32 sam float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double intensity = A; double drySampleL; @@ -90,25 +87,14 @@ void PurestDrive::processReplacing(float **inputs, float **outputs, VstInt32 sam previousSampleR = sin(drySampleR); //apply the sine while storing previous sample - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -127,9 +113,6 @@ void PurestDrive::processDoubleReplacing(double **inputs, double **outputs, VstI double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double intensity = A; double drySampleL; @@ -204,25 +187,16 @@ void PurestDrive::processDoubleReplacing(double **inputs, double **outputs, VstI previousSampleR = sin(drySampleR); //apply the sine while storing previous sample - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/PurestDrive/VSTProject.sln b/plugins/WinVST/PurestDrive/VSTProject.sln index 694b424..694b424 100644..100755 --- a/plugins/WinVST/PurestDrive/VSTProject.sln +++ b/plugins/WinVST/PurestDrive/VSTProject.sln diff --git a/plugins/WinVST/PurestDrive/VSTProject.vcxproj b/plugins/WinVST/PurestDrive/VSTProject.vcxproj index 15515bd..15515bd 100644..100755 --- a/plugins/WinVST/PurestDrive/VSTProject.vcxproj +++ b/plugins/WinVST/PurestDrive/VSTProject.vcxproj diff --git a/plugins/WinVST/PurestDrive/VSTProject.vcxproj.filters b/plugins/WinVST/PurestDrive/VSTProject.vcxproj.filters index 1f8d945..1f8d945 100644..100755 --- a/plugins/WinVST/PurestDrive/VSTProject.vcxproj.filters +++ b/plugins/WinVST/PurestDrive/VSTProject.vcxproj.filters diff --git a/plugins/WinVST/PurestDrive/VSTProject.vcxproj.user b/plugins/WinVST/PurestDrive/VSTProject.vcxproj.user index 2216267..2216267 100644..100755 --- a/plugins/WinVST/PurestDrive/VSTProject.vcxproj.user +++ b/plugins/WinVST/PurestDrive/VSTProject.vcxproj.user diff --git a/plugins/WinVST/PurestDrive/vstplug.def b/plugins/WinVST/PurestDrive/vstplug.def index 5bf499a..5bf499a 100644..100755 --- a/plugins/WinVST/PurestDrive/vstplug.def +++ b/plugins/WinVST/PurestDrive/vstplug.def diff --git a/plugins/WinVST/PurestEcho/.vs/VSTProject/v14/.suo b/plugins/WinVST/PurestEcho/.vs/VSTProject/v14/.suo Binary files differindex 1ddbf82..8746b94 100755 --- a/plugins/WinVST/PurestEcho/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/PurestEcho/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/PurestEcho/PurestEcho.cpp b/plugins/WinVST/PurestEcho/PurestEcho.cpp index 6b8c302..6bcaa3f 100755 --- a/plugins/WinVST/PurestEcho/PurestEcho.cpp +++ b/plugins/WinVST/PurestEcho/PurestEcho.cpp @@ -19,11 +19,8 @@ PurestEcho::PurestEcho(audioMasterCallback audioMaster) : E = 0.0; for(int count = 0; count < totalsamples-1; count++) {dL[count] = 0;dR[count] = 0;} gcount = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/PurestEcho/PurestEcho.h b/plugins/WinVST/PurestEcho/PurestEcho.h index a298dd2..870e158 100755 --- a/plugins/WinVST/PurestEcho/PurestEcho.h +++ b/plugins/WinVST/PurestEcho/PurestEcho.h @@ -62,11 +62,8 @@ private: int gcount; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/PurestEcho/PurestEchoProc.cpp b/plugins/WinVST/PurestEcho/PurestEchoProc.cpp index 77e4b2f..e8e141c 100755 --- a/plugins/WinVST/PurestEcho/PurestEchoProc.cpp +++ b/plugins/WinVST/PurestEcho/PurestEchoProc.cpp @@ -76,9 +76,6 @@ void PurestEcho::processReplacing(float **inputs, float **outputs, VstInt32 samp double delaysBufferL; double delaysBufferR; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -177,25 +174,14 @@ void PurestEcho::processReplacing(float **inputs, float **outputs, VstInt32 samp gcount--; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -276,9 +262,6 @@ void PurestEcho::processDoubleReplacing(double **inputs, double **outputs, VstIn double delaysBufferL; double delaysBufferR; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -377,25 +360,16 @@ void PurestEcho::processDoubleReplacing(double **inputs, double **outputs, VstIn gcount--; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/PurestGain/.vs/Console4Channel64/v14/.suo b/plugins/WinVST/PurestGain/.vs/Console4Channel64/v14/.suo Binary files differindex 777b846..777b846 100644..100755 --- a/plugins/WinVST/PurestGain/.vs/Console4Channel64/v14/.suo +++ b/plugins/WinVST/PurestGain/.vs/Console4Channel64/v14/.suo diff --git a/plugins/WinVST/PurestGain/.vs/VSTProject/v14/.suo b/plugins/WinVST/PurestGain/.vs/VSTProject/v14/.suo Binary files differindex 60f3507..774fc5c 100644..100755 --- a/plugins/WinVST/PurestGain/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/PurestGain/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/PurestGain/PurestGain.cpp b/plugins/WinVST/PurestGain/PurestGain.cpp index 3091a12..b1b77fe 100644..100755 --- a/plugins/WinVST/PurestGain/PurestGain.cpp +++ b/plugins/WinVST/PurestGain/PurestGain.cpp @@ -18,11 +18,8 @@ PurestGain::PurestGain(audioMasterCallback audioMaster) : settingchase = -90.0; gainBchase = -90.0; chasespeed = 350.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/PurestGain/PurestGain.h b/plugins/WinVST/PurestGain/PurestGain.h index 7869425..9e2baea 100644..100755 --- a/plugins/WinVST/PurestGain/PurestGain.h +++ b/plugins/WinVST/PurestGain/PurestGain.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double gainchase; double settingchase; diff --git a/plugins/WinVST/PurestGain/PurestGainProc.cpp b/plugins/WinVST/PurestGain/PurestGainProc.cpp index 38f2849..4aa6d96 100644..100755 --- a/plugins/WinVST/PurestGain/PurestGainProc.cpp +++ b/plugins/WinVST/PurestGain/PurestGainProc.cpp @@ -43,9 +43,6 @@ void PurestGain::processReplacing(float **inputs, float **outputs, VstInt32 samp //done with slow fade controller double outputgain; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -118,45 +115,19 @@ void PurestGain::processReplacing(float **inputs, float **outputs, VstInt32 samp if (1.0 == outputgain) { - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output *out1 = *in1; *out2 = *in2; } else { inputSampleL *= outputgain; inputSampleR *= outputgain; - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; } @@ -204,9 +175,6 @@ void PurestGain::processDoubleReplacing(double **inputs, double **outputs, VstIn //done with slow fade controller double outputgain; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -273,45 +241,21 @@ void PurestGain::processDoubleReplacing(double **inputs, double **outputs, VstIn if (1.0 == outputgain) { - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output *out1 = *in1; *out2 = *in2; } else { inputSampleL *= outputgain; inputSampleR *= outputgain; - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; } diff --git a/plugins/WinVST/PurestGain/VSTProject.sln b/plugins/WinVST/PurestGain/VSTProject.sln index 694b424..694b424 100644..100755 --- a/plugins/WinVST/PurestGain/VSTProject.sln +++ b/plugins/WinVST/PurestGain/VSTProject.sln diff --git a/plugins/WinVST/PurestGain/VSTProject.vcxproj b/plugins/WinVST/PurestGain/VSTProject.vcxproj index 4c5b244..4c5b244 100644..100755 --- a/plugins/WinVST/PurestGain/VSTProject.vcxproj +++ b/plugins/WinVST/PurestGain/VSTProject.vcxproj diff --git a/plugins/WinVST/PurestGain/VSTProject.vcxproj.filters b/plugins/WinVST/PurestGain/VSTProject.vcxproj.filters index 9b1f09e..9b1f09e 100644..100755 --- a/plugins/WinVST/PurestGain/VSTProject.vcxproj.filters +++ b/plugins/WinVST/PurestGain/VSTProject.vcxproj.filters diff --git a/plugins/WinVST/PurestGain/VSTProject.vcxproj.user b/plugins/WinVST/PurestGain/VSTProject.vcxproj.user index 2216267..2216267 100644..100755 --- a/plugins/WinVST/PurestGain/VSTProject.vcxproj.user +++ b/plugins/WinVST/PurestGain/VSTProject.vcxproj.user diff --git a/plugins/WinVST/PurestGain/vstplug.def b/plugins/WinVST/PurestGain/vstplug.def index 5bf499a..5bf499a 100644..100755 --- a/plugins/WinVST/PurestGain/vstplug.def +++ b/plugins/WinVST/PurestGain/vstplug.def diff --git a/plugins/WinVST/PurestWarm/.vs/VSTProject/v14/.suo b/plugins/WinVST/PurestWarm/.vs/VSTProject/v14/.suo Binary files differindex 91f4254..4f4d82d 100755 --- a/plugins/WinVST/PurestWarm/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/PurestWarm/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/PurestWarm/PurestWarm.cpp b/plugins/WinVST/PurestWarm/PurestWarm.cpp index 475e845..eeee37b 100755 --- a/plugins/WinVST/PurestWarm/PurestWarm.cpp +++ b/plugins/WinVST/PurestWarm/PurestWarm.cpp @@ -13,11 +13,8 @@ PurestWarm::PurestWarm(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, kNumPrograms, kNumParameters) { A = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/PurestWarm/PurestWarm.h b/plugins/WinVST/PurestWarm/PurestWarm.h index c67a91e..98bb0ce 100755 --- a/plugins/WinVST/PurestWarm/PurestWarm.h +++ b/plugins/WinVST/PurestWarm/PurestWarm.h @@ -52,11 +52,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/PurestWarm/PurestWarmProc.cpp b/plugins/WinVST/PurestWarm/PurestWarmProc.cpp index b5a5070..101c931 100755 --- a/plugins/WinVST/PurestWarm/PurestWarmProc.cpp +++ b/plugins/WinVST/PurestWarm/PurestWarmProc.cpp @@ -14,9 +14,6 @@ void PurestWarm::processReplacing(float **inputs, float **outputs, VstInt32 samp float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; int polarity = (int) ( A * 1.999 ); @@ -71,103 +68,55 @@ void PurestWarm::processReplacing(float **inputs, float **outputs, VstInt32 samp if (inputSampleL < 0) { inputSampleL = -(sin(-inputSampleL*1.57079634)/1.57079634); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - } - } else { - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - } + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither } - if (inputSampleR < 0) { inputSampleR = -(sin(-inputSampleR*1.57079634)/1.57079634); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } else { - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - } else { - if (fpFlip) { - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - } else { - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - } + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither } - } else { - if (inputSampleL > 0) { inputSampleL = sin(inputSampleL*1.57079634)/1.57079634; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - } - } else { - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - } - } + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither + } if (inputSampleR > 0) { inputSampleR = sin(inputSampleR*1.57079634)/1.57079634; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } else { - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - } else { - if (fpFlip) { - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - } else { - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - } - } - + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither + } } //that's it. Only applies on one half of the waveform, other half is passthrough untouched. - //even the floating point noise shaping to the 32 bit buss is only applied as needed. - - fpFlip = !fpFlip; - //end noise shaping on 32 bit output *out1 = inputSampleL; *out2 = inputSampleR; @@ -186,9 +135,6 @@ void PurestWarm::processDoubleReplacing(double **inputs, double **outputs, VstIn double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; int polarity = (int) ( A * 1.999 ); @@ -243,103 +189,63 @@ void PurestWarm::processDoubleReplacing(double **inputs, double **outputs, VstIn if (inputSampleL < 0) { inputSampleL = -(sin(-inputSampleL*1.57079634)/1.57079634); - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - } - } else { - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - } + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither } if (inputSampleR < 0) { inputSampleR = -(sin(-inputSampleR*1.57079634)/1.57079634); - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } else { - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - } else { - if (fpFlip) { - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - } else { - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - } + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither } - } else { - if (inputSampleL > 0) { inputSampleL = sin(inputSampleL*1.57079634)/1.57079634; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - } - } else { - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - } else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - } + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither } - if (inputSampleR > 0) { inputSampleR = sin(inputSampleR*1.57079634)/1.57079634; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } else { - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - } else { - if (fpFlip) { - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - } else { - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - } + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither } - } //that's it. Only applies on one half of the waveform, other half is passthrough untouched. - //even the floating point noise shaping to the 32 bit buss is only applied as needed. - - fpFlip = !fpFlip; - //end noise shaping on 64 bit output *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Pyewacket/.vs/VSTProject/v14/.suo b/plugins/WinVST/Pyewacket/.vs/VSTProject/v14/.suo Binary files differindex be9ac10..ac34ff7 100755 --- a/plugins/WinVST/Pyewacket/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Pyewacket/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Pyewacket/Pyewacket.cpp b/plugins/WinVST/Pyewacket/Pyewacket.cpp index ee2db40..d500e74 100755 --- a/plugins/WinVST/Pyewacket/Pyewacket.cpp +++ b/plugins/WinVST/Pyewacket/Pyewacket.cpp @@ -18,11 +18,8 @@ Pyewacket::Pyewacket(audioMasterCallback audioMaster) : chase = 1.0; lastrectifierL = 0.0; lastrectifierR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Pyewacket/Pyewacket.h b/plugins/WinVST/Pyewacket/Pyewacket.h index 593001f..087a198 100755 --- a/plugins/WinVST/Pyewacket/Pyewacket.h +++ b/plugins/WinVST/Pyewacket/Pyewacket.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double chase; double lastrectifierL; diff --git a/plugins/WinVST/Pyewacket/PyewacketProc.cpp b/plugins/WinVST/Pyewacket/PyewacketProc.cpp index 83112a2..8b3021a 100755 --- a/plugins/WinVST/Pyewacket/PyewacketProc.cpp +++ b/plugins/WinVST/Pyewacket/PyewacketProc.cpp @@ -17,9 +17,8 @@ void Pyewacket::processReplacing(float **inputs, float **outputs, VstInt32 sampl double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; + long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; long double drySampleL; @@ -134,25 +133,14 @@ void Pyewacket::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleR *= outputGain; } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -174,9 +162,8 @@ void Pyewacket::processDoubleReplacing(double **inputs, double **outputs, VstInt double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; + long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; long double drySampleL; @@ -291,25 +278,16 @@ void Pyewacket::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleR *= outputGain; } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Righteous4/.vs/VSTProject/v14/.suo b/plugins/WinVST/Righteous4/.vs/VSTProject/v14/.suo Binary files differindex f2ac424..4b43c9e 100755 --- a/plugins/WinVST/Righteous4/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Righteous4/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Righteous4/Righteous4Proc.cpp b/plugins/WinVST/Righteous4/Righteous4Proc.cpp index 7ed44cf..630360f 100755 --- a/plugins/WinVST/Righteous4/Righteous4Proc.cpp +++ b/plugins/WinVST/Righteous4/Righteous4Proc.cpp @@ -300,17 +300,14 @@ void Righteous4::processReplacing(float **inputs, float **outputs, VstInt32 samp //output dither section if (bitDepth == 3) { - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither } else { //entire Naturalize section used when not on 32 bit out @@ -515,12 +512,6 @@ void Righteous4::processReplacing(float **inputs, float **outputs, VstInt32 samp *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Righteous4::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -529,11 +520,11 @@ void Righteous4::processDoubleReplacing(double **inputs, double **outputs, VstIn double* in2 = inputs[1]; double* out1 = outputs[0]; double* out2 = outputs[1]; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); + long double fpOld = 0.618033988749894848204586; //golden ratio! + long double fpNew = 1.0 - fpOld; double IIRscaleback = 0.0002597;//scaleback of harmonic avg IIRscaleback /= overallscale; IIRscaleback = 1.0 - IIRscaleback; @@ -816,17 +807,16 @@ void Righteous4::processDoubleReplacing(double **inputs, double **outputs, VstIn //output dither section if (bitDepth == 3) { - //noise shaping to 32-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither } else { //entire Naturalize section used when not on 32 bit out @@ -1031,10 +1021,4 @@ void Righteous4::processDoubleReplacing(double **inputs, double **outputs, VstIn *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. }
\ No newline at end of file diff --git a/plugins/WinVST/SideDull/.vs/VSTProject/v14/.suo b/plugins/WinVST/SideDull/.vs/VSTProject/v14/.suo Binary files differindex 68a45bd..20df521 100755 --- a/plugins/WinVST/SideDull/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/SideDull/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/SideDull/SideDull.cpp b/plugins/WinVST/SideDull/SideDull.cpp index 547f1fd..479bdfd 100755 --- a/plugins/WinVST/SideDull/SideDull.cpp +++ b/plugins/WinVST/SideDull/SideDull.cpp @@ -16,10 +16,8 @@ SideDull::SideDull(audioMasterCallback audioMaster) : iirSampleA = 0.0; iirSampleB = 0.0; flip = true; - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/SideDull/SideDull.h b/plugins/WinVST/SideDull/SideDull.h index 6f431ac..ef5e892 100755 --- a/plugins/WinVST/SideDull/SideDull.h +++ b/plugins/WinVST/SideDull/SideDull.h @@ -55,10 +55,8 @@ private: double iirSampleA; double iirSampleB; bool flip; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; + long double fpNShapeL; + long double fpNShapeR; float A; }; diff --git a/plugins/WinVST/SideDull/SideDullProc.cpp b/plugins/WinVST/SideDull/SideDullProc.cpp index 347e5e8..7b77744 100755 --- a/plugins/WinVST/SideDull/SideDullProc.cpp +++ b/plugins/WinVST/SideDull/SideDullProc.cpp @@ -17,9 +17,6 @@ void SideDull::processReplacing(float **inputs, float **outputs, VstInt32 sample double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -88,27 +85,14 @@ void SideDull::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -130,9 +114,6 @@ void SideDull::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -201,27 +182,16 @@ void SideDull::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; - //noise shaping to 64-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Sidepass/.vs/VSTProject/v14/.suo b/plugins/WinVST/Sidepass/.vs/VSTProject/v14/.suo Binary files differindex 5aee656..f8060d2 100755 --- a/plugins/WinVST/Sidepass/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Sidepass/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Sidepass/Sidepass.cpp b/plugins/WinVST/Sidepass/Sidepass.cpp index 98f6f3a..a28c212 100755 --- a/plugins/WinVST/Sidepass/Sidepass.cpp +++ b/plugins/WinVST/Sidepass/Sidepass.cpp @@ -16,10 +16,8 @@ Sidepass::Sidepass(audioMasterCallback audioMaster) : iirSampleA = 0.0; iirSampleB = 0.0; flip = true; - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Sidepass/Sidepass.h b/plugins/WinVST/Sidepass/Sidepass.h index 0e496f5..1b31b91 100755 --- a/plugins/WinVST/Sidepass/Sidepass.h +++ b/plugins/WinVST/Sidepass/Sidepass.h @@ -55,10 +55,8 @@ private: double iirSampleA; double iirSampleB; bool flip; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/Sidepass/SidepassProc.cpp b/plugins/WinVST/Sidepass/SidepassProc.cpp index d022df3..834ae3e 100755 --- a/plugins/WinVST/Sidepass/SidepassProc.cpp +++ b/plugins/WinVST/Sidepass/SidepassProc.cpp @@ -17,9 +17,6 @@ void Sidepass::processReplacing(float **inputs, float **outputs, VstInt32 sample double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double iirAmount = pow(A,3)/overallscale; long double inputSampleL; long double inputSampleR; @@ -87,25 +84,14 @@ void Sidepass::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -127,9 +113,6 @@ void Sidepass::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double iirAmount = pow(A,3)/overallscale; long double inputSampleL; long double inputSampleR; @@ -197,25 +180,16 @@ void Sidepass::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; - //noise shaping to 64-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/SingleEndedTriode/.vs/VSTProject/v14/.suo b/plugins/WinVST/SingleEndedTriode/.vs/VSTProject/v14/.suo Binary files differindex 43b7f80..bb9d2da 100755 --- a/plugins/WinVST/SingleEndedTriode/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/SingleEndedTriode/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/SingleEndedTriode/SingleEndedTriodeProc.cpp b/plugins/WinVST/SingleEndedTriode/SingleEndedTriodeProc.cpp index 5781165..ef6694c 100755 --- a/plugins/WinVST/SingleEndedTriode/SingleEndedTriodeProc.cpp +++ b/plugins/WinVST/SingleEndedTriode/SingleEndedTriodeProc.cpp @@ -127,18 +127,14 @@ void SingleEndedTriode::processReplacing(float **inputs, float **outputs, VstInt inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -148,12 +144,6 @@ void SingleEndedTriode::processReplacing(float **inputs, float **outputs, VstInt *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void SingleEndedTriode::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -276,18 +266,16 @@ void SingleEndedTriode::processDoubleReplacing(double **inputs, double **outputs inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -297,10 +285,4 @@ void SingleEndedTriode::processDoubleReplacing(double **inputs, double **outputs *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. }
\ No newline at end of file diff --git a/plugins/WinVST/Slew/.vs/VSTProject/v14/.suo b/plugins/WinVST/Slew/.vs/VSTProject/v14/.suo Binary files differindex 95f3018..8207f2c 100755 --- a/plugins/WinVST/Slew/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Slew/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Slew2/.vs/VSTProject/v14/.suo b/plugins/WinVST/Slew2/.vs/VSTProject/v14/.suo Binary files differindex b0d4c72..24ab216 100755 --- a/plugins/WinVST/Slew2/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Slew2/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/SlewOnly/.vs/VSTProject/v14/.suo b/plugins/WinVST/SlewOnly/.vs/VSTProject/v14/.suo Binary files differindex 19a25dd..1a25a67 100755 --- a/plugins/WinVST/SlewOnly/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/SlewOnly/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Spiral/.vs/VSTProject/v14/.suo b/plugins/WinVST/Spiral/.vs/VSTProject/v14/.suo Binary files differindex 396d743..f9037d1 100755 --- a/plugins/WinVST/Spiral/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Spiral/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Spiral/SpiralProc.cpp b/plugins/WinVST/Spiral/SpiralProc.cpp index d43a93a..4aea5bc 100755 --- a/plugins/WinVST/Spiral/SpiralProc.cpp +++ b/plugins/WinVST/Spiral/SpiralProc.cpp @@ -60,18 +60,14 @@ void Spiral::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr inputSampleL = sin(inputSampleL * fabs(inputSampleL)) / ((inputSampleL == 0.0) ?1:fabs(inputSampleL)); inputSampleR = sin(inputSampleR * fabs(inputSampleR)) / ((inputSampleR == 0.0) ?1:fabs(inputSampleR)); - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -81,12 +77,6 @@ void Spiral::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Spiral::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -142,18 +132,16 @@ void Spiral::processDoubleReplacing(double **inputs, double **outputs, VstInt32 inputSampleL = sin(inputSampleL * fabs(inputSampleL)) / ((inputSampleL == 0.0) ?1:fabs(inputSampleL)); inputSampleR = sin(inputSampleR * fabs(inputSampleR)) / ((inputSampleR == 0.0) ?1:fabs(inputSampleR)); - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -163,10 +151,4 @@ void Spiral::processDoubleReplacing(double **inputs, double **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/WinVST/Spiral2/.vs/VSTProject/v14/.suo b/plugins/WinVST/Spiral2/.vs/VSTProject/v14/.suo Binary files differindex 7779c05..41c371a 100755 --- a/plugins/WinVST/Spiral2/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Spiral2/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Spiral2/Spiral2Proc.cpp b/plugins/WinVST/Spiral2/Spiral2Proc.cpp index d309448..a8669c5 100755 --- a/plugins/WinVST/Spiral2/Spiral2Proc.cpp +++ b/plugins/WinVST/Spiral2/Spiral2Proc.cpp @@ -118,18 +118,14 @@ void Spiral2::processReplacing(float **inputs, float **outputs, VstInt32 sampleF prevSampleR = drySampleR; flip = !flip; - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -139,12 +135,6 @@ void Spiral2::processReplacing(float **inputs, float **outputs, VstInt32 sampleF *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void Spiral2::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -259,18 +249,16 @@ void Spiral2::processDoubleReplacing(double **inputs, double **outputs, VstInt32 prevSampleR = drySampleR; flip = !flip; - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -280,10 +268,4 @@ void Spiral2::processDoubleReplacing(double **inputs, double **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/WinVST/StarChild/.vs/VSTProject/v14/.suo b/plugins/WinVST/StarChild/.vs/VSTProject/v14/.suo Binary files differindex 1c72906..c3b6d23 100755 --- a/plugins/WinVST/StarChild/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/StarChild/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/StarChild/StarChild.cpp b/plugins/WinVST/StarChild/StarChild.cpp index 84becbc..1b29d50 100755 --- a/plugins/WinVST/StarChild/StarChild.cpp +++ b/plugins/WinVST/StarChild/StarChild.cpp @@ -65,11 +65,8 @@ StarChild::StarChild(audioMasterCallback audioMaster) : increment = 1; dutyCycle = 1; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/StarChild/StarChild.h b/plugins/WinVST/StarChild/StarChild.h index 7ae986a..630be3c 100755 --- a/plugins/WinVST/StarChild/StarChild.h +++ b/plugins/WinVST/StarChild/StarChild.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double d[45102]; diff --git a/plugins/WinVST/StarChild/StarChildProc.cpp b/plugins/WinVST/StarChild/StarChildProc.cpp index 03c8e31..047948a 100755 --- a/plugins/WinVST/StarChild/StarChildProc.cpp +++ b/plugins/WinVST/StarChild/StarChildProc.cpp @@ -14,9 +14,6 @@ void StarChild::processReplacing(float **inputs, float **outputs, VstInt32 sampl float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double drySampleL; double drySampleR; @@ -392,25 +389,14 @@ void StarChild::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleR += drySampleR; //here we combine the tanks with the dry signal - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -429,9 +415,6 @@ void StarChild::processDoubleReplacing(double **inputs, double **outputs, VstInt double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double drySampleL; double drySampleR; @@ -807,25 +790,16 @@ void StarChild::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleR += drySampleR; //here we combine the tanks with the dry signal - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/StereoFX/.vs/VSTProject/v14/.suo b/plugins/WinVST/StereoFX/.vs/VSTProject/v14/.suo Binary files differindex 61fb690..3d0e385 100755 --- a/plugins/WinVST/StereoFX/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/StereoFX/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/StereoFX/StereoFX.cpp b/plugins/WinVST/StereoFX/StereoFX.cpp index 63c23db..704cbf3 100755 --- a/plugins/WinVST/StereoFX/StereoFX.cpp +++ b/plugins/WinVST/StereoFX/StereoFX.cpp @@ -17,10 +17,8 @@ StereoFX::StereoFX(audioMasterCallback audioMaster) : C = 0.0; iirSampleA = 0.0; iirSampleB = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; flip = false; //this is reset: values being initialized only once. Startup values, whatever they are. diff --git a/plugins/WinVST/StereoFX/StereoFX.h b/plugins/WinVST/StereoFX/StereoFX.h index 6748d1e..7a36059 100755 --- a/plugins/WinVST/StereoFX/StereoFX.h +++ b/plugins/WinVST/StereoFX/StereoFX.h @@ -56,10 +56,8 @@ private: double iirSampleA; double iirSampleB; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; + long double fpNShapeL; + long double fpNShapeR; bool flip; //default stuff diff --git a/plugins/WinVST/StereoFX/StereoFXProc.cpp b/plugins/WinVST/StereoFX/StereoFXProc.cpp index 49be44f..0e9de74 100755 --- a/plugins/WinVST/StereoFX/StereoFXProc.cpp +++ b/plugins/WinVST/StereoFX/StereoFXProc.cpp @@ -17,9 +17,6 @@ void StereoFX::processReplacing(float **inputs, float **outputs, VstInt32 sample double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; long double mid; @@ -138,25 +135,14 @@ void StereoFX::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -178,9 +164,6 @@ void StereoFX::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; long double mid; @@ -299,25 +282,16 @@ void StereoFX::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; - //noise shaping to 64-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - flip = !flip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/SubsOnly/.vs/VSTProject/v14/.suo b/plugins/WinVST/SubsOnly/.vs/VSTProject/v14/.suo Binary files differindex 62beaf4..048e45d 100755 --- a/plugins/WinVST/SubsOnly/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/SubsOnly/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Surge/.vs/VSTProject/v14/.suo b/plugins/WinVST/Surge/.vs/VSTProject/v14/.suo Binary files differindex 03e6045..5bdfe99 100755 --- a/plugins/WinVST/Surge/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Surge/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Surge/Surge.cpp b/plugins/WinVST/Surge/Surge.cpp index 711c0df..222fbcf 100755 --- a/plugins/WinVST/Surge/Surge.cpp +++ b/plugins/WinVST/Surge/Surge.cpp @@ -12,10 +12,8 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new S Surge::Surge(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, kNumPrograms, kNumParameters) { - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; flip = true; chaseA = 0.0; chaseB = 0.0; diff --git a/plugins/WinVST/Surge/Surge.h b/plugins/WinVST/Surge/Surge.h index 0e485c3..7f42c9f 100755 --- a/plugins/WinVST/Surge/Surge.h +++ b/plugins/WinVST/Surge/Surge.h @@ -53,10 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; + long double fpNShapeL; + long double fpNShapeR; bool flip; long double chaseA; long double chaseB; diff --git a/plugins/WinVST/Surge/SurgeProc.cpp b/plugins/WinVST/Surge/SurgeProc.cpp index 7a72b2f..cd82bad 100755 --- a/plugins/WinVST/Surge/SurgeProc.cpp +++ b/plugins/WinVST/Surge/SurgeProc.cpp @@ -17,9 +17,6 @@ void Surge::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -120,27 +117,14 @@ void Surge::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra inputSampleR = drySampleR - (inputSampleR * intensity); inputSampleR = (drySampleR * dry) + (inputSampleR * wet); - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -162,9 +146,6 @@ void Surge::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -264,27 +245,16 @@ void Surge::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s inputSampleR = drySampleR - (inputSampleR * intensity); inputSampleR = (drySampleR * dry) + (inputSampleR * wet); - //noise shaping to 64-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/SurgeTide/.vs/VSTProject/v14/.suo b/plugins/WinVST/SurgeTide/.vs/VSTProject/v14/.suo Binary files differindex 17702f9..c4b7709 100755 --- a/plugins/WinVST/SurgeTide/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/SurgeTide/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/SurgeTide/SurgeTide.cpp b/plugins/WinVST/SurgeTide/SurgeTide.cpp index 8df46c0..494e886 100755 --- a/plugins/WinVST/SurgeTide/SurgeTide.cpp +++ b/plugins/WinVST/SurgeTide/SurgeTide.cpp @@ -15,10 +15,8 @@ SurgeTide::SurgeTide(audioMasterCallback audioMaster) : A = 0.5; B = 0.3; C = 1.0; - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; flip = true; chaseA = 0.0; chaseB = 0.0; diff --git a/plugins/WinVST/SurgeTide/SurgeTide.h b/plugins/WinVST/SurgeTide/SurgeTide.h index 27495d7..8f8cd42 100755 --- a/plugins/WinVST/SurgeTide/SurgeTide.h +++ b/plugins/WinVST/SurgeTide/SurgeTide.h @@ -54,10 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; + long double fpNShapeL; + long double fpNShapeR; bool flip; long double chaseA; long double chaseB; diff --git a/plugins/WinVST/SurgeTide/SurgeTideProc.cpp b/plugins/WinVST/SurgeTide/SurgeTideProc.cpp index 2fc6a1a..59a92aa 100755 --- a/plugins/WinVST/SurgeTide/SurgeTideProc.cpp +++ b/plugins/WinVST/SurgeTide/SurgeTideProc.cpp @@ -17,9 +17,6 @@ void SurgeTide::processReplacing(float **inputs, float **outputs, VstInt32 sampl double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -110,27 +107,14 @@ void SurgeTide::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleR = drySampleR - (inputSampleR * intensity); inputSampleR = (drySampleR * dry) + (inputSampleR * wet); - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -152,9 +136,6 @@ void SurgeTide::processDoubleReplacing(double **inputs, double **outputs, VstInt double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -245,27 +226,16 @@ void SurgeTide::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleR = drySampleR - (inputSampleR * intensity); inputSampleR = (drySampleR * dry) + (inputSampleR * wet); - //noise shaping to 64-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Swell/.vs/VSTProject/v14/.suo b/plugins/WinVST/Swell/.vs/VSTProject/v14/.suo Binary files differindex f1f16de..3124884 100755 --- a/plugins/WinVST/Swell/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Swell/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Swell/Swell.cpp b/plugins/WinVST/Swell/Swell.cpp index 30518d8..e197cfb 100755 --- a/plugins/WinVST/Swell/Swell.cpp +++ b/plugins/WinVST/Swell/Swell.cpp @@ -21,11 +21,8 @@ Swell::Swell(audioMasterCallback audioMaster) : louderL = false; louderR = false; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Swell/Swell.h b/plugins/WinVST/Swell/Swell.h index c383df2..7c108b7 100755 --- a/plugins/WinVST/Swell/Swell.h +++ b/plugins/WinVST/Swell/Swell.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff diff --git a/plugins/WinVST/Swell/SwellProc.cpp b/plugins/WinVST/Swell/SwellProc.cpp index 28c0aba..3ab1e9b 100755 --- a/plugins/WinVST/Swell/SwellProc.cpp +++ b/plugins/WinVST/Swell/SwellProc.cpp @@ -17,9 +17,6 @@ void Swell::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double thresholdOn = pow(A,2) * B; double speedOn = (pow(B,2)*0.001)/overallscale; @@ -97,25 +94,14 @@ void Swell::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -137,9 +123,6 @@ void Swell::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double thresholdOn = pow(A,2) * B; double speedOn = (pow(B,2)*0.001)/overallscale; @@ -217,25 +200,16 @@ void Swell::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/TapeDelay/.vs/VSTProject/v14/.suo b/plugins/WinVST/TapeDelay/.vs/VSTProject/v14/.suo Binary files differindex 0fe2d39..9acad64 100755 --- a/plugins/WinVST/TapeDelay/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/TapeDelay/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/TapeDelay/TapeDelayProc.cpp b/plugins/WinVST/TapeDelay/TapeDelayProc.cpp index 43fa743..e2f1ade 100755 --- a/plugins/WinVST/TapeDelay/TapeDelayProc.cpp +++ b/plugins/WinVST/TapeDelay/TapeDelayProc.cpp @@ -156,18 +156,14 @@ void TapeDelay::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleL = (inputSampleL * dry) + (dL[delay] * wet); inputSampleR = (inputSampleR * dry) + (dR[delay] * wet); - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -177,12 +173,6 @@ void TapeDelay::processReplacing(float **inputs, float **outputs, VstInt32 sampl *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void TapeDelay::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -333,18 +323,16 @@ void TapeDelay::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleL = (inputSampleL * dry) + (dL[delay] * wet); inputSampleR = (inputSampleR * dry) + (dR[delay] * wet); - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -354,10 +342,4 @@ void TapeDelay::processDoubleReplacing(double **inputs, double **outputs, VstInt *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/WinVST/TapeDust/.vs/VSTProject/v14/.suo b/plugins/WinVST/TapeDust/.vs/VSTProject/v14/.suo Binary files differindex df95641..26bc0ab 100755 --- a/plugins/WinVST/TapeDust/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/TapeDust/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/TapeDust/TapeDust.cpp b/plugins/WinVST/TapeDust/TapeDust.cpp index 9638c14..0ce16e0 100755 --- a/plugins/WinVST/TapeDust/TapeDust.cpp +++ b/plugins/WinVST/TapeDust/TapeDust.cpp @@ -22,10 +22,8 @@ TapeDust::TapeDust(audioMasterCallback audioMaster) : fR[count] = 0.0; } - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; fpFlip = true; //this is reset: values being initialized only once. Startup values, whatever they are. diff --git a/plugins/WinVST/TapeDust/TapeDust.h b/plugins/WinVST/TapeDust/TapeDust.h index 7b3a7fd..facbf40 100755 --- a/plugins/WinVST/TapeDust/TapeDust.h +++ b/plugins/WinVST/TapeDust/TapeDust.h @@ -53,10 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; + long double fpNShapeL; + long double fpNShapeR; bool fpFlip; //default stuff diff --git a/plugins/WinVST/TapeDust/TapeDustProc.cpp b/plugins/WinVST/TapeDust/TapeDustProc.cpp index 3d6588d..429a366 100755 --- a/plugins/WinVST/TapeDust/TapeDustProc.cpp +++ b/plugins/WinVST/TapeDust/TapeDustProc.cpp @@ -13,9 +13,6 @@ void TapeDust::processReplacing(float **inputs, float **outputs, VstInt32 sample float* in2 = inputs[1]; float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -93,6 +90,7 @@ void TapeDust::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleL = -inputSampleL; inputSampleR = -inputSampleR; } + fpFlip = !fpFlip; for(int count = 0; count < 9; count++) { if (gainL > 1.0) { @@ -120,25 +118,14 @@ void TapeDust::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -156,9 +143,6 @@ void TapeDust::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double* in2 = inputs[1]; double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -236,6 +220,7 @@ void TapeDust::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleL = -inputSampleL; inputSampleR = -inputSampleR; } + fpFlip = !fpFlip; for(int count = 0; count < 9; count++) { if (gainL > 1.0) { @@ -263,25 +248,16 @@ void TapeDust::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/TapeFat/.vs/VSTProject/v14/.suo b/plugins/WinVST/TapeFat/.vs/VSTProject/v14/.suo Binary files differindex e41410c..39f1ea5 100755 --- a/plugins/WinVST/TapeFat/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/TapeFat/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/TapeFat/TapeFatProc.cpp b/plugins/WinVST/TapeFat/TapeFatProc.cpp index 3f81d20..8eb0e98 100755 --- a/plugins/WinVST/TapeFat/TapeFatProc.cpp +++ b/plugins/WinVST/TapeFat/TapeFatProc.cpp @@ -119,18 +119,14 @@ void TapeFat::processReplacing(float **inputs, float **outputs, VstInt32 sampleF gcount--; - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -140,12 +136,6 @@ void TapeFat::processReplacing(float **inputs, float **outputs, VstInt32 sampleF *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void TapeFat::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -260,18 +250,16 @@ void TapeFat::processDoubleReplacing(double **inputs, double **outputs, VstInt32 gcount--; - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -281,10 +269,4 @@ void TapeFat::processDoubleReplacing(double **inputs, double **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/WinVST/Thunder/.vs/VSTProject/v14/.suo b/plugins/WinVST/Thunder/.vs/VSTProject/v14/.suo Binary files differindex b01488d..a6a6a16 100755 --- a/plugins/WinVST/Thunder/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Thunder/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Thunder/Thunder.cpp b/plugins/WinVST/Thunder/Thunder.cpp index 015eabd..7bc8226 100755 --- a/plugins/WinVST/Thunder/Thunder.cpp +++ b/plugins/WinVST/Thunder/Thunder.cpp @@ -15,10 +15,8 @@ Thunder::Thunder(audioMasterCallback audioMaster) : A = 0.0; B = 1.0; - fpNShapeAL = 0.0; - fpNShapeBL = 0.0; - fpNShapeAR = 0.0; - fpNShapeBR = 0.0; + fpNShapeL = 0.0; + fpNShapeR = 0.0; muSpeedA = 10000; muSpeedB = 10000; muCoefficientA = 1; diff --git a/plugins/WinVST/Thunder/Thunder.h b/plugins/WinVST/Thunder/Thunder.h index 1ef1d03..9e49054 100755 --- a/plugins/WinVST/Thunder/Thunder.h +++ b/plugins/WinVST/Thunder/Thunder.h @@ -69,10 +69,8 @@ private: double iirSampleAM; double iirSampleBM; double iirSampleCM; - long double fpNShapeAL; - long double fpNShapeBL; - long double fpNShapeAR; - long double fpNShapeBR; + long double fpNShapeL; + long double fpNShapeR; bool flip; float A; diff --git a/plugins/WinVST/Thunder/ThunderProc.cpp b/plugins/WinVST/Thunder/ThunderProc.cpp index bd401d4..2cf454d 100755 --- a/plugins/WinVST/Thunder/ThunderProc.cpp +++ b/plugins/WinVST/Thunder/ThunderProc.cpp @@ -40,9 +40,6 @@ void Thunder::processReplacing(float **inputs, float **outputs, VstInt32 sampleF double resultML; double resultMR; - float fpTemp; - double fpOld = 0.618033988749894848204586; //golden ratio! - double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -225,27 +222,14 @@ void Thunder::processReplacing(float **inputs, float **outputs, VstInt32 sampleF inputSampleR *= outputGain; } - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; @@ -291,9 +275,6 @@ void Thunder::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double resultML; double resultMR; - double fpTemp; - double fpOld = 0.618033988749894848204586; //golden ratio! - double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -476,27 +457,16 @@ void Thunder::processDoubleReplacing(double **inputs, double **outputs, VstInt32 inputSampleR *= outputGain; } - //noise shaping to 32-bit floating point - if (flip) { - fpTemp = inputSampleL; - fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeAL; - - fpTemp = inputSampleR; - fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeAR; - } - else { - fpTemp = inputSampleL; - fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeBL; - - fpTemp = inputSampleR; - fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeBR; - } - flip = !flip; - //end noise shaping on 32 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; diff --git a/plugins/WinVST/ToTape5/.vs/VSTProject/v14/.suo b/plugins/WinVST/ToTape5/.vs/VSTProject/v14/.suo Binary files differindex b0c4487..f15fde2 100755 --- a/plugins/WinVST/ToTape5/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/ToTape5/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/ToTape5/ToTape5.cpp b/plugins/WinVST/ToTape5/ToTape5.cpp index 01f61cb..6136aaf 100755 --- a/plugins/WinVST/ToTape5/ToTape5.cpp +++ b/plugins/WinVST/ToTape5/ToTape5.cpp @@ -98,11 +98,8 @@ ToTape5::ToTape5(audioMasterCallback audioMaster) : hcount = 0; flip = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/ToTape5/ToTape5.h b/plugins/WinVST/ToTape5/ToTape5.h index ac26df5..d049014 100755 --- a/plugins/WinVST/ToTape5/ToTape5.h +++ b/plugins/WinVST/ToTape5/ToTape5.h @@ -140,11 +140,8 @@ private: double iirSampleZR; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/ToTape5/ToTape5Proc.cpp b/plugins/WinVST/ToTape5/ToTape5Proc.cpp index 4d2d5c7..5824f80 100755 --- a/plugins/WinVST/ToTape5/ToTape5Proc.cpp +++ b/plugins/WinVST/ToTape5/ToTape5Proc.cpp @@ -17,7 +17,7 @@ void ToTape5::processReplacing(float **inputs, float **outputs, VstInt32 sampleF double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - + long double fpOld = 0.618033988749894848204586; //golden ratio! double inputgain = pow(A+1.0,3); double outputgain = E; double wet = F; @@ -63,9 +63,6 @@ void ToTape5::processReplacing(float **inputs, float **outputs, VstInt32 sampleF double tempSampleR; double drySampleR; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -358,25 +355,14 @@ void ToTape5::processReplacing(float **inputs, float **outputs, VstInt32 sampleF inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -398,7 +384,7 @@ void ToTape5::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - + long double fpOld = 0.618033988749894848204586; //golden ratio! double inputgain = pow(A+1.0,3); double outputgain = E; double wet = F; @@ -443,10 +429,6 @@ void ToTape5::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double bridgerectifierR; double tempSampleR; double drySampleR; - - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -738,25 +720,16 @@ void ToTape5::processDoubleReplacing(double **inputs, double **outputs, VstInt32 inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/ToVinyl4/.vs/VSTProject/v14/.suo b/plugins/WinVST/ToVinyl4/.vs/VSTProject/v14/.suo Binary files differindex 33b5837..2369dee 100755 --- a/plugins/WinVST/ToVinyl4/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/ToVinyl4/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/ToVinyl4/ToVinyl4.cpp b/plugins/WinVST/ToVinyl4/ToVinyl4.cpp index b0c91f8..429187c 100755 --- a/plugins/WinVST/ToVinyl4/ToVinyl4.cpp +++ b/plugins/WinVST/ToVinyl4/ToVinyl4.cpp @@ -87,11 +87,8 @@ ToVinyl4::ToVinyl4(audioMasterCallback audioMaster) : B = 0.3424051; //44.0 hz = ((B*B)*290)+10 (B*B)*290 = 34 (B*B) = 0.1172413 sqrt() = 0.3424051 C = 0.32; D = 0.064; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/ToVinyl4/ToVinyl4.h b/plugins/WinVST/ToVinyl4/ToVinyl4.h index 57bffac..6a2dc26 100755 --- a/plugins/WinVST/ToVinyl4/ToVinyl4.h +++ b/plugins/WinVST/ToVinyl4/ToVinyl4.h @@ -142,11 +142,8 @@ private: double bMidPrev; double bSidePrev; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/ToVinyl4/ToVinyl4Proc.cpp b/plugins/WinVST/ToVinyl4/ToVinyl4Proc.cpp index 8d9dc0c..a67af99 100755 --- a/plugins/WinVST/ToVinyl4/ToVinyl4Proc.cpp +++ b/plugins/WinVST/ToVinyl4/ToVinyl4Proc.cpp @@ -17,9 +17,6 @@ void ToVinyl4::processReplacing(float **inputs, float **outputs, VstInt32 sample double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double fusswithscale = 50000; //corrected double cutofffreq = ((A*A)*290.0)+10.0; @@ -464,25 +461,14 @@ void ToVinyl4::processReplacing(float **inputs, float **outputs, VstInt32 sample inputSampleR = accumulatorSample; //we just re-use accumulatorSample to do this little shuffle - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -504,9 +490,6 @@ void ToVinyl4::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double fusswithscale = 50000; //corrected double cutofffreq = ((A*A)*290.0)+10.0; @@ -950,25 +933,16 @@ void ToVinyl4::processDoubleReplacing(double **inputs, double **outputs, VstInt3 inputSampleR = accumulatorSample; //we just re-use accumulatorSample to do this little shuffle - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/ToneSlant/.vs/VSTProject/v14/.suo b/plugins/WinVST/ToneSlant/.vs/VSTProject/v14/.suo Binary files differindex b31a1bb..4d673ae 100755 --- a/plugins/WinVST/ToneSlant/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/ToneSlant/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/ToneSlant/ToneSlant.cpp b/plugins/WinVST/ToneSlant/ToneSlant.cpp index 0ed3618..d99fa60 100755 --- a/plugins/WinVST/ToneSlant/ToneSlant.cpp +++ b/plugins/WinVST/ToneSlant/ToneSlant.cpp @@ -15,11 +15,8 @@ ToneSlant::ToneSlant(audioMasterCallback audioMaster) : A = 0.0; B = 0.0; for(int count = 0; count < 102; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;} - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/ToneSlant/ToneSlant.h b/plugins/WinVST/ToneSlant/ToneSlant.h index 655cc55..7c52bca 100755 --- a/plugins/WinVST/ToneSlant/ToneSlant.h +++ b/plugins/WinVST/ToneSlant/ToneSlant.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/ToneSlant/ToneSlantProc.cpp b/plugins/WinVST/ToneSlant/ToneSlantProc.cpp index b594b05..d78cfb5 100755 --- a/plugins/WinVST/ToneSlant/ToneSlantProc.cpp +++ b/plugins/WinVST/ToneSlant/ToneSlantProc.cpp @@ -14,9 +14,6 @@ void ToneSlant::processReplacing(float **inputs, float **outputs, VstInt32 sampl float* out1 = outputs[0]; float* out2 = outputs[1]; - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputSampleL; double inputSampleR; @@ -109,25 +106,14 @@ void ToneSlant::processReplacing(float **inputs, float **outputs, VstInt32 sampl inputSampleR += (correctionSampleR * applySlant); //our one math operation on the input data coming in - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -146,9 +132,6 @@ void ToneSlant::processDoubleReplacing(double **inputs, double **outputs, VstInt double* out1 = outputs[0]; double* out2 = outputs[1]; - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double inputSampleL; double inputSampleR; @@ -240,25 +223,16 @@ void ToneSlant::processDoubleReplacing(double **inputs, double **outputs, VstInt inputSampleR += (correctionSampleR * applySlant); //our one math operation on the input data coming in - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/TransDesk/.vs/VSTProject/v14/.suo b/plugins/WinVST/TransDesk/.vs/VSTProject/v14/.suo Binary files differindex 1e5676d..831f593 100755 --- a/plugins/WinVST/TransDesk/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/TransDesk/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/TransDesk/TransDesk.cpp b/plugins/WinVST/TransDesk/TransDesk.cpp index 24443bd..3f352f7 100755 --- a/plugins/WinVST/TransDesk/TransDesk.cpp +++ b/plugins/WinVST/TransDesk/TransDesk.cpp @@ -25,11 +25,8 @@ TransDesk::TransDesk(audioMasterCallback audioMaster) : lastOutSampleR = 0.0; lastSlewR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/TransDesk/TransDesk.h b/plugins/WinVST/TransDesk/TransDesk.h index b3b891d..5729b4c 100755 --- a/plugins/WinVST/TransDesk/TransDesk.h +++ b/plugins/WinVST/TransDesk/TransDesk.h @@ -51,11 +51,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff int gcount; diff --git a/plugins/WinVST/TransDesk/TransDeskProc.cpp b/plugins/WinVST/TransDesk/TransDeskProc.cpp index c7df5e8..c8b45c2 100755 --- a/plugins/WinVST/TransDesk/TransDeskProc.cpp +++ b/plugins/WinVST/TransDesk/TransDeskProc.cpp @@ -17,9 +17,6 @@ void TransDesk::processReplacing(float **inputs, float **outputs, VstInt32 sampl double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double intensity = 0.02198359; double depthA = 3.0; @@ -200,25 +197,14 @@ void TransDesk::processReplacing(float **inputs, float **outputs, VstInt32 sampl gcount--; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -240,9 +226,6 @@ void TransDesk::processDoubleReplacing(double **inputs, double **outputs, VstInt double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double intensity = 0.02198359; double depthA = 3.0; @@ -423,25 +406,16 @@ void TransDesk::processDoubleReplacing(double **inputs, double **outputs, VstInt gcount--; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/Tremolo/.vs/VSTProject/v14/.suo b/plugins/WinVST/Tremolo/.vs/VSTProject/v14/.suo Binary files differindex 9d04545..5806490 100755 --- a/plugins/WinVST/Tremolo/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Tremolo/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Tremolo/Tremolo.cpp b/plugins/WinVST/Tremolo/Tremolo.cpp index be5d06d..f0b649d 100755 --- a/plugins/WinVST/Tremolo/Tremolo.cpp +++ b/plugins/WinVST/Tremolo/Tremolo.cpp @@ -21,11 +21,8 @@ Tremolo::Tremolo(audioMasterCallback audioMaster) : depthAmount = 0.0; lastSpeed = 1000.0; lastDepth = 1000.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Tremolo/Tremolo.h b/plugins/WinVST/Tremolo/Tremolo.h index ea40aa6..11fc718 100755 --- a/plugins/WinVST/Tremolo/Tremolo.h +++ b/plugins/WinVST/Tremolo/Tremolo.h @@ -53,11 +53,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double sweep; diff --git a/plugins/WinVST/Tremolo/TremoloProc.cpp b/plugins/WinVST/Tremolo/TremoloProc.cpp index d0de7cc..d27dc86 100755 --- a/plugins/WinVST/Tremolo/TremoloProc.cpp +++ b/plugins/WinVST/Tremolo/TremoloProc.cpp @@ -17,9 +17,6 @@ void Tremolo::processReplacing(float **inputs, float **outputs, VstInt32 sampleF double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; speedChase = pow(A,4); depthChase = B; @@ -151,25 +148,14 @@ void Tremolo::processReplacing(float **inputs, float **outputs, VstInt32 sampleF inputSampleR = (drySampleR * (1-depth)) + (inputSampleR*depth); //end R - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -191,9 +177,6 @@ void Tremolo::processDoubleReplacing(double **inputs, double **outputs, VstInt32 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; speedChase = pow(A,4); depthChase = B; @@ -326,25 +309,16 @@ void Tremolo::processDoubleReplacing(double **inputs, double **outputs, VstInt32 inputSampleR = (drySampleR * (1-depth)) + (inputSampleR*depth); //end R - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/TubeDesk/.vs/VSTProject/v14/.suo b/plugins/WinVST/TubeDesk/.vs/VSTProject/v14/.suo Binary files differindex 318d2bc..7d02701 100755 --- a/plugins/WinVST/TubeDesk/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/TubeDesk/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/TubeDesk/TubeDesk.cpp b/plugins/WinVST/TubeDesk/TubeDesk.cpp index fc4bd75..5a7465c 100755 --- a/plugins/WinVST/TubeDesk/TubeDesk.cpp +++ b/plugins/WinVST/TubeDesk/TubeDesk.cpp @@ -25,11 +25,8 @@ TubeDesk::TubeDesk(audioMasterCallback audioMaster) : lastOutSampleR = 0.0; lastSlewR = 0.0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/TubeDesk/TubeDesk.h b/plugins/WinVST/TubeDesk/TubeDesk.h index b41b283..fb15768 100755 --- a/plugins/WinVST/TubeDesk/TubeDesk.h +++ b/plugins/WinVST/TubeDesk/TubeDesk.h @@ -51,11 +51,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff int gcount; diff --git a/plugins/WinVST/TubeDesk/TubeDeskProc.cpp b/plugins/WinVST/TubeDesk/TubeDeskProc.cpp index 2636076..cccf6e2 100755 --- a/plugins/WinVST/TubeDesk/TubeDeskProc.cpp +++ b/plugins/WinVST/TubeDesk/TubeDeskProc.cpp @@ -17,9 +17,6 @@ void TubeDesk::processReplacing(float **inputs, float **outputs, VstInt32 sample double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double intensity = 0.4384938; double depthA = 549.0; @@ -199,25 +196,14 @@ void TubeDesk::processReplacing(float **inputs, float **outputs, VstInt32 sample gcount--; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -239,9 +225,6 @@ void TubeDesk::processDoubleReplacing(double **inputs, double **outputs, VstInt3 double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; //this is different from singlereplacing - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; double intensity = 0.4384938; double depthA = 549.0; @@ -421,25 +404,16 @@ void TubeDesk::processDoubleReplacing(double **inputs, double **outputs, VstInt3 gcount--; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/UnBox/.vs/VSTProject/v14/.suo b/plugins/WinVST/UnBox/.vs/VSTProject/v14/.suo Binary files differindex b96b3ed..a8edae0 100755 --- a/plugins/WinVST/UnBox/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/UnBox/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/UnBox/UnBoxProc.cpp b/plugins/WinVST/UnBox/UnBoxProc.cpp index 12133dc..3cb3aab 100755 --- a/plugins/WinVST/UnBox/UnBoxProc.cpp +++ b/plugins/WinVST/UnBox/UnBoxProc.cpp @@ -218,18 +218,14 @@ void UnBox::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra if (output != 1.0) {inputSampleL *= output; inputSampleR *= output;} - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -239,12 +235,6 @@ void UnBox::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void UnBox::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -458,18 +448,16 @@ void UnBox::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s if (output != 1.0) {inputSampleL *= output; inputSampleR *= output;} - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -479,10 +467,4 @@ void UnBox::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/WinVST/VariMu/.vs/VSTProject/v14/.suo b/plugins/WinVST/VariMu/.vs/VSTProject/v14/.suo Binary files differindex 408eef5..a15cfa9 100755 --- a/plugins/WinVST/VariMu/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/VariMu/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/VariMu/VariMuProc.cpp b/plugins/WinVST/VariMu/VariMuProc.cpp index b966cd8..323b5e4 100755 --- a/plugins/WinVST/VariMu/VariMuProc.cpp +++ b/plugins/WinVST/VariMu/VariMuProc.cpp @@ -233,18 +233,14 @@ void VariMu::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -254,12 +250,6 @@ void VariMu::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void VariMu::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -488,18 +478,16 @@ void VariMu::processDoubleReplacing(double **inputs, double **outputs, VstInt32 //nice little output stage template: if we have another scale of floating point //number, we really don't want to meaninglessly multiply that by 1.0. - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -509,10 +497,4 @@ void VariMu::processDoubleReplacing(double **inputs, double **outputs, VstInt32 *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/WinVST/VoiceOfTheStarship/.vs/Console4Channel64/v14/.suo b/plugins/WinVST/VoiceOfTheStarship/.vs/Console4Channel64/v14/.suo Binary files differindex 777b846..777b846 100644..100755 --- a/plugins/WinVST/VoiceOfTheStarship/.vs/Console4Channel64/v14/.suo +++ b/plugins/WinVST/VoiceOfTheStarship/.vs/Console4Channel64/v14/.suo diff --git a/plugins/WinVST/VoiceOfTheStarship/.vs/VSTProject/v14/.suo b/plugins/WinVST/VoiceOfTheStarship/.vs/VSTProject/v14/.suo Binary files differindex 29e8736..f4a0cef 100644..100755 --- a/plugins/WinVST/VoiceOfTheStarship/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/VoiceOfTheStarship/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/VoiceOfTheStarship/VSTProject.sln b/plugins/WinVST/VoiceOfTheStarship/VSTProject.sln index 694b424..694b424 100644..100755 --- a/plugins/WinVST/VoiceOfTheStarship/VSTProject.sln +++ b/plugins/WinVST/VoiceOfTheStarship/VSTProject.sln diff --git a/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj b/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj index a7192f5..a7192f5 100644..100755 --- a/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj +++ b/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj diff --git a/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj.filters b/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj.filters index 56f5e91..56f5e91 100644..100755 --- a/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj.filters +++ b/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj.filters diff --git a/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj.user b/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj.user index 2216267..2216267 100644..100755 --- a/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj.user +++ b/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj.user diff --git a/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarship.cpp b/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarship.cpp index c30bd47..19f1d94 100644..100755 --- a/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarship.cpp +++ b/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarship.cpp @@ -28,11 +28,8 @@ VoiceOfTheStarship::VoiceOfTheStarship(audioMasterCallback audioMaster) : for(int count = 0; count < 11; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;} lastAlgorithm = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarship.h b/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarship.h index febb344..519923b 100644..100755 --- a/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarship.h +++ b/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarship.h @@ -73,11 +73,8 @@ private: int lastAlgorithm; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff float A; diff --git a/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarshipProc.cpp b/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarshipProc.cpp index 32979d0..bbb14fa 100644..100755 --- a/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarshipProc.cpp +++ b/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarshipProc.cpp @@ -79,9 +79,6 @@ void VoiceOfTheStarship::processReplacing(float **inputs, float **outputs, VstIn double inputSampleL; double inputSampleR; - float fpTemp; - double fpOld = 0.618033988749894848204586; //golden ratio! - double fpNew = 1.0 - fpOld; while (--sampleFrames >= 0) { @@ -181,25 +178,14 @@ void VoiceOfTheStarship::processReplacing(float **inputs, float **outputs, VstIn filterflip = !filterflip; - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -283,9 +269,6 @@ void VoiceOfTheStarship::processDoubleReplacing(double **inputs, double **output double inputSampleL; double inputSampleR; - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; while (--sampleFrames >= 0) { @@ -384,25 +367,16 @@ void VoiceOfTheStarship::processDoubleReplacing(double **inputs, double **output flipR = !flipR; filterflip = !filterflip; - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/VoiceOfTheStarship/vstplug.def b/plugins/WinVST/VoiceOfTheStarship/vstplug.def index 5bf499a..5bf499a 100644..100755 --- a/plugins/WinVST/VoiceOfTheStarship/vstplug.def +++ b/plugins/WinVST/VoiceOfTheStarship/vstplug.def diff --git a/plugins/WinVST/Wider/.vs/VSTProject/v14/.suo b/plugins/WinVST/Wider/.vs/VSTProject/v14/.suo Binary files differindex 6a45209..d5f3d7e 100755 --- a/plugins/WinVST/Wider/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/Wider/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/Wider/Wider.cpp b/plugins/WinVST/Wider/Wider.cpp index c1e57d0..26d4d47 100755 --- a/plugins/WinVST/Wider/Wider.cpp +++ b/plugins/WinVST/Wider/Wider.cpp @@ -17,11 +17,8 @@ Wider::Wider(audioMasterCallback audioMaster) : C = 1.0; for(int fcount = 0; fcount < 4098; fcount++) {p[fcount] = 0.0;} count = 0; - fpNShapeLA = 0.0; - fpNShapeLB = 0.0; - fpNShapeRA = 0.0; - fpNShapeRB = 0.0; - fpFlip = true; + fpNShapeL = 0.0; + fpNShapeR = 0.0; //this is reset: values being initialized only once. Startup values, whatever they are. _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. diff --git a/plugins/WinVST/Wider/Wider.h b/plugins/WinVST/Wider/Wider.h index 8b04cfb..6a6a2df 100755 --- a/plugins/WinVST/Wider/Wider.h +++ b/plugins/WinVST/Wider/Wider.h @@ -54,11 +54,8 @@ private: char _programName[kVstMaxProgNameLen + 1]; std::set< std::string > _canDo; - long double fpNShapeLA; - long double fpNShapeLB; - long double fpNShapeRA; - long double fpNShapeRB; - bool fpFlip; + long double fpNShapeL; + long double fpNShapeR; //default stuff double p[4099]; diff --git a/plugins/WinVST/Wider/WiderProc.cpp b/plugins/WinVST/Wider/WiderProc.cpp index 618e651..f90fa21 100755 --- a/plugins/WinVST/Wider/WiderProc.cpp +++ b/plugins/WinVST/Wider/WiderProc.cpp @@ -17,9 +17,6 @@ void Wider::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - float fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -141,25 +138,14 @@ void Wider::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra inputSampleL = (drySampleL * dry) + ((mid+side) * wet); inputSampleR = (drySampleR * dry) + ((mid-side) * wet); - //noise shaping to 32-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -181,9 +167,6 @@ void Wider::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s double overallscale = 1.0; overallscale /= 44100.0; overallscale *= getSampleRate(); - double fpTemp; - long double fpOld = 0.618033988749894848204586; //golden ratio! - long double fpNew = 1.0 - fpOld; long double inputSampleL; long double inputSampleR; @@ -305,25 +288,16 @@ void Wider::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s inputSampleL = (drySampleL * dry) + ((mid+side) * wet); inputSampleR = (drySampleR * dry) + ((mid-side) * wet); - //noise shaping to 64-bit floating point - if (fpFlip) { - fpTemp = inputSampleL; - fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLA; - fpTemp = inputSampleR; - fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRA; - } - else { - fpTemp = inputSampleL; - fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew); - inputSampleL += fpNShapeLB; - fpTemp = inputSampleR; - fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew); - inputSampleR += fpNShapeRB; - } - fpFlip = !fpFlip; - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; diff --git a/plugins/WinVST/uLawDecode/.vs/VSTProject/v14/.suo b/plugins/WinVST/uLawDecode/.vs/VSTProject/v14/.suo Binary files differindex 4259e19..28c1f4a 100755 --- a/plugins/WinVST/uLawDecode/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/uLawDecode/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/uLawDecode/uLawDecodeProc.cpp b/plugins/WinVST/uLawDecode/uLawDecodeProc.cpp index a78b3c2..1835623 100755 --- a/plugins/WinVST/uLawDecode/uLawDecodeProc.cpp +++ b/plugins/WinVST/uLawDecode/uLawDecodeProc.cpp @@ -88,18 +88,14 @@ void uLawDecode::processReplacing(float **inputs, float **outputs, VstInt32 samp inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -109,12 +105,6 @@ void uLawDecode::processReplacing(float **inputs, float **outputs, VstInt32 samp *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void uLawDecode::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -198,18 +188,16 @@ void uLawDecode::processDoubleReplacing(double **inputs, double **outputs, VstIn inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -219,10 +207,4 @@ void uLawDecode::processDoubleReplacing(double **inputs, double **outputs, VstIn *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } diff --git a/plugins/WinVST/uLawEncode/.vs/VSTProject/v14/.suo b/plugins/WinVST/uLawEncode/.vs/VSTProject/v14/.suo Binary files differindex c50088b..4c66819 100755 --- a/plugins/WinVST/uLawEncode/.vs/VSTProject/v14/.suo +++ b/plugins/WinVST/uLawEncode/.vs/VSTProject/v14/.suo diff --git a/plugins/WinVST/uLawEncode/uLawEncodeProc.cpp b/plugins/WinVST/uLawEncode/uLawEncodeProc.cpp index 3d86a7f..c5dd74d 100755 --- a/plugins/WinVST/uLawEncode/uLawEncodeProc.cpp +++ b/plugins/WinVST/uLawEncode/uLawEncodeProc.cpp @@ -88,18 +88,14 @@ void uLawEncode::processReplacing(float **inputs, float **outputs, VstInt32 samp inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 32-bit floating point - float fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 32 bit output + //stereo 32 bit dither, made small and tidy. + int expon; frexpf((float)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexpf((float)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 32 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -109,12 +105,6 @@ void uLawEncode::processReplacing(float **inputs, float **outputs, VstInt32 samp *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } void uLawEncode::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) @@ -198,18 +188,16 @@ void uLawEncode::processDoubleReplacing(double **inputs, double **outputs, VstIn inputSampleR = (inputSampleR * wet) + (drySampleR * dry); } - //noise shaping to 64-bit floating point - double fpTemp = inputSampleL; - fpNShapeL += (inputSampleL-fpTemp); - inputSampleL += fpNShapeL; - //if this confuses you look at the wordlength for fpTemp :) - fpTemp = inputSampleR; - fpNShapeR += (inputSampleR-fpTemp); - inputSampleR += fpNShapeR; - //for deeper space and warmth, we try a non-oscillating noise shaping - //that is kind of ruthless: it will forever retain the rounding errors - //except we'll dial it back a hair at the end of every buffer processed - //end noise shaping on 64 bit output + //stereo 64 bit dither, made small and tidy. + int expon; frexp((double)inputSampleL, &expon); + long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleL += (dither-fpNShapeL); fpNShapeL = dither; + frexp((double)inputSampleR, &expon); + dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62); + dither /= 536870912.0; //needs this to scale to 64 bit zone + inputSampleR += (dither-fpNShapeR); fpNShapeR = dither; + //end 64 bit dither *out1 = inputSampleL; *out2 = inputSampleR; @@ -219,10 +207,4 @@ void uLawEncode::processDoubleReplacing(double **inputs, double **outputs, VstIn *out1++; *out2++; } - fpNShapeL *= 0.999999; - fpNShapeR *= 0.999999; - //we will just delicately dial back the FP noise shaping, not even every sample - //this is a good place to put subtle 'no runaway' calculations, though bear in mind - //that it will be called more often when you use shorter sample buffers in the DAW. - //So, very low latency operation will call these calculations more often. } |