NMFMatch working in SC

Having gone to the trouble of making the right numbers, I should use them, rather than other numbers. I should also use the outputs I've made, rather than nothing.
include/FluidSCWrapper.hpp
nix
Owen Green 7 years ago
parent 3260302782
commit aaba970d0f

@ -46,6 +46,12 @@ struct FloatControlsIter
return f; return f;
} }
float operator[](size_t i)
{
assert(i < mSize);
return *mValues[i];
}
void reset(float** vals) void reset(float** vals)
{ {
mValues = vals; mValues = vals;
@ -60,7 +66,7 @@ struct FloatControlsIter
template <size_t N, typename T> struct GetControl template <size_t N, typename T> struct GetControl
{ {
T operator()(World*, FloatControlsIter& controls) { return controls.next(); } T operator()(World*, FloatControlsIter& controls) { return controls[N]; }
}; };
template <size_t N> struct ArgumentGetter<N, FloatT> : public GetArgument<N, float, &sc_msg_iter::getf> template <size_t N> struct ArgumentGetter<N, FloatT> : public GetArgument<N, float, &sc_msg_iter::getf>
@ -165,9 +171,7 @@ public:
mInputConnections.reserve(mClient.audioChannelsIn()); mInputConnections.reserve(mClient.audioChannelsIn());
mOutputConnections.reserve(mClient.audioChannelsOut()); mOutputConnections.reserve(mClient.audioChannelsOut());
mAudioInputs.reserve(mClient.audioChannelsIn()); mAudioInputs.reserve(mClient.audioChannelsIn());
mAudioOutputs.reserve(mClient.audioChannelsOut()); mOutputs.reserve(std::max(mClient.audioChannelsOut(),mClient.controlChannelsOut()));
mControlOutputs.reserve(mClient.controlChannelsOut());
// mControlOutputData.resize(mClient.controlChannelsOut(),)
for (int i = 0; i < mClient.audioChannelsIn(); ++i) for (int i = 0; i < mClient.audioChannelsIn(); ++i)
{ {
@ -178,13 +182,13 @@ public:
for (int i = 0; i < mClient.audioChannelsOut(); ++i) for (int i = 0; i < mClient.audioChannelsOut(); ++i)
{ {
mOutputConnections.emplace_back(true); mOutputConnections.emplace_back(true);
mAudioOutputs.emplace_back(nullptr, 0, 0); mOutputs.emplace_back(nullptr, 0, 0);
} }
// for (int i = 0; i < mClient.controlChannelsOut(); ++i) for (int i = 0; i < mClient.controlChannelsOut(); ++i)
// { {
// mControlOutputs.emplace_back() mOutputs.emplace_back(nullptr, 0, 0);
// } }
set_calc_function<RealTime, &RealTime::next>(); set_calc_function<RealTime, &RealTime::next>();
Wrapper::getInterfaceTable()->fClearUnitOutputs(this, 1); Wrapper::getInterfaceTable()->fClearUnitOutputs(this, 1);
@ -203,20 +207,19 @@ public:
} }
for (int i = 0; i < mClient.audioChannelsOut(); ++i) for (int i = 0; i < mClient.audioChannelsOut(); ++i)
{ {
if (mOutputConnections[i]) mAudioOutputs[i].reset(out(i), 0, fullBufferSize()); if (mOutputConnections[i]) mOutputs[i].reset(out(i), 0, fullBufferSize());
} }
for(int i = 0; i < mClient.controlChannelsOut();++i) for(int i = 0; i < mClient.controlChannelsOut();++i)
{ {
if(mOutputConnections[i]) mControlOutputs[i].reset(out(i),0,1); mOutputs[i].reset(out(i),0,1);
} }
mClient.process(mAudioInputs, mAudioOutputs); mClient.process(mAudioInputs, mOutputs);
} }
private: private:
std::vector<bool> mInputConnections; std::vector<bool> mInputConnections;
std::vector<bool> mOutputConnections; std::vector<bool> mOutputConnections;
std::vector<HostVector> mAudioInputs; std::vector<HostVector> mAudioInputs;
std::vector<HostVector> mAudioOutputs; std::vector<HostVector> mOutputs;
std::vector<HostVector> mControlOutputs;
FloatControlsIter mControlsIterator; FloatControlsIter mControlsIterator;
protected: protected:
Client mClient; Client mClient;

Loading…
Cancel
Save