From 23063511d9c41d32963c7722e353ea458af9065f Mon Sep 17 00:00:00 2001 From: James Crook Date: Wed, 21 Aug 2019 17:56:31 +0100 Subject: [PATCH] Bug 2031 - Equalization: presets under the Manage button do not save custom EQ curves Further work needed, and a tidy up to bring arrays into ShuttleGui would be nice, but this gets us most of the way. --- src/effects/Equalization.cpp | 35 ++++++++++++++++++++++++++++++++++- src/effects/LoadEffects.cpp | 5 ++--- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/src/effects/Equalization.cpp b/src/effects/Equalization.cpp index bbc66ba62..d60ba7cb7 100644 --- a/src/effects/Equalization.cpp +++ b/src/effects/Equalization.cpp @@ -329,10 +329,43 @@ EffectType EffectEqualization::GetType() // EffectClientInterface implementation bool EffectEqualization::DefineParams( ShuttleParams & S ){ S.SHUTTLE_PARAM( mM, FilterLength ); - S.SHUTTLE_PARAM( mCurveName, CurveName); + //S.SHUTTLE_PARAM( mCurveName, CurveName); S.SHUTTLE_PARAM( mLin, InterpLin); S.SHUTTLE_ENUM_PARAM( mInterp, InterpMeth, kInterpStrings, nInterpolations ); + // if saving the preferences... + if( dynamic_cast(&S)) + { + int numPoints = mCurves[ 0 ].points.size(); + S.Define( numPoints, wxString("nPoints"), 0, 0,200,1); + int point; + for( point = 0; point < numPoints; point++ ) + { + const wxString nameFreq = wxString::Format("f%i",point); + const wxString nameVal = wxString::Format("v%i",point); + S.Define( mCurves[ 0 ].points[ point ].Freq, nameFreq, 0.0, 0.0, 0.0, 0.0 ); + S.Define( mCurves[ 0 ].points[ point ].dB, nameVal, 0.0, 0.0, 0.0, 0.0 ); + } + + } + else + { + int numPoints;// = mLogEnvelope->GetNumberOfPoints(); + S.Define( numPoints, wxString("nPoints"), 0, 0,200,1); + mCurves[0].points.clear(); + + for (int i = 0; i < numPoints; i++) + { + const wxString nameFreq = wxString::Format("f%i",i); + const wxString nameVal = wxString::Format("v%i",i); + double f,d; + S.Define( f, nameFreq, 0.0, -10000.0, 10000.0, 0.0 ); + S.Define( d, nameVal, 0.0, -10000.0, 10000.0, 0.0 ); + mCurves[0].points.push_back( EQPoint( f,d )); + } + setCurve( 0 ); + } + return true; } diff --git a/src/effects/LoadEffects.cpp b/src/effects/LoadEffects.cpp index 351ffd498..991ecf058 100644 --- a/src/effects/LoadEffects.cpp +++ b/src/effects/LoadEffects.cpp @@ -120,9 +120,8 @@ EFFECT( EQUALIZATION, EffectEqualization, (kEqLegacy) ) \ EFFECT( FADEIN, EffectFade, (true) ) \ EFFECT( FADEOUT, EffectFade, (false) ) \ - /* These two effects, not yet */ \ - /*EFFECT( FILTERCURVE, EffectEqualization, (kEqOptionCurve) )*/ \ - /*EFFECT( GRAPHICEQ, EffectEqualization, (kEqOptionGraphic) )*/ \ + EFFECT( FILTERCURVE, EffectEqualization, (kEqOptionCurve) ) \ + EFFECT( GRAPHICEQ, EffectEqualization, (kEqOptionGraphic) ) \ EFFECT( INVERT, EffectInvert, () ) \ EFFECT( NORMALIZE, EffectNormalize, () ) \ EFFECT( PHASER, EffectPhaser, () ) \