From a2718fce29eb857e518c0678224b4931087cbb83 Mon Sep 17 00:00:00 2001 From: Paul Date: Tue, 30 Apr 2024 14:33:12 -0400 Subject: [PATCH] Improve the coverage of int typeins (#57) Still not all the way there, but lots better --- scripts/import.pl | 36 +++++++++++++++++++++++++----- src/autogen_airwin/Balanced.cpp | 2 ++ src/autogen_airwin/Channel4.cpp | 2 ++ src/autogen_airwin/Channel5.cpp | 2 ++ src/autogen_airwin/Channel6.cpp | 2 ++ src/autogen_airwin/Channel7.cpp | 2 ++ src/autogen_airwin/Channel8.cpp | 2 ++ src/autogen_airwin/Channel9.cpp | 2 ++ src/autogen_airwin/ClearCoat.cpp | 2 ++ src/autogen_airwin/CloudCoat.cpp | 2 ++ src/autogen_airwin/DitherFloat.cpp | 2 ++ src/autogen_airwin/Fracture2.cpp | 2 ++ src/autogen_airwin/NodeDither.cpp | 2 ++ src/autogen_airwin/SampleDelay.cpp | 4 ++++ 14 files changed, 58 insertions(+), 6 deletions(-) diff --git a/scripts/import.pl b/scripts/import.pl index 2186d7e..50cf74f 100644 --- a/scripts/import.pl +++ b/scripts/import.pl @@ -122,6 +122,7 @@ my $param = $1; my $formatter = $2; my $ok = 0; + my $isSwitch = 0; # Chris is insanely regular with his transformations here # Easy case - just a float2string @@ -138,11 +139,13 @@ $pttv .= " case kParam${param}: { auto b = string2float(text, value); if (b) { value = value / (${scaling}); } return b; break; }\n" } # Scaled offsetfloat to string p * scale - off - elsif ($formatter =~ m/float2string\s*\(\s*\(?\s*\(\s*${param}\s*\*\s*([\d\.]+)\s*\)\s*-\s*([\d\.]+)\s*\)?\s*,[^;]+;\s*$/) + elsif ($formatter =~ m/float2string\s*\(\s*\(?\s*\(\s*${param}\s*\*\s*([\d\.]+)\s*\)\s*([\+-])\s*([\d\.]+)\s*\)?\s*,[^;]+;\s*$/) { my $scaling = $1; - my $offset = $2; - $pttv .= " case kParam${param}: { auto b = string2float(text, value); if (b) { value = (value + ${offset}) / (${scaling}); } return b; break; }\n"; + my $pm = $2; + my $offset = $3; + if ($pm =~ m/\+/) { $pm = "-";} else { $pm = "+" }; + $pttv .= " case kParam${param}: { auto b = string2float(text, value); if (b) { value = (value $pm ${offset}) / (${scaling}); } return b; break; }\n"; $ok = 1; } # Lazy - offset positive @@ -213,12 +216,25 @@ elsif ($formatter =~ m/switch/) { # We know we can't do these + $isSwitch = 1; $ok = 0; } - elsif ($formatter =~ m/switch/) + elsif ($formatter =~ m/int2string\s*\((\(VstInt32\)|\(int\))?\s*(floor)?\((.*)\),/) { - # We know we can't do these - $ok = 0; + my $body = $3; + $body =~ s/drive/$param/; + + if ($body =~ m/^\s*${param}\s*\*\s*([\d\.]+)\s*$/) + { + my $scl = $1; + $pttv .= " case kParam${param}: { auto b = string2float(text, value); if (b) { value = (value + 0.1) / ${scl}; } return b; break; }\n"; + $ok = 1; + } + else + { + print " INT BODY: " . $f . "::" . $param . " / " . $body . "\n"; + $ok = 0; + } } else { @@ -230,6 +246,14 @@ { $ccpt .= " case kParam${param}: return true;\n" } + elsif ($isSwitch) + { + # supress this warning + } + elsif ($formatter =~ m/int2string/) + { + print " INT UNDONE: " . $f . "::" . $param . " / " . $formatter . "\n"; + } else { print " UNINVERTED: " . $f . "::" . $param . " / " . $formatter . "\n"; diff --git a/src/autogen_airwin/Balanced.cpp b/src/autogen_airwin/Balanced.cpp index 6a2c6ad..3df5b39 100644 --- a/src/autogen_airwin/Balanced.cpp +++ b/src/autogen_airwin/Balanced.cpp @@ -99,12 +99,14 @@ bool Balanced::getVendorString(char* text) { } bool Balanced::parameterTextToValue(VstInt32 index, const char *text, float &value) { switch(index) { + case kParamA: { auto b = string2float(text, value); if (b) { value = (value + 0.1) / 8; } return b; break; } } return false; } bool Balanced::canConvertParameterTextToValue(VstInt32 index) { switch(index) { + case kParamA: return true; } return false; diff --git a/src/autogen_airwin/Channel4.cpp b/src/autogen_airwin/Channel4.cpp index 74d178a..f2e92b2 100644 --- a/src/autogen_airwin/Channel4.cpp +++ b/src/autogen_airwin/Channel4.cpp @@ -136,12 +136,14 @@ bool Channel4::getVendorString(char* text) { } bool Channel4::parameterTextToValue(VstInt32 index, const char *text, float &value) { switch(index) { + case kParamB: { auto b = string2float(text, value); if (b) { value = (value + 0.1) / 100; } return b; break; } } return false; } bool Channel4::canConvertParameterTextToValue(VstInt32 index) { switch(index) { + case kParamB: return true; } return false; diff --git a/src/autogen_airwin/Channel5.cpp b/src/autogen_airwin/Channel5.cpp index be09ed5..d3354c1 100644 --- a/src/autogen_airwin/Channel5.cpp +++ b/src/autogen_airwin/Channel5.cpp @@ -137,6 +137,7 @@ bool Channel5::getVendorString(char* text) { } bool Channel5::parameterTextToValue(VstInt32 index, const char *text, float &value) { switch(index) { + case kParamB: { auto b = string2float(text, value); if (b) { value = (value + 0.1) / 100; } return b; break; } case kParamC: { auto b = string2float(text, value); return b; break; } } @@ -144,6 +145,7 @@ bool Channel5::parameterTextToValue(VstInt32 index, const char *text, float &val } bool Channel5::canConvertParameterTextToValue(VstInt32 index) { switch(index) { + case kParamB: return true; case kParamC: return true; } diff --git a/src/autogen_airwin/Channel6.cpp b/src/autogen_airwin/Channel6.cpp index 9906fc2..4bd03fa 100644 --- a/src/autogen_airwin/Channel6.cpp +++ b/src/autogen_airwin/Channel6.cpp @@ -137,6 +137,7 @@ bool Channel6::getVendorString(char* text) { } bool Channel6::parameterTextToValue(VstInt32 index, const char *text, float &value) { switch(index) { + case kParamB: { auto b = string2float(text, value); if (b) { value = (value + 0.1) / 100; } return b; break; } case kParamC: { auto b = string2float(text, value); return b; break; } } @@ -144,6 +145,7 @@ bool Channel6::parameterTextToValue(VstInt32 index, const char *text, float &val } bool Channel6::canConvertParameterTextToValue(VstInt32 index) { switch(index) { + case kParamB: return true; case kParamC: return true; } diff --git a/src/autogen_airwin/Channel7.cpp b/src/autogen_airwin/Channel7.cpp index ecad05c..4382302 100644 --- a/src/autogen_airwin/Channel7.cpp +++ b/src/autogen_airwin/Channel7.cpp @@ -138,6 +138,7 @@ bool Channel7::getVendorString(char* text) { } bool Channel7::parameterTextToValue(VstInt32 index, const char *text, float &value) { switch(index) { + case kParamB: { auto b = string2float(text, value); if (b) { value = (value + 0.1) / 200; } return b; break; } case kParamC: { auto b = string2float(text, value); return b; break; } } @@ -145,6 +146,7 @@ bool Channel7::parameterTextToValue(VstInt32 index, const char *text, float &val } bool Channel7::canConvertParameterTextToValue(VstInt32 index) { switch(index) { + case kParamB: return true; case kParamC: return true; } diff --git a/src/autogen_airwin/Channel8.cpp b/src/autogen_airwin/Channel8.cpp index 463dc1a..4d5375e 100644 --- a/src/autogen_airwin/Channel8.cpp +++ b/src/autogen_airwin/Channel8.cpp @@ -137,6 +137,7 @@ bool Channel8::getVendorString(char* text) { } bool Channel8::parameterTextToValue(VstInt32 index, const char *text, float &value) { switch(index) { + case kParamB: { auto b = string2float(text, value); if (b) { value = (value + 0.1) / 200; } return b; break; } case kParamC: { auto b = string2float(text, value); return b; break; } } @@ -144,6 +145,7 @@ bool Channel8::parameterTextToValue(VstInt32 index, const char *text, float &val } bool Channel8::canConvertParameterTextToValue(VstInt32 index) { switch(index) { + case kParamB: return true; case kParamC: return true; } diff --git a/src/autogen_airwin/Channel9.cpp b/src/autogen_airwin/Channel9.cpp index 23185db..7e5b0d9 100644 --- a/src/autogen_airwin/Channel9.cpp +++ b/src/autogen_airwin/Channel9.cpp @@ -139,6 +139,7 @@ bool Channel9::getVendorString(char* text) { } bool Channel9::parameterTextToValue(VstInt32 index, const char *text, float &value) { switch(index) { + case kParamB: { auto b = string2float(text, value); if (b) { value = (value + 0.1) / 200; } return b; break; } case kParamC: { auto b = string2float(text, value); return b; break; } } @@ -146,6 +147,7 @@ bool Channel9::parameterTextToValue(VstInt32 index, const char *text, float &val } bool Channel9::canConvertParameterTextToValue(VstInt32 index) { switch(index) { + case kParamB: return true; case kParamC: return true; } diff --git a/src/autogen_airwin/ClearCoat.cpp b/src/autogen_airwin/ClearCoat.cpp index 4554048..d47cc31 100644 --- a/src/autogen_airwin/ClearCoat.cpp +++ b/src/autogen_airwin/ClearCoat.cpp @@ -209,6 +209,7 @@ bool ClearCoat::getVendorString(char* text) { } bool ClearCoat::parameterTextToValue(VstInt32 index, const char *text, float &value) { switch(index) { + case kParamA: { auto b = string2float(text, value); if (b) { value = (value + 0.1) / 16.999; } return b; break; } case kParamB: { auto b = string2float(text, value); return b; break; } } @@ -216,6 +217,7 @@ bool ClearCoat::parameterTextToValue(VstInt32 index, const char *text, float &va } bool ClearCoat::canConvertParameterTextToValue(VstInt32 index) { switch(index) { + case kParamA: return true; case kParamB: return true; } diff --git a/src/autogen_airwin/CloudCoat.cpp b/src/autogen_airwin/CloudCoat.cpp index 817cfcb..7f4d25f 100644 --- a/src/autogen_airwin/CloudCoat.cpp +++ b/src/autogen_airwin/CloudCoat.cpp @@ -223,6 +223,7 @@ bool CloudCoat::getVendorString(char* text) { } bool CloudCoat::parameterTextToValue(VstInt32 index, const char *text, float &value) { switch(index) { + case kParamA: { auto b = string2float(text, value); if (b) { value = (value + 0.1) / 16.999; } return b; break; } case kParamB: { auto b = string2float(text, value); return b; break; } case kParamC: { auto b = string2float(text, value); return b; break; } @@ -231,6 +232,7 @@ bool CloudCoat::parameterTextToValue(VstInt32 index, const char *text, float &va } bool CloudCoat::canConvertParameterTextToValue(VstInt32 index) { switch(index) { + case kParamA: return true; case kParamB: return true; case kParamC: return true; diff --git a/src/autogen_airwin/DitherFloat.cpp b/src/autogen_airwin/DitherFloat.cpp index d016439..7342032 100644 --- a/src/autogen_airwin/DitherFloat.cpp +++ b/src/autogen_airwin/DitherFloat.cpp @@ -105,6 +105,7 @@ bool DitherFloat::getVendorString(char* text) { } bool DitherFloat::parameterTextToValue(VstInt32 index, const char *text, float &value) { switch(index) { + case kParamA: { auto b = string2float(text, value); if (b) { value = (value + 0.1) / 32; } return b; break; } case kParamB: { auto b = string2float(text, value); return b; break; } } @@ -112,6 +113,7 @@ bool DitherFloat::parameterTextToValue(VstInt32 index, const char *text, float & } bool DitherFloat::canConvertParameterTextToValue(VstInt32 index) { switch(index) { + case kParamA: return true; case kParamB: return true; } diff --git a/src/autogen_airwin/Fracture2.cpp b/src/autogen_airwin/Fracture2.cpp index bef3e32..de4f277 100644 --- a/src/autogen_airwin/Fracture2.cpp +++ b/src/autogen_airwin/Fracture2.cpp @@ -128,6 +128,7 @@ bool Fracture2::getVendorString(char* text) { bool Fracture2::parameterTextToValue(VstInt32 index, const char *text, float &value) { switch(index) { case kParamA: { auto b = string2float(text, value); return b; break; } + case kParamB: { auto b = string2float(text, value); if (b) { value = (value + 0.1) / 8.0; } return b; break; } case kParamC: { auto b = string2float(text, value); return b; break; } case kParamD: { auto b = string2float(text, value); return b; break; } case kParamE: { auto b = string2float(text, value); return b; break; } @@ -138,6 +139,7 @@ bool Fracture2::parameterTextToValue(VstInt32 index, const char *text, float &va bool Fracture2::canConvertParameterTextToValue(VstInt32 index) { switch(index) { case kParamA: return true; + case kParamB: return true; case kParamC: return true; case kParamD: return true; case kParamE: return true; diff --git a/src/autogen_airwin/NodeDither.cpp b/src/autogen_airwin/NodeDither.cpp index c72dc24..d357282 100644 --- a/src/autogen_airwin/NodeDither.cpp +++ b/src/autogen_airwin/NodeDither.cpp @@ -109,12 +109,14 @@ bool NodeDither::getVendorString(char* text) { } bool NodeDither::parameterTextToValue(VstInt32 index, const char *text, float &value) { switch(index) { + case kParamA: { auto b = string2float(text, value); if (b) { value = (value + 0.1) / 100; } return b; break; } } return false; } bool NodeDither::canConvertParameterTextToValue(VstInt32 index) { switch(index) { + case kParamA: return true; } return false; diff --git a/src/autogen_airwin/SampleDelay.cpp b/src/autogen_airwin/SampleDelay.cpp index a3d691b..669c50e 100644 --- a/src/autogen_airwin/SampleDelay.cpp +++ b/src/autogen_airwin/SampleDelay.cpp @@ -121,6 +121,8 @@ bool SampleDelay::getVendorString(char* text) { } bool SampleDelay::parameterTextToValue(VstInt32 index, const char *text, float &value) { switch(index) { + case kParamA: { auto b = string2float(text, value); if (b) { value = (value + 0.1) / 100.0; } return b; break; } + case kParamB: { auto b = string2float(text, value); if (b) { value = (value + 0.1) / 10.0; } return b; break; } case kParamC: { auto b = string2float(text, value); return b; break; } case kParamD: { auto b = string2float(text, value); if (b) { value = (value + 1.0) / (2.0); } return b; break; } @@ -129,6 +131,8 @@ bool SampleDelay::parameterTextToValue(VstInt32 index, const char *text, float & } bool SampleDelay::canConvertParameterTextToValue(VstInt32 index) { switch(index) { + case kParamA: return true; + case kParamB: return true; case kParamC: return true; case kParamD: return true;