From 31ebbf68c3828445dfd721dfa0bb8cfade9bb187 Mon Sep 17 00:00:00 2001 From: Owen Green Date: Tue, 16 Apr 2019 10:44:37 +0100 Subject: [PATCH] Deal with fixed params better include/FluidSCWrapper.hpp --- include/FluidSCWrapper.hpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/include/FluidSCWrapper.hpp b/include/FluidSCWrapper.hpp index 4a87c20..9e69269 100644 --- a/include/FluidSCWrapper.hpp +++ b/include/FluidSCWrapper.hpp @@ -78,7 +78,7 @@ public: RealTime() : mControlsIterator{mInBuf + mSpecialIndex + 1,mNumInputs - mSpecialIndex - 1} , mParams{Wrapper::Client::getParameterDescriptors()} - , mClient{Wrapper::setParams(mParams,mWorld->mVerbosity > 0, mWorld, mControlsIterator)} + , mClient{Wrapper::setParams(mParams,mWorld->mVerbosity > 0, mWorld, mControlsIterator,true)} {} void init() @@ -126,7 +126,7 @@ public: void next(int n) { mControlsIterator.reset(mInBuf + 1); //mClient.audioChannelsIn()); - Wrapper::setParams(mParams, mWorld->mVerbosity > 0, mWorld, mControlsIterator); // forward on inputs N + audio inputs as params + Wrapper::setParams(mParams, mWorld->mVerbosity > 0, mWorld, mControlsIterator,false); // forward on inputs N + audio inputs as params mParams.template constrainParameterValues(); const Unit *unit = this; for (int i = 0; i < mClient.audioChannelsIn(); ++i) @@ -186,7 +186,7 @@ public: Wrapper *w = new Wrapper( world, args); // this has to be on the heap, because it doesn't get destroyed until the async command is done - Wrapper::setParams(w->mParams, false, world, args); + Wrapper::setParams(w->mParams, false, world, args,true); Result result = validateParameters(w); if (!result.ok()) @@ -390,18 +390,22 @@ public: impl::FluidSCWrapperBase::setup(ft, name); } - static auto& setParams(ParameterSetType& p, bool verbose, World* world, FloatControlsIter& inputs) + static auto& setParams(ParameterSetType& p, bool verbose, World* world, FloatControlsIter& inputs, bool includeFixed) { //We won't even try and set params if the arguments don't match if(inputs.size() == C::getParameterDescriptors().count()) - p.template setParameterValues(verbose, world, inputs); + { + if(includeFixed) p.template setFixedParameterValues(verbose,world,inputs); + p.template setMutableParameterValues(verbose, world, inputs); + } return p; } - static auto& setParams(ParameterSetType& p, bool verbose, World* world, sc_msg_iter *args) + static auto& setParams(ParameterSetType& p, bool verbose, World* world, sc_msg_iter *args,bool includeFixed) { - p.template setParameterValues(verbose,world, args); - return p; + if(includeFixed) p.template setFixedParameterValues(verbose,world,args); + p.template setMutableParameterValues(verbose,world, args); + return p; } };