All files: Enforce naming conventions

nix
Owen Green 7 years ago
parent d76c18b58e
commit 52bafc0184

@ -111,7 +111,8 @@ namespace sc{
{
FluidTensorView<float,2> v{mBuffer->data,0, static_cast<size_t>(mBuffer->frames), static_cast<size_t>(mBuffer->channels)};
return v(fluid::slice(offset,nframes), fluid::slice(chanoffset,1)).col(0);
return v(fluid::Slice(offset, nframes), fluid::Slice(chanoffset, 1))
.col(0);
}
size_t numFrames() const override
@ -180,7 +181,8 @@ namespace sc{
{
FluidTensorView<float,2> v{mBuffer->data,0, static_cast<size_t>(mBuffer->frames), static_cast<size_t>(mBuffer->channels)};
return v(fluid::slice(offset,nframes), fluid::slice(chanoffset,1)).col(0);
return v(fluid::Slice(offset, nframes), fluid::Slice(chanoffset, 1))
.col(0);
}
size_t numFrames() const override
@ -310,8 +312,7 @@ namespace sc{
}
cmd << ", ";
if(d.getType() == parameter::Type::Buffer)
{
if (d.getType() == parameter::Type::kBuffer) {
if (count == 0)
cmd << d.getName() << ".bufnum";
else
@ -326,8 +327,8 @@ namespace sc{
ss << ";\n\n\t\tserver = server ? Server.default\n;" ;
if(Client::getParamDescriptors()[0].getType() == parameter::Type::Buffer)
{
if (Client::getParamDescriptors()[0].getType() ==
parameter::Type::kBuffer) {
ss << "if("<<Client::getParamDescriptors()[0].getName()
<< ".bufnum.isNil) {Error(\"Invalid Buffer\").format(thisMethod.name, this.class.name).throw};\n\n";
}
@ -351,22 +352,19 @@ namespace sc{
{
switch(p.getDescriptor().getType())
{
case parameter::Type::Buffer:
{
long bufnum = static_cast<long>(args->geti());
if(bufnum >= 0){
SCBufferView* buf = new SCBufferView(bufnum,inWorld);
p.setBuffer(buf);
}
break;
case parameter::Type::kBuffer: {
long bufnum = static_cast<long>(args->geti());
if (bufnum >= 0) {
SCBufferView *buf = new SCBufferView(bufnum, inWorld);
p.setBuffer(buf);
}
case parameter::Type::Long:
{
break;
}
case parameter::Type::kLong: {
p.setLong(static_cast<long>(args->geti()));
break;
}
case parameter::Type::Float:
{
case parameter::Type::kFloat: {
p.setFloat(args->getf());
break;
}

@ -14,31 +14,33 @@ static InterfaceTable *ft;
/buf_gen approach: Seems to work, but having to do the 'swap' bewteen NRT mirror buffer and RT buffer
in the same thread seems smelly, given how the allocation sequeneces in SC_SequenceCommand seem to work.
**/
void BufferMatch(World *world, struct SndBuf *srcBuf, struct sc_msg_iter *msg)
{
size_t srcFrameCount = srcBuf->frames;
size_t srcChanCount = srcBuf->channels;
long dstBufNum = msg->geti();
size_t rank = msg->geti();
if (dstBufNum == -1){
Print("BufferMatch is not happy because there is no output buffer specified.\n");
return;
}
//This sequence follows what I saw in SC_SequenceCommand.cpp. Pretty much.
//Get the NRT thread mirror buffer
SndBuf* dstBufNRT = World_GetNRTBuf(world, dstBufNum);
//Call the allocation function on that
SCErr err = ft->fBufAlloc(dstBufNRT, srcChanCount * rank, srcFrameCount,srcBuf->samplerate);
//If we were posh, we'd check for errors
//Norhing will happen, unless we (a) assign the allocated data back to the main buffer pool (b?) Tell the server the buffer has changed
//Get the RT buffer
SndBuf* dstBuf = World_GetBuf(world, dstBufNum);
//Assign value to our NRT buffer pointer's value
*dstBuf = *dstBufNRT;
//Ping the server
world->mSndBufUpdates[dstBufNum].writes ++ ;
void bufferMatch(World *world, struct SndBuf *srcBuf, struct sc_msg_iter *msg) {
size_t srcFrameCount = srcBuf->frames;
size_t srcChanCount = srcBuf->channels;
long dstBufNum = msg->geti();
size_t rank = msg->geti();
if (dstBufNum == -1) {
Print("BufferMatch is not happy because there is no output buffer "
"specified.\n");
return;
}
// This sequence follows what I saw in SC_SequenceCommand.cpp. Pretty much.
// Get the NRT thread mirror buffer
SndBuf *dstBufNRT = World_GetNRTBuf(world, dstBufNum);
// Call the allocation function on that
SCErr err = ft->fBufAlloc(dstBufNRT, srcChanCount * rank, srcFrameCount,
srcBuf->samplerate);
// If we were posh, we'd check for errors
// Norhing will happen, unless we (a) assign the allocated data back to the
// main buffer pool (b?) Tell the server the buffer has changed Get the RT
// buffer
SndBuf *dstBuf = World_GetBuf(world, dstBufNum);
// Assign value to our NRT buffer pointer's value
*dstBuf = *dstBufNRT;
// Ping the server
world->mSndBufUpdates[dstBufNum].writes++;
}
/**
@ -56,82 +58,76 @@ struct BufferFunTimeCmdData
};
//'Stage2()' happens in the NRT thread. Here we do our heavy stuff
bool ASyncBufferFun_NRTStage(World* world, void* inUserData)
{
BufferFunTimeCmdData* data = (BufferFunTimeCmdData*) inUserData;
SndBuf* src = World_GetNRTBuf(world, data->srcbuf);
SndBuf* dst = World_GetNRTBuf(world, data->dstbuf);
SCErr err = ft->fBufAlloc(dst, src->channels * data->rank, src->frames,src->samplerate);
data->newdst = dst;
return true;
bool aSyncBufferFunNrtStage(World *world, void *inUserData) {
BufferFunTimeCmdData *data = (BufferFunTimeCmdData *)inUserData;
SndBuf *src = World_GetNRTBuf(world, data->srcbuf);
SndBuf *dst = World_GetNRTBuf(world, data->dstbuf);
SCErr err = ft->fBufAlloc(dst, src->channels * data->rank, src->frames,
src->samplerate);
data->newdst = dst;
return true;
}
//'Statge3()' happens back in the RT thread, here we swap our new buffers
//SC will send the completion message after this
bool ASyncBufferFun_RTStage(World* world, void* inUserData)
{
BufferFunTimeCmdData* data = (BufferFunTimeCmdData*) inUserData;
//Norhing will happen, unless we (a) assign the allocated data back to the main buffer pool (b?) Tell the server the buffer has changed
//Get the RT buffer
SndBuf* dstBuf = World_GetBuf(world, data->dstbuf);
//Assign value to our NRT buffer pointer's value
*dstBuf = *data->newdst;
//Ping the server
world->mSndBufUpdates[data->dstbuf].writes++;
return true;
bool aSyncBufferFunRtStage(World *world, void *inUserData) {
BufferFunTimeCmdData *data = (BufferFunTimeCmdData *)inUserData;
// Norhing will happen, unless we (a) assign the allocated data back to the
// main buffer pool (b?) Tell the server the buffer has changed Get the RT
// buffer
SndBuf *dstBuf = World_GetBuf(world, data->dstbuf);
// Assign value to our NRT buffer pointer's value
*dstBuf = *data->newdst;
// Ping the server
world->mSndBufUpdates[data->dstbuf].writes++;
return true;
}
//'Stage 4()' is back on the NRT, we don't have anything to do here. SC will send 'done' after this
bool ASyncBufferFun_FinalBit(World* world, void* inUserData)
{
return true;
}
bool aSyncBufferFunFinalBit(World *world, void *inUserData) { return true; }
//Here we free any resources, including the struct we made at the start
void ASyncBufferFun_CleanUp(World* world, void* inUserData)
{
BufferFunTimeCmdData* data = (BufferFunTimeCmdData*)inUserData;
RTFree(world,data);
//scsynth will take care of the completion message
void aSyncBufferFunCleanUp(World *world, void *inUserData) {
BufferFunTimeCmdData *data = (BufferFunTimeCmdData *)inUserData;
RTFree(world, data);
// scsynth will take care of the completion message
}
//This is our entry point. We need to make a struct and populate it with good things
void ASyncBufferFun_Main(World *inWorld, void* inUserData, struct sc_msg_iter *msg, void *replyAddr)
{
BufferFunTimeCmdData* data = (BufferFunTimeCmdData*)RTAlloc(inWorld, sizeof(BufferFunTimeCmdData));
data->srcbuf = msg->geti();
data->dstbuf = msg->geti();
data->rank = msg->geti();
bool ok = true;
if(data->srcbuf < 0 )
{
Print("No source buffer");
ok = false;
}
if(data->dstbuf < 0 )
{
Print("No dst buffer");
ok = false;
}
if(!ok)
{
RTFree(inWorld,data);
return;
}
// how to pass a string argument: [WILL BE USEFUL FOR WINDOW FUNCTIONS?]
// const char *name = msg->gets(); // get the string argument
// if (name) {
// data->name = (char*)RTAlloc(inWorld, strlen(name)+1); // allocate space, free it in cmdCleanup.
// strcpy(data->name, name); // copy the string
// }
void aSyncBufferFunMain(World *inWorld, void *inUserData,
struct sc_msg_iter *msg, void *replyAddr) {
BufferFunTimeCmdData *data =
(BufferFunTimeCmdData *)RTAlloc(inWorld, sizeof(BufferFunTimeCmdData));
data->srcbuf = msg->geti();
data->dstbuf = msg->geti();
data->rank = msg->geti();
bool ok = true;
if (data->srcbuf < 0) {
Print("No source buffer");
ok = false;
}
if (data->dstbuf < 0) {
Print("No dst buffer");
ok = false;
}
if (!ok) {
RTFree(inWorld, data);
return;
}
// how to pass a string argument: [WILL BE USEFUL FOR WINDOW FUNCTIONS?]
// const char *name = msg->gets(); // get the string argument
// if (name) {
// data->name = (char*)RTAlloc(inWorld, strlen(name)+1); // allocate
// space, free it in cmdCleanup. strcpy(data->name, name); // copy the
// string
// }
//Deal with completion message
size_t completionMsgSize = msg->getbsize();
@ -144,20 +140,18 @@ void ASyncBufferFun_Main(World *inWorld, void* inUserData, struct sc_msg_iter *m
}
//Now, set the wheels in motion
DoAsynchronousCommand(inWorld,replyAddr,"AsyncBufMatch",
data,
(AsyncStageFn)ASyncBufferFun_NRTStage,
(AsyncStageFn)ASyncBufferFun_RTStage,
(AsyncStageFn)ASyncBufferFun_FinalBit,
ASyncBufferFun_CleanUp,
completionMsgSize, completionMsgString);
DoAsynchronousCommand(inWorld, replyAddr, "AsyncBufMatch", data,
(AsyncStageFn)aSyncBufferFunNrtStage,
(AsyncStageFn)aSyncBufferFunRtStage,
(AsyncStageFn)aSyncBufferFunFinalBit,
aSyncBufferFunCleanUp, completionMsgSize,
completionMsgString);
}
PluginLoad(BufferFunTime) {
ft = inTable;
//BufGen version: all in the NRT thread
DefineBufGen("BufMatch", BufferMatch);
DefineBufGen("BufMatch", bufferMatch);
//ASync version: swaps between NRT and RT threads
DefinePlugInCmd("AsyncBufMatch", ASyncBufferFun_Main, nullptr);
DefinePlugInCmd("AsyncBufMatch", aSyncBufferFunMain, nullptr);
}

@ -28,7 +28,7 @@ public:
parameter::lookupParam("winsize", params).setLong(in0(1));
parameter::lookupParam("hopsize", params).setLong(in0(1));
mClient->set_host_buffer_size(bufferSize());
mClient->setHostBufferSize(bufferSize());
mClient->reset();
inputSignals[0] = SignalPointer(new AudioSignal());
@ -52,7 +52,7 @@ private:
inputSignals[0]->set(const_cast<float*>(in(0)), in0(0));
inputSignals[1]->set(const_cast<float*>(in(2)), in0(2));
outputSignals[0]->set(out(0), out0(0));
mClient->do_process(inputSignals.begin(),inputSignals.end(),outputSignals.begin(),outputSignals.end(),numsamples,2,1);
mClient->doProcess(inputSignals.begin(),inputSignals.end(),outputSignals.begin(),outputSignals.end(),numsamples,2,1);
}
ClientPointer mClient;

@ -38,14 +38,14 @@ namespace hpss{
}
mClient->set_host_buffer_size(bufferSize());
mClient->setHostBufferSize(bufferSize());
mClient->reset();
//Work out what signals we need. For now keep it simple:
input_signals[0] = SignalPointer(new AudioSignalWrapper());
output_signals[0] = SignalPointer(new AudioSignalWrapper());
output_signals[1] = SignalPointer(new AudioSignalWrapper());
output_signals[2] = SignalPointer(new AudioSignalWrapper());
inputSignals[0] = SignalPointer(new AudioSignalWrapper());
outputSignals[0] = SignalPointer(new AudioSignalWrapper());
outputSignals[1] = SignalPointer(new AudioSignalWrapper());
outputSignals[2] = SignalPointer(new AudioSignalWrapper());
mCalcFunc = make_calc_function<FDRTHPSS,&FDRTHPSS::next>();
Unit* unit = this;
@ -66,32 +66,32 @@ namespace hpss{
continue;
switch(p.getDescriptor().getType())
{
case parameter::Type::Long:
p.setLong(in0(i+1));
p.checkRange();
break;
case parameter::Type::Float:
{
//We need to constrain threshold (normalised) frequency pairs at runtime.
std::string attrname = p.getDescriptor().getName();
auto constraint = paramConstraints.find(attrname);
if(constraint != paramConstraints.end())
{
double limit = parameter::lookupParam(constraint->second.param, mClient->getParams()).getFloat();
if(!constraint->second.condition(in0(i+1),limit))
{
return;
}
case parameter::Type::kLong:
p.setLong(in0(i + 1));
p.checkRange();
break;
case parameter::Type::kFloat: {
// We need to constrain threshold (normalised) frequency pairs at
// runtime.
std::string attrname = p.getDescriptor().getName();
auto constraint = paramConstraints.find(attrname);
if (constraint != paramConstraints.end()) {
double limit = parameter::lookupParam(constraint->second.param,
mClient->getParams())
.getFloat();
if (!constraint->second.condition(in0(i + 1), limit)) {
return;
}
}
p.setFloat(in0(i+1));
p.checkRange();
p.setFloat(in0(i + 1));
p.checkRange();
}
break;
case parameter::Type::Buffer:
case parameter::Type::kBuffer:
// p.setBuffer( in0(i+1));
break;
default:
@ -105,11 +105,11 @@ namespace hpss{
setParams(false);
const float* input = in(0);
const float inscalar = in0(0);
input_signals[0]->set(const_cast<float*>(input), inscalar);
output_signals[0]->set(out(0), out0(0));
output_signals[1]->set(out(1), out0(1));
output_signals[2]->set(out(2), out0(2));
mClient->do_process(std::begin(input_signals),std::end(input_signals),std::begin(output_signals), std::end(output_signals),numsamples,1,3);
inputSignals[0]->set(const_cast<float*>(input), inscalar);
outputSignals[0]->set(out(0), out0(0));
outputSignals[1]->set(out(1), out0(1));
outputSignals[2]->set(out(2), out0(2));
mClient->doProcess(std::begin(inputSignals),std::end(inputSignals),std::begin(outputSignals), std::end(outputSignals),numsamples,1,3);
}
struct Constraint{
@ -126,8 +126,8 @@ namespace hpss{
ClientPointer mClient;
SignalArray<1> input_signals;
SignalArray<3> output_signals;
SignalArray<1> inputSignals;
SignalArray<3> outputSignals;
};
}
}

@ -48,7 +48,7 @@ namespace nmf{
mRank = parameter::lookupParam("rank", mClient->getParams()).getLong();
mClient->set_host_buffer_size(bufferSize());
mClient->setHostBufferSize(bufferSize());
mClient->reset();
inputSignals[0] = SignalPointer(new AudioSignalWrapper());
@ -76,18 +76,16 @@ namespace nmf{
continue;
switch(p.getDescriptor().getType())
{
case parameter::Type::Long:
p.setLong(in0(i+1));
p.checkRange();
break;
case parameter::Type::Float:
{
p.setFloat(in0(i+1));
p.checkRange();
case parameter::Type::kLong:
p.setLong(in0(i + 1));
p.checkRange();
break;
case parameter::Type::kFloat: {
p.setFloat(in0(i + 1));
p.checkRange();
}
break;
case parameter::Type::Buffer:
{
case parameter::Type::kBuffer: {
long bufnum = static_cast<long>(in0(i+1));
sc::RTBufferView* currentBuf = static_cast<sc::RTBufferView*>(p.getBuffer());
@ -113,7 +111,7 @@ namespace nmf{
for(size_t i = 0; i < mRank; ++i)
outputSignals[i]->set(out(i),out0(i));
mClient->do_process_noOLA(inputSignals.begin(),inputSignals.end(), outputSignals.begin(), outputSignals.end(), mWorld->mFullRate.mBufLength ,1,mRank);
mClient->doProcessNoOla(inputSignals.begin(),inputSignals.end(), outputSignals.begin(), outputSignals.end(), mWorld->mFullRate.mBufLength ,1,mRank);
for(size_t i = 0; i < mRank; ++i)
out0(i) = outputSignals[i]->next();
}

@ -23,21 +23,20 @@ public:
//Window size, Hop size, FFT Size
//Get the window size
const float window_size = in0(1);
const float hop_size = in0(2);
const float fft_size = in0(3);
const float windowSize = in0(1);
const float hopSize = in0(2);
const float fftSize = in0(3);
//Oh NO! Heap allocation! Make client object
m_client = new audio::BaseSTFTClient<double,float>(65536);
m_client->getParams()[0].setLong(window_size);
m_client->getParams()[1].setLong(hop_size);
m_client->getParams()[2].setLong(fft_size);
mClient = new audio::BaseSTFTClient<double,float>(65536);
mClient->getParams()[0].setLong(windowSize);
mClient->getParams()[1].setLong(hopSize);
mClient->getParams()[2].setLong(fftSize);
bool isOK;
std::string feedback;
std::tie(isOK, feedback) = m_client->sanityCheck();
std::tie(isOK, feedback) = mClient->sanityCheck();
if(!isOK)
{
Print("fdSTFTPass Error: %s",feedback.c_str());
@ -45,14 +44,14 @@ public:
}
m_client->set_host_buffer_size(bufferSize());
m_client->reset();
mClient->setHostBufferSize(bufferSize());
mClient->reset();
//Work out what signals we need. For now keep it simple:
//in 0 => only audio
//out 0 => only audio
input_signals[0] = new AudioSignalWrapper();
output_signals[0] = new AudioSignalWrapper();
inputSignals[0] = new AudioSignalWrapper();
outputSignals[0] = new AudioSignalWrapper();
mCalcFunc = make_calc_function<FDSTFTPass,&FDSTFTPass::next>();
Unit* unit = this;
@ -61,9 +60,9 @@ public:
~FDSTFTPass()
{
delete input_signals[0];
delete output_signals[0];
delete m_client;
delete inputSignals[0];
delete outputSignals[0];
delete mClient;
}
private:
@ -71,14 +70,14 @@ private:
{
const float* input = in(0);
const float inscalar = in0(0);
input_signals[0]->set(const_cast<float*>(input), inscalar);
output_signals[0]->set(out(0), out0(0));
m_client->do_process(std::begin(input_signals),std::end(input_signals),std::begin(output_signals), std::end(output_signals),numsamples,1,1);
inputSignals[0]->set(const_cast<float*>(input), inscalar);
outputSignals[0]->set(out(0), out0(0));
mClient->doProcess(std::begin(inputSignals),std::end(inputSignals),std::begin(outputSignals), std::end(outputSignals),numsamples,1,1);
}
audio::BaseSTFTClient<double, float>* m_client;
SignalWrapper* input_signals[1];
SignalWrapper* output_signals[1];
audio::BaseSTFTClient<double, float> *mClient;
SignalWrapper *inputSignals[1];
SignalWrapper *outputSignals[1];
};
}
}
@ -87,7 +86,3 @@ PluginLoad(FluidSTFTUGen) {
ft = inTable;
registerUnit<fluid::stft::FDSTFTPass>(ft, "FluidSTFTPass");
}

@ -31,7 +31,7 @@ namespace stn{
//
//Oh NO! Heap allocation! Make client object
m_client = new stn::SinesClient<double,float>(65536);
mClient = new stn::SinesClient<double,float>(65536);
setParams(true);
// m_client->getParams()[0].setLong(pfilter_size);
@ -43,7 +43,7 @@ namespace stn{
bool isOK;
std::string feedback;
std::tie(isOK, feedback) = m_client->sanityCheck();
std::tie(isOK, feedback) = mClient->sanityCheck();
if(!isOK)
{
Print("fdRTHPSS Error: %s",feedback.c_str());
@ -51,15 +51,15 @@ namespace stn{
}
m_client->set_host_buffer_size(bufferSize());
m_client->reset();
mClient->setHostBufferSize(bufferSize());
mClient->reset();
//Work out what signals we need. For now keep it simple:
//in 0 => only audio
//out 0 => only audio
input_signals[0] = new AudioSignalWrapper();
output_signals[0] = new AudioSignalWrapper();
output_signals[1] = new AudioSignalWrapper();
inputSignals[0] = new AudioSignalWrapper();
outputSignals[0] = new AudioSignalWrapper();
outputSignals[1] = new AudioSignalWrapper();
mCalcFunc = make_calc_function<FDRTSines,&FDRTSines::next>();
Unit* unit = this;
@ -68,39 +68,39 @@ namespace stn{
~FDRTSines()
{
delete input_signals[0];
delete output_signals[0];
delete output_signals[1];
delete m_client;
delete inputSignals[0];
delete outputSignals[0];
delete outputSignals[1];
delete mClient;
}
private:
void setParams(bool instantiation)
{
assert(m_client);
for(size_t i = 0; i < m_client->getParams().size(); ++i)
assert(mClient);
for(size_t i = 0; i < mClient->getParams().size(); ++i)
{
parameter::Instance& p = m_client->getParams()[i];
parameter::Instance& p = mClient->getParams()[i];
if(!instantiation && p.getDescriptor().instantiation())
continue;
switch(p.getDescriptor().getType())
{
case parameter::Type::Long:
p.setLong(in0(i+1));
p.checkRange();
break;
case parameter::Type::Float:
p.setFloat(in0(i+1));
p.checkRange();
break;
case parameter::Type::Buffer:
// p.setBuffer( in0(i+1));
break;
default:
break;
case parameter::Type::kLong:
p.setLong(in0(i + 1));
p.checkRange();
break;
case parameter::Type::kFloat:
p.setFloat(in0(i + 1));
p.checkRange();
break;
case parameter::Type::kBuffer:
// p.setBuffer( in0(i+1));
break;
default:
break;
}
}
}
@ -111,15 +111,15 @@ namespace stn{
setParams(false);
const float* input = in(0);
const float inscalar = in0(0);
input_signals[0]->set(const_cast<float*>(input), inscalar);
output_signals[0]->set(out(0), out0(0));
output_signals[1]->set(out(1), out0(1));
m_client->do_process(std::begin(input_signals),std::end(input_signals),std::begin(output_signals), std::end(output_signals),numsamples,1,2);
inputSignals[0]->set(const_cast<float*>(input), inscalar);
outputSignals[0]->set(out(0), out0(0));
outputSignals[1]->set(out(1), out0(1));
mClient->doProcess(std::begin(inputSignals),std::end(inputSignals),std::begin(outputSignals), std::end(outputSignals),numsamples,1,2);
}
stn::SinesClient<double, float>* m_client;
SignalWrapper* input_signals[1];
SignalWrapper* output_signals[2];
stn::SinesClient<double, float> *mClient;
SignalWrapper *inputSignals[1];
SignalWrapper *outputSignals[2];
};
}
}

@ -18,12 +18,12 @@ namespace segmentation{
public:
FluidSliceTransients()
{
m_client = new audio_client(65536);
mClient = new audio_client(65536);
setParams(true);
bool isOK;
std::string feedback;
std::tie(isOK, feedback) = m_client->sanityCheck();
std::tie(isOK, feedback) = mClient->sanityCheck();
if(!isOK)
{
Print("FluidSliceTransients Error: %s",feedback.c_str());
@ -31,14 +31,14 @@ namespace segmentation{
}
m_client->set_host_buffer_size(bufferSize());
m_client->reset();
mClient->setHostBufferSize(bufferSize());
mClient->reset();
//Work out what signals we need. For now keep it simple:
//in 0 => only audio
//out 0 => only audio
input_signals[0] = new AudioSignalWrapper();
output_signals[0] = new AudioSignalWrapper();
inputSignals[0] = new AudioSignalWrapper();
outputSignals[0] = new AudioSignalWrapper();
mCalcFunc = make_calc_function<FluidSliceTransients,&FluidSliceTransients::next>();
Unit* unit = this;
@ -47,38 +47,38 @@ namespace segmentation{
~FluidSliceTransients()
{
delete input_signals[0];
delete output_signals[0];
delete m_client;
delete inputSignals[0];
delete outputSignals[0];
delete mClient;
}
private:
void setParams(bool instantiation)
{
assert(m_client);
for(size_t i = 0; i < m_client->getParams().size(); ++i)
assert(mClient);
for(size_t i = 0; i < mClient->getParams().size(); ++i)
{
parameter::Instance& p = m_client->getParams()[i];
parameter::Instance& p = mClient->getParams()[i];
if(!instantiation && p.getDescriptor().instantiation())
continue;
switch(p.getDescriptor().getType())
{
case parameter::Type::Long:
p.setLong(in0(i+1));
p.checkRange();
break;
case parameter::Type::Float:
p.setFloat(in0(i+1));
p.checkRange();
break;
case parameter::Type::Buffer:
// p.setBuffer( in0(i+1));
break;
default:
break;
case parameter::Type::kLong:
p.setLong(in0(i + 1));
p.checkRange();
break;
case parameter::Type::kFloat:
p.setFloat(in0(i + 1));
p.checkRange();
break;
case parameter::Type::kBuffer:
// p.setBuffer( in0(i+1));
break;
default:
break;
}
}
}
@ -89,14 +89,14 @@ namespace segmentation{
setParams(false);
const float* input = in(0);
const float inscalar = in0(0);
input_signals[0]->set(const_cast<float*>(input), inscalar);
output_signals[0]->set(out(0), out0(0));
m_client->do_process(std::begin(input_signals),std::end(input_signals),std::begin(output_signals), std::end(output_signals),numsamples,1,1);
inputSignals[0]->set(const_cast<float*>(input), inscalar);
outputSignals[0]->set(out(0), out0(0));
mClient->doProcess(std::begin(inputSignals),std::end(inputSignals),std::begin(outputSignals), std::end(outputSignals),numsamples,1,1);
}
audio_client* m_client;
SignalWrapper* input_signals[1];
SignalWrapper* output_signals[1];
audio_client *mClient;
SignalWrapper *inputSignals[1];
SignalWrapper *outputSignals[1];
};
}
}

@ -31,19 +31,19 @@ namespace stn{
//
//Oh NO! Heap allocation! Make client object
m_client = new stn::TransientsClient<double,float>(65536);
mClient = new stn::TransientsClient<double,float>(65536);
setParams(true);
// m_client->getParams()[0].setLong(pfilter_size);
// m_client->getParams()[1].setLong(hfilter_size);
// m_client->getParams()[2].setLong(window_size);
// m_client->getParams()[3].setLong(hop_size);
// m_client->getParams()[4].setLong(fft_size);
// mClient->geParams()[0].setLong(pfilter_size);
// mClient->geParams()[1].setLong(hfilter_size);
// mClient->geParams()[2].setLong(window_size);
// mClient->geParams()[3].setLong(hop_size);
// mClient->geParams()[4].setLong(fft_size);
bool isOK;
std::string feedback;
std::tie(isOK, feedback) = m_client->sanityCheck();
std::tie(isOK, feedback) = mClient->sanityCheck();
if(!isOK)
{
Print("fdRTHPSS Error: %s",feedback.c_str());
@ -51,15 +51,15 @@ namespace stn{
}
m_client->set_host_buffer_size(bufferSize());
m_client->reset();
mClient->setHostBufferSize(bufferSize());
mClient->reset();
//Work out what signals we need. For now keep it simple:
//in 0 => only audio
//out 0 => only audio
input_signals[0] = new AudioSignalWrapper();
output_signals[0] = new AudioSignalWrapper();
output_signals[1] = new AudioSignalWrapper();
inputSignals[0] = new AudioSignalWrapper();
outputSignals[0] = new AudioSignalWrapper();
outputSignals[1] = new AudioSignalWrapper();
mCalcFunc = make_calc_function<FluidTransients,&FluidTransients::next>();
Unit* unit = this;
@ -68,39 +68,38 @@ namespace stn{
~FluidTransients()
{
delete input_signals[0];
delete output_signals[0];
delete output_signals[1];
delete m_client;
delete inputSignals[0];
delete outputSignals[0];
delete outputSignals[1];
delete mClient;
}
private:
void setParams(bool instantiation)
{
assert(m_client);
for(size_t i = 0; i < m_client->getParams().size(); ++i)
assert(mClient);
for(size_t i = 0; i < mClient->getParams().size(); ++i)
{
parameter::Instance& p = m_client->getParams()[i];
parameter::Instance& p = mClient->getParams()[i];
if(!instantiation && p.getDescriptor().instantiation())
continue;
switch(p.getDescriptor().getType())
{
case parameter::Type::Long:
p.setLong(in0(i+1));
p.checkRange();
break;
case parameter::Type::Float:
p.setFloat(in0(i+1));
p.checkRange();
break;
case parameter::Type::Buffer:
// p.setBuffer( in0(i+1));
break;
default:
break;
case parameter::Type::kLong:
p.setLong(in0(i + 1));
p.checkRange();
break;
case parameter::Type::kFloat:
p.setFloat(in0(i + 1));
p.checkRange();
break;
case parameter::Type::kBuffer:
// p.setBuffer( in0(i+1));
break;
default:
break;
}
}
}
@ -111,15 +110,15 @@ namespace stn{
setParams(false);
const float* input = in(0);
const float inscalar = in0(0);
input_signals[0]->set(const_cast<float*>(input), inscalar);
output_signals[0]->set(out(0), out0(0));
output_signals[1]->set(out(1), out0(1));
m_client->do_process(std::begin(input_signals),std::end(input_signals),std::begin(output_signals), std::end(output_signals),numsamples,1,2);
inputSignals[0]->set(const_cast<float*>(input), inscalar);
outputSignals[0]->set(out(0), out0(0));
outputSignals[1]->set(out(1), out0(1));
mClient->doProcess(std::begin(inputSignals),std::end(inputSignals),std::begin(outputSignals), std::end(outputSignals),numsamples,1,2);
}
stn::TransientsClient<double, float>* m_client;
SignalWrapper* input_signals[1];
SignalWrapper* output_signals[2];
stn::TransientsClient<double, float> *mClient;
SignalWrapper *inputSignals[1];
SignalWrapper *outputSignals[2];
};
}
}

Loading…
Cancel
Save