diff --git a/src/machineLearning/machineLearning.h b/src/machineLearning/machineLearning.h index 3065a5d3a4b9a0815c80c2586233a3adbd028444..c965dff0e92b07c277dba3ac61a9abb68c156d8e 100644 --- a/src/machineLearning/machineLearning.h +++ b/src/machineLearning/machineLearning.h @@ -62,7 +62,7 @@ typedef machineLearning<xmmHmrTool> xmmTemporalRegression; /* typedef machineLearning<GVF> gvf; -*/ +//*/ RAPIDMIX_END_NAMESPACE diff --git a/src/signalProcessing/rapidPiPoTools/rapidPiPoHost.cpp b/src/signalProcessing/rapidPiPoTools/rapidPiPoHost.cpp index 8ad567a95e3048f5f884dc0ed0610486e53e6e5f..6663da43170182caff13ab52db0a34fca1c158fa 100644 --- a/src/signalProcessing/rapidPiPoTools/rapidPiPoHost.cpp +++ b/src/signalProcessing/rapidPiPoTools/rapidPiPoHost.cpp @@ -1,8 +1,10 @@ #include "rapidPiPoHost.h" #include <iostream> +#include <fstream> -//===================== P I P O = H O S T = U T I L S ========================// +//=========================== H O S T === U T I L S ==========================// +/* static const unsigned int maxWordLen = 256; static bool getPiPoInstanceAndAttrName(const char *attrName, @@ -29,6 +31,7 @@ static bool getPiPoInstanceAndAttrName(const char *attrName, return false; } +//*/ static void fromPiPoStreamAttributes(PiPoStreamAttributes &src, @@ -96,7 +99,7 @@ static void toPiPoStreamAttributes(pipoStreamAttributes &src, ); } -//========================= H O S T = M E T H O D S ==========================// +//========================= H O S T === M E T H O D S ========================// PiPoHost::PiPoHost() : inputStreamAttrs(PIPO_MAX_LABELS), @@ -212,7 +215,8 @@ PiPoHost::setAttr(const std::string &attrName, double value) { PiPo::Attr *attr = this->graph->getAttr(attrName.c_str()); - if (attr != NULL) { + if (attr != NULL) + { int iAttr = attr->getIndex(); return this->graph->setAttr(iAttr, value); } @@ -225,15 +229,19 @@ PiPoHost::setAttr(const std::string &attrName, const std::vector<double> &values { PiPo::Attr *attr = this->graph->getAttr(attrName.c_str()); - if (attr != NULL) { + if (attr != NULL) + { int iAttr = attr->getIndex(); double vals[values.size()]; unsigned int i = 0; - for (auto &value : values) { + + for (auto &value : values) + { vals[i] = value; i++; } - return this->graph->setAttr(iAttr, &vals[0], values.size()); + + return this->graph->setAttr(iAttr, &vals[0], static_cast<unsigned int>(values.size())); } return false; @@ -244,15 +252,19 @@ PiPoHost::setAttr(const std::string &attrName, const std::string &value) // for { PiPo::Attr *attr = this->graph->getAttr(attrName.c_str()); - if (attr != NULL) { - int iAttr = attr->getIndex(); + if (attr != NULL) + { + // int iAttr = attr->getIndex(); PiPo::Type type = attr->getType(); - if (type == PiPo::Type::Enum) { + if (type == PiPo::Type::Enum) + { std::vector<const char *> *list = attr->getEnumList(); - for (int i = 0; i < list->size(); i++) { - if (strcmp(list->at(i), value.c_str()) == 0) { + for (int i = 0; i < list->size(); i++) + { + if (strcmp(list->at(i), value.c_str()) == 0) + { attr->set(0, i); return true; } @@ -263,180 +275,215 @@ PiPoHost::setAttr(const std::string &attrName, const std::string &value) // for return false; } - -int -PiPoHost::propagateInputStreamAttributes() +std::vector<std::string> +PiPoHost::getAttrNames() { - if (this->graph != nullptr) + std::vector<std::string> res; + + for (unsigned int i = 0; i < this->graph->getNumAttrs(); ++i) { - return this->graph->streamAttributes(this->inputStreamAttrs.hasTimeTags, - this->inputStreamAttrs.rate, - this->inputStreamAttrs.offset, - this->inputStreamAttrs.dims[0], - this->inputStreamAttrs.dims[1], - this->inputStreamAttrs.labels, - this->inputStreamAttrs.hasVarSize, - this->inputStreamAttrs.domain, - this->inputStreamAttrs.maxFrames); + res.push_back(this->graph->getAttr(i)->getName()); } - - return 0; -} - - - - -// void -// PiPoHost::streamAttributesChanged(PiPo *pipo, PiPo::Attr *attr) { -// this->propagateInputAttributes(); -// } - -// void -// PiPoHost::signalError(PiPo *pipo, std::string errorMsg) { -// // todo -// } - -// void -// PiPoHost::signalWarning(PiPo *pipo, std::string warningMsg) { -// // todo -// } - -//--------------------- INPUT STREAM ATTRIBUTES SETTERS ----------------------// -/* -void -PiPoHost::setInputHasTimeTags(bool hasTimeTags, bool propagate) { - this->inputStreamAttrs.hasTimeTags = hasTimeTags; + return res; +} - if (propagate) { - this->propagateInputAttributes(); - } +double +PiPoHost::getDoubleAttr(const std::string &attrName) +{ + PiPo::Attr *attr = this->graph->getAttr(attrName.c_str()); + + if (attr != NULL) { + // int iAttr = attr->getIndex(); + PiPo::Type type = attr->getType(); + + if (type == PiPo::Type::Double) { + return attr->getDbl(0); + } + } + + return 0; } -#define MIN_PIPO_SAMPLERATE (1.0 / 31536000000.0) // once a year -#define MAX_PIPO_SAMPLERATE (96000000000.0) +std::vector<double> +PiPoHost::getDoubleArrayAttr(const std::string &attrName) +{ + std::vector<double> res; + PiPo::Attr *attr = this->graph->getAttr(attrName.c_str()); + + if (attr != NULL) { + // int iAttr = attr->getIndex(); + PiPo::Type type = attr->getType(); + + if (type == PiPo::Type::Double) { + for (int i = 0; i < attr->getSize(); ++i) { + res.push_back(attr->getDbl(i)); + } + } + } + + return res; +} -void -PiPoHost::setInputFrameRate(double rate, bool propagate) { - if (rate <= MIN_PIPO_SAMPLERATE) { - this->inputStreamAttrs.rate = MIN_PIPO_SAMPLERATE; - } else if (rate >= MAX_PIPO_SAMPLERATE) { - this->inputStreamAttrs.rate = MAX_PIPO_SAMPLERATE; - } else { - this->inputStreamAttrs.rate = rate; - } +std::string +PiPoHost::getEnumAttr(const std::string &attrName) +{ + PiPo::Attr *attr = this->graph->getAttr(attrName.c_str()); + + if (attr != NULL) { + // int iAttr = attr->getIndex(); + PiPo::Type type = attr->getType(); + + if (type == PiPo::Type::Enum) { + return attr->getStr(0); + } + } - if (propagate) { - this->propagateInputAttributes(); - } + return ""; } -void -PiPoHost::setInputFrameOffset(double offset, bool propagate) { - this->inputStreamAttrs.offset = offset; +//============================= JSON FORMATTING ==============================// - if (propagate) { - this->propagateInputAttributes(); - } +std::string +PiPoHost::getJSON() +{ + Json::Value result = toJSON(); + return result.toStyledString(); } void -PiPoHost::setInputDims(int width, int height, bool propagate) { - this->inputStreamAttrs.dims[0] = width; - this->inputStreamAttrs.dims[1] = height; - - if (propagate) { - this->propagateInputAttributes(); - } +PiPoHost::writeJSON(const std::string &filepath) +{ + Json::Value root = toJSON(); + std::ofstream jsonOut; + jsonOut.open (filepath); + Json::StyledStreamWriter writer; + writer.write(jsonOut, root); + jsonOut.close(); } -void -PiPoHost::setInputLabels(const std::vector<std::string> &labels, bool propagate) { - const char *labs[labels.size()]; - - for (unsigned int i = 0; i < labels.size(); ++i) { - labs[i] = labels[i].c_str(); - } - - this->inputStreamAttrs.labels = &labs[0]; - - if (propagate) { - this->propagateInputAttributes(); - } +bool +PiPoHost::putJSON(const std::string &jsonMessage) +{ + Json::Value parsedFromString; + Json::Reader reader; + bool parsingSuccessful = reader.parse(jsonMessage, parsedFromString); + return (parsingSuccessful && fromJSON(parsedFromString)); } -void -PiPoHost::setInputHasVarSize(bool hasVarSize, bool propagate) { - this->inputStreamAttrs.hasVarSize = hasVarSize; - - if (propagate) { - this->propagateInputAttributes(); - } +bool +PiPoHost::readJSON(const std::string &filepath) +{ + Json::Value root; + std::ifstream file(filepath); + file >> root; + return fromJSON(root); } -void -PiPoHost::setInputDomain(double domain, bool propagate) { - this->inputStreamAttrs.domain = domain; +//======================== PROTECTED HOST METHODS ============================// - if (propagate) { - this->propagateInputAttributes(); - } -} - -void -PiPoHost::setInputMaxFrames(int maxFrames, bool propagate) { - this->inputStreamAttrs.maxFrames = maxFrames; +Json::Value +PiPoHost::toJSON() +{ + Json::Value root; + Json::Value metadata; + Json::Value pipodata; - if (propagate) { - this->propagateInputAttributes(); - } -} + metadata["creator"] = "RAPID-MIX API";// C++"; + metadata["version"] = "v0.1.1"; //TODO: This should be a macro someplace + metadata["family"] = "pipo"; + + root["metadata"] = metadata; -//--------------------- INPUT STREAM ATTRIBUTES GETTERS ----------------------// + pipodata["description"] = this->graphName; + + Json::Value inputStream; + inputStream["hasTimeTags"] = inputStreamAttrs.hasTimeTags; + inputStream["rate"] = inputStreamAttrs.rate; + inputStream["offset"] = inputStreamAttrs.offset; + inputStream["width"] = inputStreamAttrs.dims[0]; + inputStream["height"] = inputStreamAttrs.dims[1]; + inputStream["labels"] = inputStreamAttrs.labels; + inputStream["hasVarSize"] = inputStreamAttrs.hasVarSize; + inputStream["domain"] = inputStreamAttrs.domain; + inputStream["maxFrames"] = inputStreamAttrs.maxFrames; + + Json::Value outputStream; + outputStream["hasTimeTags"] = outputStreamAttrs.hasTimeTags; + outputStream["rate"] = outputStreamAttrs.rate; + outputStream["offset"] = outputStreamAttrs.offset; + outputStream["width"] = outputStreamAttrs.dims[0]; + outputStream["height"] = outputStreamAttrs.dims[1]; + outputStream["labels"] = outputStreamAttrs.labels; + outputStream["hasVarSize"] = outputStreamAttrs.hasVarSize; + outputStream["domain"] = outputStreamAttrs.domain; + outputStream["maxFrames"] = outputStreamAttrs.maxFrames; + + Json::Value streams; + streams["input"] = inputStream; + streams["output"] = outputStream; + + pipodata["streamAttributes"] = streams; + + Json::Value params; + int n = this->graph->getNumAttrs(); + params.resize(static_cast<Json::ArrayIndex>(n)); -bool -PiPoHost::getInputHasTimeTags() { - return this->inputStreamAttrs.hasTimeTags; -} + for (unsigned int i = 0; i < n; ++i) + { + Json::Value param; + PiPo::Attr *a = this->graph->getAttr(i); + param["name"] = a->getName(); + param["value"] = a->getDbl(0); + params[i] = param; + } + + pipodata["parameters"] = params; -double -PiPoHost::getInputFrameRate() { - return this->inputStreamAttrs.rate; -} + root["pipodata"] = pipodata; -double -PiPoHost::getInputFrameOffset() { - return this->inputStreamAttrs.offset; + return root; } -void -PiPoHost::getInputDims(int &width, int &height) { - width = this->inputStreamAttrs.dims[0]; - height = this->inputStreamAttrs.dims[1]; -} +bool +PiPoHost::fromJSON(Json::Value &jv) +{ + if (jv["metadata"]["family"].asString().compare("pipo") == 0 && + jv["pipodata"].size() > 0) { -void -PiPoHost::getInputLabels(std::vector<std::string> &labels) { - //for (unsigned int i = 0; i < ) -} + this->setGraph(jv["pipodata"]["description"].asString()); -bool -PiPoHost::getInputHasVarSize() { - return this->inputStreamAttrs.hasVarSize; + Json::Value inputStream = jv["pipodata"]["streamAttributes"]["input"]; + // setInputStreamAttributes( + // inputStream["hasTimeTags"].getDbl()//, + // //... + // ); + return true; + } + + return false; } -double -PiPoHost::getInputDomain() { - return this->inputStreamAttrs.domain; -} +//========================= PRIVATE HOST METHODS =============================// int -PiPoHost::getInputMaxFrames() { - return this->inputStreamAttrs.maxFrames; +PiPoHost::propagateInputStreamAttributes() +{ + if (this->graph != nullptr) + { + return this->graph->streamAttributes(this->inputStreamAttrs.hasTimeTags, + this->inputStreamAttrs.rate, + this->inputStreamAttrs.offset, + this->inputStreamAttrs.dims[0], + this->inputStreamAttrs.dims[1], + this->inputStreamAttrs.labels, + this->inputStreamAttrs.hasVarSize, + this->inputStreamAttrs.domain, + this->inputStreamAttrs.maxFrames); + } + + return 0; } -//*/ - -//--------------------- OUTPUT STREAM ATTRIBUTES GETTERS ---------------------// void PiPoHost::setOutputAttributes(bool hasTimeTags, double rate, double offset, @@ -473,184 +520,28 @@ PiPoHost::setOutputAttributes(bool hasTimeTags, double rate, double offset, this->outputStreamAttrs.maxFrames = maxFrames; } -/* -bool -PiPoHost::getOutputHasTimeTags() { - return this->outputStreamAttrs.hasTimeTags; -} - -double -PiPoHost::getOutputFrameRate() { - return this->outputStreamAttrs.rate; -} - -double -PiPoHost::getOutputFrameOffset() { - return this->outputStreamAttrs.offset; -} - -void -PiPoHost::getOutputDims(int &width, int &height) { - width = this->outputStreamAttrs.dims[0]; - height = this->outputStreamAttrs.dims[1]; -} - -void -PiPoHost::getOutputLabels(std::vector<std::string> &labels) { - labels.clear(); - - for (unsigned int i = 0; this->outputStreamAttrs.numLabels; ++i) { - - if (this->outputStreamAttrs.labels[i] != NULL) { - labels.push_back(std::string(this->outputStreamAttrs.labels[i])); - } else { - labels.push_back("unnamed"); - } - } -} - -bool -PiPoHost::getOutputHasVarSize() { - return this->outputStreamAttrs.hasVarSize; -} - -double -PiPoHost::getOutputDomain() { - return this->outputStreamAttrs.domain; -} - -int -PiPoHost::getOutputMaxFrames() { - return this->outputStreamAttrs.maxFrames; -} - - -//===================== PIPO HOST CLASS IMPLEMENTATION =======================// - -rapidPiPoHost::rapidPiPoHost(rapidPiPoOwner *rpo) : -owner(rpo), -inputStreamAttrs(PIPO_MAX_LABELS), -outputStreamAttrs(PIPO_MAX_LABELS) { - PiPoCollection::init(); - outputter = new rapidPiPoOutputter(this); - chain = nullptr; -} - -rapidPiPoHost::~rapidPiPoHost() { - if (chain != nullptr) { - delete chain; - } - delete outputter; -} - -rapidPiPoOwner * -rapidPiPoHost::getOwner() { - return owner; -} - -void -rapidPiPoHost::onNewFrame(double time, std::vector<PiPoValue> &frame) { - std::cout << time << std::endl; - owner->onNewFrame(frame); -} // void -// rapidPiPoHost::onNewFrame(const std::function<void(std::vector<PiPoValue>, -// rapidPiPoOwner *rpo)> cb) { -// outputter->setFrameCallback(cb); -// } - -// void -// rapidPiPoHost::onNewFrame(std::function<void(std::vector<PiPoValue>)> cb) { -// outputter->setSimpleFrameCallback(cb); -// } - -std::vector<PiPoValue> -rapidPiPoHost::getLastFrame() { - return outputter->getLastFrame(); -} - -rapidPiPo * -rapidPiPoHost::setPiPoChain(std::string name) { - if (chain != nullptr) { - delete chain; - } - - chain = new rapidPiPo(name); - chain->connect((PiPo *)outputter); - return chain; -} - -void -rapidPiPoHost::clearPiPoChain() { - delete chain; - chain = nullptr; -} - -void -rapidPiPoHost::propagateInputAttributes() { - if (chain != nullptr) { - const char *colNameStr[PIPO_MAX_LABELS]; - - unsigned int numCols = this->inputStreamAttrs.dims[0]; - unsigned int numLabels = this->inputStreamAttrs.numLabels; - - if (numLabels > PIPO_MAX_LABELS) { - numLabels = PIPO_MAX_LABELS; - } - - if (numLabels > numCols) { - numLabels = numCols; - } - - std::vector<std::string> labels(numLabels); - - if (numLabels > 0) { - for (unsigned int i = 0; i < numLabels; i++) { - colNameStr[i] = this->inputStreamAttrs.labels[i]; - } - - for (unsigned int i = numLabels; i < numCols; i++) { - colNameStr[i] = "unnamed"; - } - - for (unsigned int i = 0; i < numCols; ++i) { - labels[i] = std::string(colNameStr[i]); - } - } - - chain->streamAttributes(this->inputStreamAttrs.hasTimeTags, - this->inputStreamAttrs.rate, - this->inputStreamAttrs.offset, - this->inputStreamAttrs.dims[0], - this->inputStreamAttrs.dims[1], - labels, - this->inputStreamAttrs.hasVarSize, - this->inputStreamAttrs.domain, - this->inputStreamAttrs.maxFrames); - } -} - -// void -// rapidPiPoHost::streamAttributesChanged(PiPo *pipo, PiPo::Attr *attr) { +// PiPoHost::streamAttributesChanged(PiPo *pipo, PiPo::Attr *attr) { // this->propagateInputAttributes(); // } // void -// rapidPiPoHost::signalError(PiPo *pipo, std::string errorMsg) { +// PiPoHost::signalError(PiPo *pipo, std::string errorMsg) { // // todo // } // void -// rapidPiPoHost::signalWarning(PiPo *pipo, std::string warningMsg) { +// PiPoHost::signalWarning(PiPo *pipo, std::string warningMsg) { // // todo // } //--------------------- INPUT STREAM ATTRIBUTES SETTERS ----------------------// +/* void -rapidPiPoHost::setInputHasTimeTags(bool hasTimeTags, bool propagate) { +PiPoHost::setInputHasTimeTags(bool hasTimeTags, bool propagate) { this->inputStreamAttrs.hasTimeTags = hasTimeTags; if (propagate) { @@ -662,7 +553,7 @@ rapidPiPoHost::setInputHasTimeTags(bool hasTimeTags, bool propagate) { #define MAX_PIPO_SAMPLERATE (96000000000.0) void -rapidPiPoHost::setInputFrameRate(double rate, bool propagate) { +PiPoHost::setInputFrameRate(double rate, bool propagate) { if (rate <= MIN_PIPO_SAMPLERATE) { this->inputStreamAttrs.rate = MIN_PIPO_SAMPLERATE; } else if (rate >= MAX_PIPO_SAMPLERATE) { @@ -677,7 +568,7 @@ rapidPiPoHost::setInputFrameRate(double rate, bool propagate) { } void -rapidPiPoHost::setInputFrameOffset(double offset, bool propagate) { +PiPoHost::setInputFrameOffset(double offset, bool propagate) { this->inputStreamAttrs.offset = offset; if (propagate) { @@ -686,7 +577,7 @@ rapidPiPoHost::setInputFrameOffset(double offset, bool propagate) { } void -rapidPiPoHost::setInputDims(int width, int height, bool propagate) { +PiPoHost::setInputDims(int width, int height, bool propagate) { this->inputStreamAttrs.dims[0] = width; this->inputStreamAttrs.dims[1] = height; @@ -696,7 +587,7 @@ rapidPiPoHost::setInputDims(int width, int height, bool propagate) { } void -rapidPiPoHost::setInputLabels(const std::vector<std::string> &labels, bool propagate) { +PiPoHost::setInputLabels(const std::vector<std::string> &labels, bool propagate) { const char *labs[labels.size()]; for (unsigned int i = 0; i < labels.size(); ++i) { @@ -711,7 +602,7 @@ rapidPiPoHost::setInputLabels(const std::vector<std::string> &labels, bool propa } void -rapidPiPoHost::setInputHasVarSize(bool hasVarSize, bool propagate) { +PiPoHost::setInputHasVarSize(bool hasVarSize, bool propagate) { this->inputStreamAttrs.hasVarSize = hasVarSize; if (propagate) { @@ -720,7 +611,7 @@ rapidPiPoHost::setInputHasVarSize(bool hasVarSize, bool propagate) { } void -rapidPiPoHost::setInputDomain(double domain, bool propagate) { +PiPoHost::setInputDomain(double domain, bool propagate) { this->inputStreamAttrs.domain = domain; if (propagate) { @@ -729,117 +620,121 @@ rapidPiPoHost::setInputDomain(double domain, bool propagate) { } void -rapidPiPoHost::setInputMaxFrames(int maxFrames, bool propagate) { +PiPoHost::setInputMaxFrames(int maxFrames, bool propagate) { this->inputStreamAttrs.maxFrames = maxFrames; if (propagate) { this->propagateInputAttributes(); } } +//*/ //--------------------- INPUT STREAM ATTRIBUTES GETTERS ----------------------// +/* bool -rapidPiPoHost::getInputHasTimeTags() { +PiPoHost::getInputHasTimeTags() { return this->inputStreamAttrs.hasTimeTags; } double -rapidPiPoHost::getInputFrameRate() { +PiPoHost::getInputFrameRate() { return this->inputStreamAttrs.rate; } double -rapidPiPoHost::getInputFrameOffset() { +PiPoHost::getInputFrameOffset() { return this->inputStreamAttrs.offset; } void -rapidPiPoHost::getInputDims(int &width, int &height) { +PiPoHost::getInputDims(int &width, int &height) { width = this->inputStreamAttrs.dims[0]; height = this->inputStreamAttrs.dims[1]; } void -rapidPiPoHost::getInputLabels(std::vector<std::string> &labels) { +PiPoHost::getInputLabels(std::vector<std::string> &labels) { //for (unsigned int i = 0; i < ) } bool -rapidPiPoHost::getInputHasVarSize() { +PiPoHost::getInputHasVarSize() { return this->inputStreamAttrs.hasVarSize; } double -rapidPiPoHost::getInputDomain() { +PiPoHost::getInputDomain() { return this->inputStreamAttrs.domain; } int -rapidPiPoHost::getInputMaxFrames() { +PiPoHost::getInputMaxFrames() { return this->inputStreamAttrs.maxFrames; } +//*/ //--------------------- OUTPUT STREAM ATTRIBUTES GETTERS ---------------------// -void -rapidPiPoHost::setOutputAttributes(bool hasTimeTags, double rate, double offset, - unsigned int width, unsigned int height, - const char **labels, bool hasVarSize, - double domain, unsigned int maxFrames) { - if (labels != NULL) { - int numLabels = width; +// void +// PiPoHost::setOutputAttributes(bool hasTimeTags, double rate, double offset, +// unsigned int width, unsigned int height, +// const char **labels, bool hasVarSize, +// double domain, unsigned int maxFrames) { +// if (labels != NULL) { +// int numLabels = width; - if (numLabels > PIPO_MAX_LABELS) { - numLabels = PIPO_MAX_LABELS; - } +// if (numLabels > PIPO_MAX_LABELS) { +// numLabels = PIPO_MAX_LABELS; +// } - for (unsigned int i = 0; i < numLabels; i++) { - try { - this->outputStreamAttrs.labels[i] = labels[i]; - } catch(std::exception e) { - this->outputStreamAttrs.labels[i] = "unnamed"; - } - } +// for (unsigned int i = 0; i < numLabels; i++) { +// try { +// this->outputStreamAttrs.labels[i] = labels[i]; +// } catch(std::exception e) { +// this->outputStreamAttrs.labels[i] = "unnamed"; +// } +// } - this->outputStreamAttrs.numLabels = numLabels; - } else { - this->outputStreamAttrs.numLabels = 0; - } +// this->outputStreamAttrs.numLabels = numLabels; +// } else { +// this->outputStreamAttrs.numLabels = 0; +// } - this->outputStreamAttrs.hasTimeTags = hasTimeTags; - this->outputStreamAttrs.rate = rate; - this->outputStreamAttrs.offset = offset; - this->outputStreamAttrs.dims[0] = width; - this->outputStreamAttrs.dims[1] = height; - this->outputStreamAttrs.hasVarSize = hasVarSize; - this->outputStreamAttrs.domain = domain; - this->outputStreamAttrs.maxFrames = maxFrames; -} +// this->outputStreamAttrs.hasTimeTags = hasTimeTags; +// this->outputStreamAttrs.rate = rate; +// this->outputStreamAttrs.offset = offset; +// this->outputStreamAttrs.dims[0] = width; +// this->outputStreamAttrs.dims[1] = height; +// this->outputStreamAttrs.hasVarSize = hasVarSize; +// this->outputStreamAttrs.domain = domain; +// this->outputStreamAttrs.maxFrames = maxFrames; +// } +/* bool -rapidPiPoHost::getOutputHasTimeTags() { +PiPoHost::getOutputHasTimeTags() { return this->outputStreamAttrs.hasTimeTags; } double -rapidPiPoHost::getOutputFrameRate() { +PiPoHost::getOutputFrameRate() { return this->outputStreamAttrs.rate; } double -rapidPiPoHost::getOutputFrameOffset() { +PiPoHost::getOutputFrameOffset() { return this->outputStreamAttrs.offset; } void -rapidPiPoHost::getOutputDims(int &width, int &height) { +PiPoHost::getOutputDims(int &width, int &height) { width = this->outputStreamAttrs.dims[0]; height = this->outputStreamAttrs.dims[1]; } void -rapidPiPoHost::getOutputLabels(std::vector<std::string> &labels) { +PiPoHost::getOutputLabels(std::vector<std::string> &labels) { labels.clear(); for (unsigned int i = 0; this->outputStreamAttrs.numLabels; ++i) { @@ -853,33 +748,17 @@ rapidPiPoHost::getOutputLabels(std::vector<std::string> &labels) { } bool -rapidPiPoHost::getOutputHasVarSize() { +PiPoHost::getOutputHasVarSize() { return this->outputStreamAttrs.hasVarSize; } double -rapidPiPoHost::getOutputDomain() { +PiPoHost::getOutputDomain() { return this->outputStreamAttrs.domain; } int -rapidPiPoHost::getOutputMaxFrames() { +PiPoHost::getOutputMaxFrames() { return this->outputStreamAttrs.maxFrames; } - //*/ - -// void -// rapidPiPoHost::setRapidPiPoParam(rapidPiPoParam *param) { -// char instanceName[maxWordLen]; -// char pipoAttrName[maxWordLen]; - -// if (getPiPoInstanceAndAttrName(param->getName(), instanceName, pipoAttrName)) { -// // todo (or not todo) -// } -// } - -// void -// rapidPiPoHost::getPiPoParams(std::vector<rapidPiPoParam> ¶ms) { - -// } diff --git a/src/signalProcessing/rapidPiPoTools/rapidPiPoHost.h b/src/signalProcessing/rapidPiPoTools/rapidPiPoHost.h index dce73408f4df19d1e6f906d7c5facbd29e51b5ab..b898da3e1ed549f74d17818c5d70d4745fe48697 100644 --- a/src/signalProcessing/rapidPiPoTools/rapidPiPoHost.h +++ b/src/signalProcessing/rapidPiPoTools/rapidPiPoHost.h @@ -5,13 +5,18 @@ #include "PiPoHost.h" #include "PiPoCollection.h" +//#ifdef EXTERNAL_JSONCPP_PATH +#define EXTERNAL_JSONCPP_PATH "json.h" +#include EXTERNAL_JSONCPP_PATH +//#endif /* EXTERNAL_JSONCPP_PATH */ + #define MIN_PIPO_SAMPLERATE (1.0 / 31536000000.0) /* once a year */ #define MAX_PIPO_SAMPLERATE (96000000000.0) #define PIPO_OUT_RING_SIZE 2 struct pipoStreamAttributes { - pipoStreamAttributes() : + pipoStreamAttributes() : // default parameters suited for audio hasTimeTags(false), rate(MIN_PIPO_SAMPLERATE), offset(0), @@ -20,12 +25,12 @@ struct pipoStreamAttributes { labels({ "" }), hasVarSize(false), domain(0), - maxFrames(256) {} + maxFrames(1) {} bool hasTimeTags; double rate; double offset; - unsigned int width; // width, height (by pipo convention) + unsigned int width; unsigned int height; std::vector<std::string> labels; bool hasVarSize; @@ -84,11 +89,21 @@ public: // virtual bool isFloatAttr(const std::string &attrName); // virtual bool isFloatArrayAttr(const std::string &attrName); // virtual bool isStringAttr(const std::string &attrName); + + virtual std::vector<std::string> getAttrNames(); - // virtual bool getBoolAttr(const std::string &attrName); - // virtual int getIntAttr(const std::string &attrName); - // virtual float getFloatAttr(const std::string &attrName); + virtual double getDoubleAttr(const std::string &attrName); + virtual std::vector<double> getDoubleArrayAttr(const std::string &attrName); + virtual std::string getEnumAttr(const std::string &attrName); + /** Get a JSON representation of the model in the form of a styled string */ + virtual std::string getJSON(); + /** Write a JSON model description to specified file path */ + virtual void writeJSON(const std::string &filepath); + /** configure empty model with string. See getJSON() */ + virtual bool putJSON(const std::string &jsonMessage); + /** read a JSON file at file path and build a modelSet from it */ + virtual bool readJSON(const std::string &filepath); // int streamAttributes(bool hasTimeTags, double rate, double offset, @@ -134,6 +149,10 @@ public: // void setPiPoParam(PiPoParam *param); //*/ +protected: + Json::Value toJSON(); + bool fromJSON(Json::Value &jv); + private: int propagateInputStreamAttributes(); void setOutputAttributes(bool hasTimeTags, double rate, double offset, @@ -150,8 +169,8 @@ private: PiPoHost *host; std::atomic<int> writeIndex, readIndex; std::vector<std::vector<PiPoValue>> ringBuffer; - //std::function<void(std::vector<PiPoValue>, PiPoObserver *rpo)> frameCallback; - std::function<void(std::vector<PiPoValue>)> simpleFrameCallback; + // std::function<void(std::vector<PiPoValue>, PiPoObserver *rpo)> frameCallback; + // std::function<void(std::vector<PiPoValue>)> simpleFrameCallback; public: PiPoOut(PiPoHost *host) : @@ -212,9 +231,9 @@ public: // frameCallback = f; //} - void setSimpleFrameCallback(std::function<void(std::vector<PiPoValue>)> f) { - simpleFrameCallback = f; - } + // void setSimpleFrameCallback(std::function<void(std::vector<PiPoValue>)> f) { + // simpleFrameCallback = f; + // } std::vector<PiPoValue> getLastFrame() { std::vector<PiPoValue> f; @@ -227,85 +246,4 @@ public: } }; -//================================ PARAMETER =================================// - -// can we avoid using such a class ? -/* -class rapidPiPoParam { - std::string name; - std::string pipoName; - std::string paramName; - std::vector<std::string> values; - -public: - rapidPiPoParam() : - name(""), pipoName(""), paramName("") {} - - rapidPiPoParam(std::string name, std::string pipoName, std::string paramName, - std::vector<std::string> const &values) { - this->name = name; - this->pipoName = pipoName; - this->paramName = paramName; - this->values = std::vector<std::string>(values.size()); - for (int i = 0; i < values.size(); ++i) { - this->values[i] = values[i]; - } - } - - const char *getName() { - return name.c_str(); - } - - const char *getParamName() { - return paramName.c_str(); - } - - const char *getPiPoName() { - return pipoName.c_str(); - } - - int getNumValues() { - return values.size(); - } - - bool isValueInt(int i) { - // todo - return false; - } - - bool isValueFloat(int i) { - // todo - return false; - } - - bool isValueNum(int i) { - // todo; - return false; - } - - float getValueFloat(int i) { - // todo - return 0.; - } - - int getValueInt(int i) { - // todo - return 0; - } - - const char *getValueString() { - return values[0].c_str(); - //return values[i].c_str(); - } - - std::string getValuesAsString() { - std::string res = values[0]; - for (int i = 1; i < values.size(); ++i) { - res += " " + values[i]; - } - return res; - } -}; -//*/ - #endif /* _RAPID_PIPO_HOST_H_ */ diff --git a/src/signalProcessing/rapidPiPoTools/rapidPiPoTools.h b/src/signalProcessing/rapidPiPoTools/rapidPiPoTools.h index 04265de86b4148f1cc711ddea464f330a8439275..d9a2e0efbe555a74e1d9cb032c4b3ec181032d16 100644 --- a/src/signalProcessing/rapidPiPoTools/rapidPiPoTools.h +++ b/src/signalProcessing/rapidPiPoTools/rapidPiPoTools.h @@ -3,7 +3,7 @@ #include "rapidPiPoHost.h" -typedef PiPoHost rapidPiPoHost; -typedef pipoStreamAttributes rapidPiPoStreamAttributes; +typedef PiPoHost pipoHost; +typedef pipoStreamAttributes pipoStreamAttributes; # endif /* _RAPID_PIPO_TOOLS_H_ */ diff --git a/src/signalProcessing/signalProcessing.h b/src/signalProcessing/signalProcessing.h index 43fbfb2e586f6ad21bd7521218b2560e86752b25..3edb4130221dacc5fca21ba8e203ceaaf6713e09 100644 --- a/src/signalProcessing/signalProcessing.h +++ b/src/signalProcessing/signalProcessing.h @@ -23,6 +23,10 @@ typedef maxiFFT FFT; typedef maxiMFCC MFCC; typedef rapidStream rapidStream; //MZ: Best... typedef... EVER! +typedef pipoHost pipoHost; +typedef pipoStreamAttributes pipoStreamAttributes; + + RAPIDMIX_END_NAMESPACE #endif diff --git a/tests/src/test_rapidPiPoTools.cpp b/tests/src/test_rapidPiPoTools.cpp index fd5e06bad2433a6824be38acb36f56b9ebe02e89..38886f89d3186939c036f86cb0ec7ad2ceffb13a 100644 --- a/tests/src/test_rapidPiPoTools.cpp +++ b/tests/src/test_rapidPiPoTools.cpp @@ -15,11 +15,9 @@ #include "catch.hpp" #include "signalProcessing.h" -#define MAX_PATH_SIZE 256 +//#define MAX_PATH_SIZE 256 -//static - -//================================== GMM =====================================// +//=============================== ONSEG TEST =================================// SCENARIO("Test rapidPiPoHost", "[signalProcessing]") { @@ -41,7 +39,7 @@ SCENARIO("Test rapidPiPoHost", "[signalProcessing]") //====================================================================// // instantiate PiPo related classes here : - rapidPiPoHost host; // -> this class is located in rapidPiPoTools + rapidmix::pipoHost host; // -> this class is located in rapidPiPoTools // if we want to add some custom PiPos to our collection : // #include "myCustomPiPo.h" @@ -49,7 +47,7 @@ SCENARIO("Test rapidPiPoHost", "[signalProcessing]") // now we can write : // pipoHost.setChain("myCustomPiPo"); -//#include "PiPoMaximChroma.h" +// #include "PiPoMaximChroma.h" // this one is not part of the default collection : // PiPoCollection::addToCollection("chroma", new PiPoCreator<PiPoMaximChroma>); @@ -75,12 +73,26 @@ SCENARIO("Test rapidPiPoHost", "[signalProcessing]") host.setAttr("onseg.threshold", 9.); host.setAttr("onseg.offthresh", -120.); + std::cout << "onseg threshold : "; + std::cout << host.getDoubleAttr("onseg.threshold") << std::endl; + std::cout << "fft mode : "; + std::cout << host.getEnumAttr("fft.mode") << std::endl; + std::cout << "param names : " << std::endl; + + std::vector<std::string> attrs = host.getAttrNames(); + + for (int i = 0; i < attrs.size(); ++i) + { + std::cout << "- " << attrs[i] << std::endl; + } + + std::cout << host.getJSON() << std::endl; // set another chain : // pipoHost.setChain("chroma"); WHEN("file is processed") { - rapidPiPoStreamAttributes sa; + rapidmix::pipoStreamAttributes sa; sa.hasTimeTags = true; sa.rate = 44100; sa.offset = 0; diff --git a/tests/test_project.xcodeproj/project.pbxproj b/tests/test_project.xcodeproj/project.pbxproj index fea030fad79a57f1fdde7c5fdb8a1d0b5124496f..f34a9bcf8e85e9e3d99ec277a140741ccccc6721 100644 --- a/tests/test_project.xcodeproj/project.pbxproj +++ b/tests/test_project.xcodeproj/project.pbxproj @@ -36,6 +36,7 @@ 311BA31E1EDC7ADE00244DAC /* maximilian.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5A1F1ED8450C00E9FAFA /* maximilian.cpp */; }; 311BA3211EDC7B2400244DAC /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 311BA3201EDC7B2400244DAC /* Accelerate.framework */; }; 311BA3241EDC7BA800244DAC /* DnB-loop-175BPM.wav in CopyFiles */ = {isa = PBXBuildFile; fileRef = 311BA3231EDC7BA400244DAC /* DnB-loop-175BPM.wav */; }; +<<<<<<< HEAD BE2C5F711EDD77B800E9FAFA /* test_RapidLib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EDF1ED8480D00E9FAFA /* test_RapidLib.cpp */; }; BE2C5F751EDD77F100E9FAFA /* machineLearning.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EBE1ED8459300E9FAFA /* machineLearning.cpp */; }; BE2C5F761EDD780000E9FAFA /* modelSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5DF51ED8450E00E9FAFA /* modelSet.cpp */; }; @@ -46,6 +47,47 @@ BE2C5F7B1EDD783200E9FAFA /* jsoncpp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5E081ED8450E00E9FAFA /* jsoncpp.cpp */; }; BE2C5F7C1EDD784100E9FAFA /* trainingData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EC01ED8459300E9FAFA /* trainingData.cpp */; }; BE2C5F7D1EDD784F00E9FAFA /* svm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EED1ED849AA00E9FAFA /* svm.cpp */; }; +======= + 311BA3251EDCE80B00244DAC /* jsoncpp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5E081ED8450E00E9FAFA /* jsoncpp.cpp */; }; + BE2C5E941ED8450E00E9FAFA /* classification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5DEA1ED8450E00E9FAFA /* classification.cpp */; }; + BE2C5E951ED8450E00E9FAFA /* knnClassification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5DF31ED8450E00E9FAFA /* knnClassification.cpp */; }; + BE2C5E961ED8450E00E9FAFA /* modelSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5DF51ED8450E00E9FAFA /* modelSet.cpp */; }; + BE2C5E971ED8450E00E9FAFA /* neuralNetwork.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5DF71ED8450E00E9FAFA /* neuralNetwork.cpp */; }; + BE2C5E981ED8450E00E9FAFA /* regression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5DF91ED8450E00E9FAFA /* regression.cpp */; }; + BE2C5E991ED8450E00E9FAFA /* jsoncpp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5E081ED8450E00E9FAFA /* jsoncpp.cpp */; }; + BE2C5EC81ED8459300E9FAFA /* machineLearning.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EBE1ED8459300E9FAFA /* machineLearning.cpp */; }; + BE2C5EC91ED8459300E9FAFA /* trainingData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EC01ED8459300E9FAFA /* trainingData.cpp */; }; + BE2C5ECA1ED8459300E9FAFA /* rapidStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EC51ED8459300E9FAFA /* rapidStream.cpp */; }; + BE2C5EE81ED8480D00E9FAFA /* test_RapidLib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EDF1ED8480D00E9FAFA /* test_RapidLib.cpp */; }; + BE2C5EEF1ED849AA00E9FAFA /* svm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EED1ED849AA00E9FAFA /* svm.cpp */; }; + BE2C5F121EDD74BC00E9FAFA /* libsvm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F0F1EDD74BC00E9FAFA /* libsvm.cpp */; }; + BE2C5F571EDD74FC00E9FAFA /* BayesianFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F151EDD74FC00E9FAFA /* BayesianFilter.cpp */; }; + BE2C5F581EDD74FC00E9FAFA /* filter_utilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F171EDD74FC00E9FAFA /* filter_utilities.cpp */; }; + BE2C5F591EDD74FC00E9FAFA /* finitedifferences.c in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F1A1EDD74FC00E9FAFA /* finitedifferences.c */; }; + BE2C5F5A1EDD74FC00E9FAFA /* bbpr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F1D1EDD74FC00E9FAFA /* bbpr.cpp */; }; + BE2C5F5B1EDD74FC00E9FAFA /* rpoly.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F1F1EDD74FC00E9FAFA /* rpoly.cpp */; }; + BE2C5F5C1EDD74FC00E9FAFA /* rta_bpf.c in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F241EDD74FC00E9FAFA /* rta_bpf.c */; }; + BE2C5F5D1EDD74FC00E9FAFA /* rta_int.c in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F281EDD74FC00E9FAFA /* rta_int.c */; }; + BE2C5F5E1EDD74FC00E9FAFA /* rta_util.c in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F2E1EDD74FC00E9FAFA /* rta_util.c */; }; + BE2C5F5F1EDD74FC00E9FAFA /* rta_bands.c in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F311EDD74FC00E9FAFA /* rta_bands.c */; }; + BE2C5F601EDD74FC00E9FAFA /* rta_biquad.c in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F331EDD74FC00E9FAFA /* rta_biquad.c */; }; + BE2C5F611EDD74FC00E9FAFA /* rta_correlation.c in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F351EDD74FC00E9FAFA /* rta_correlation.c */; }; + BE2C5F621EDD74FC00E9FAFA /* rta_cubic.c in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F371EDD74FC00E9FAFA /* rta_cubic.c */; }; + BE2C5F631EDD74FC00E9FAFA /* rta_dct.c in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F391EDD74FC00E9FAFA /* rta_dct.c */; }; + BE2C5F641EDD74FC00E9FAFA /* rta_delta.c in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F3B1EDD74FC00E9FAFA /* rta_delta.c */; }; + BE2C5F651EDD74FC00E9FAFA /* rta_fft.c in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F3D1EDD74FC00E9FAFA /* rta_fft.c */; }; + BE2C5F661EDD74FC00E9FAFA /* rta_lifter.c in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F401EDD74FC00E9FAFA /* rta_lifter.c */; }; + BE2C5F671EDD74FC00E9FAFA /* rta_lpc.c in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F421EDD74FC00E9FAFA /* rta_lpc.c */; }; + BE2C5F681EDD74FC00E9FAFA /* rta_mean_variance.c in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F441EDD74FC00E9FAFA /* rta_mean_variance.c */; }; + BE2C5F691EDD74FC00E9FAFA /* rta_mel.c in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F461EDD74FC00E9FAFA /* rta_mel.c */; }; + BE2C5F6A1EDD74FC00E9FAFA /* rta_moments.c in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F481EDD74FC00E9FAFA /* rta_moments.c */; }; + BE2C5F6B1EDD74FC00E9FAFA /* rta_onepole.c in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F4A1EDD74FC00E9FAFA /* rta_onepole.c */; }; + BE2C5F6C1EDD74FC00E9FAFA /* rta_preemphasis.c in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F4C1EDD74FC00E9FAFA /* rta_preemphasis.c */; }; + BE2C5F6D1EDD74FC00E9FAFA /* rta_resample.c in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F4E1EDD74FC00E9FAFA /* rta_resample.c */; }; + BE2C5F6E1EDD74FC00E9FAFA /* rta_selection.c in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F501EDD74FC00E9FAFA /* rta_selection.c */; }; + BE2C5F6F1EDD74FC00E9FAFA /* rta_svd.c in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F521EDD74FC00E9FAFA /* rta_svd.c */; }; + BE2C5F701EDD74FC00E9FAFA /* rta_window.c in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F541EDD74FC00E9FAFA /* rta_window.c */; }; +>>>>>>> 912f95ac3e65fa90db8c7586e29f9d8b800dbdcc /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -735,9 +777,9 @@ BE2C5EDD1ED8480D00E9FAFA /* src */ = { isa = PBXGroup; children = ( + BE2C5EE01ED8480D00E9FAFA /* test_rapidmix-api.cpp */, BE2C5EDE1ED8480D00E9FAFA /* test_gvf.cpp */, BE2C5EDF1ED8480D00E9FAFA /* test_RapidLib.cpp */, - BE2C5EE01ED8480D00E9FAFA /* test_rapidmix-api.cpp */, BE2C5EE11ED8480D00E9FAFA /* test_rapidPiPoTools.cpp */, BE2C5EE21ED8480D00E9FAFA /* test_rapidXmmTools.cpp */, BE2C5EE31ED8480D00E9FAFA /* test_signalProcessing.cpp */, @@ -1062,11 +1104,11 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 0BFFEF251E56083C00EF19A5 /* test_RapidLib */, 0BFFEF1A1E56082700EF19A5 /* test_GVF */, + 0BFFEF251E56083C00EF19A5 /* test_RapidLib */, + 31D7B7121E6B048100917757 /* test_rapidPiPoTools */, 0BFFEF301E56085C00EF19A5 /* test_rapidXmmTools */, 0BFFEF3E1E5608C000EF19A5 /* test_signalProcessing */, - 31D7B7121E6B048100917757 /* test_rapidPiPoTools */, ); }; /* End PBXProject section */ @@ -1133,13 +1175,14 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 311BA3101EDC746F00244DAC /* test_rapidPiPoTools.cpp in Sources */, + 311BA3111EDC747A00244DAC /* rapidPiPoHost.cpp in Sources */, 311BA31A1EDC7ADE00244DAC /* fft.cpp in Sources */, 311BA31B1EDC7ADE00244DAC /* maxiBark.cpp in Sources */, 311BA31C1EDC7ADE00244DAC /* maxiFFT.cpp in Sources */, 311BA31D1EDC7ADE00244DAC /* maxiMFCC.cpp in Sources */, 311BA31E1EDC7ADE00244DAC /* maximilian.cpp in Sources */, - 311BA3101EDC746F00244DAC /* test_rapidPiPoTools.cpp in Sources */, - 311BA3111EDC747A00244DAC /* rapidPiPoHost.cpp in Sources */, + 311BA3251EDCE80B00244DAC /* jsoncpp.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };