Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
No results found
Show changes
Showing
with 1835 additions and 1936 deletions
/*
* trainingData.cpp
* Created by Michael Zbyszynski on 2 Feb 2017
* Copyright © 2017 Goldsmiths. All rights reserved.
/**
* @file trainingData.cpp
* @author Michael Zbyszynski
* @date 2 Feb 2017
* @copyright Copyright © 2017 Goldsmiths. All rights reserved.
*/
#include <fstream>
#include "trainingData.h"
RAPIDMIX_BEGIN_NAMESPACE
trainingData::trainingData () {
phrase defaultPhrase = {0, "default"};
trainingSet.push_back(defaultPhrase);
currentId = 1;
targetPhrase = 0;
};
uint32_t trainingData::assignCurrentId() {
uint32_t returnVal = currentId;
++currentId;
return returnVal;
}
uint32_t trainingData::startRecording() {
phrase tempPhrase = { assignCurrentId(), std::to_string(tempPhrase.uniqueId) }; //TODO: Is this label helpful? -MZ
trainingSet.push_back(tempPhrase);
targetPhrase = int(trainingSet.size() - 1);
return tempPhrase.uniqueId;
};
uint32_t trainingData::startRecording(std::string label) {
phrase tempPhrase = { assignCurrentId(), label };
labels.insert(std::make_pair(label, labels.size()));
trainingSet.push_back(tempPhrase);
targetPhrase = int(trainingSet.size() - 1);
return tempPhrase.uniqueId;
};
uint32_t trainingData::addElement(std::vector<double>input, std::vector<double> output) {
element newElement;
newElement.uniqueId = assignCurrentId();
newElement.input = input;
newElement.output = output;
newElement.timeStamp = NULL;
trainingSet[targetPhrase].elements.push_back(newElement);
return newElement.uniqueId;
}
void trainingData::stopRecording() {
targetPhrase = 0; //direct elements to default phrase
}
std::string trainingData::getLabel(int value) {
std::string theLabel = "not found";
for (const auto& element : labels) {
if (element.second == value) {
theLabel = element.first;
}
namespace rapidmix {
trainingData::trainingData () {
currentId = 0;
targetPhrase = 0;
};
uint32_t trainingData::assignCurrentId() {
uint32_t returnVal = currentId;
++currentId;
return returnVal;
}
return theLabel;
}
std::vector<std::string> trainingData::getColumnNames() {
return trainingSet[targetPhrase].columnNames;
}
void trainingData::setColumnNames(std::vector<std::string> column_names) {
trainingSet[targetPhrase].columnNames = column_names;
}
Json::Value trainingData::parse2json() {
Json::Value root;
Json::Value metadata;
Json::Value trainingSetJSON;
metadata["creator"] = "RAPID-MIX API C++";
metadata["version"] = RAPIDMIX_VERSION;
//Go through all the phrases
for (int i = 0; i < trainingSet.size(); ++i) {
Json::Value thisPhrase;
thisPhrase.append(trainingSet[i].uniqueId);
thisPhrase.append(trainingSet[i].label);
Json::Value column_names;
for (int j = 0; j < trainingSet[i].columnNames.size(); ++j) {
column_names.append(trainingSet[i].columnNames[j]);
}
thisPhrase.append(column_names);
std::vector<trainingData::phrase>::iterator trainingData::createNewPhrase(std::string label) {
phrase tempPhrase = { assignCurrentId(), label };
trainingSet.push_back(tempPhrase);
std::vector<trainingData::phrase>::iterator it = --trainingSet.end();
return it;
};
uint32_t trainingData::startRecording() {
phrase tempPhrase = { assignCurrentId(), std::to_string(tempPhrase.uniqueId) }; //TODO: Is this label helpful? -MZ
trainingSet.push_back(tempPhrase);
targetPhrase = int(trainingSet.size() - 1);
return tempPhrase.uniqueId;
};
uint32_t trainingData::startRecording(const std::string &label) {
phrase tempPhrase = { assignCurrentId(), label };
trainingSet.push_back(tempPhrase);
targetPhrase = int(trainingSet.size() - 1);
return tempPhrase.uniqueId;
Json::Value elements;
for (int j = 0; j < trainingSet[i].elements.size(); ++j) {
Json::Value singleElement;
};
uint32_t trainingData::addElement(const std::vector<double> &input, const std::vector<double> &output) {
element newElement;
newElement.uniqueId = assignCurrentId();
newElement.input = input;
newElement.output = output;
newElement.timeStamp = 0.0;
trainingSet[targetPhrase].elements.push_back(newElement);
return newElement.uniqueId;
}
uint32_t trainingData::addElement(const std::vector<double> &input) {
element newElement;
newElement.uniqueId = assignCurrentId();
newElement.input = input;
newElement.timeStamp = 0.0;
trainingSet[targetPhrase].elements.push_back(newElement);
return newElement.uniqueId;
}
void trainingData::stopRecording() {
//TODO: This doesn't do much. -MZ
}
uint32_t trainingData::recordSingleElement(const std::string &label, const std::vector<double> &input) {
startRecording(label);
int returnId = addElement(input);
stopRecording();
return returnId;
};
uint32_t trainingData::recordSingleElement(const std::vector<double> &input, const std::vector<double> &output) {
startRecording();
int returnId = addElement(input, output);
stopRecording();
return returnId;
};
uint32_t trainingData::recordSingleElement(const std::string &label, const std::vector<double> &input, const std::vector<double> &output) {
startRecording(label);
int returnId = addElement(input, output);
stopRecording();
return returnId;
};
std::vector<std::string> trainingData::getColumnNames() {
return trainingSet[targetPhrase].columnNames;
}
void trainingData::setColumnNames(const std::vector<std::string> &column_names) {
trainingSet[targetPhrase].columnNames = column_names;
}
Json::Value trainingData::parse2json() {
Json::Value root;
Json::Value metadata;
Json::Value trainingSetJSON;
metadata["creator"] = "RAPID-MIX API C++";
metadata["version"] = RAPIDMIX_VERSION;
//Go through all the phrases
for (int i = 0; i < trainingSet.size(); ++i) {
Json::Value thisPhrase;
thisPhrase.append(trainingSet[i].uniqueId);
thisPhrase.append(trainingSet[i].label);
Json::Value elementInput;
for (int k = 0; k < trainingSet[i].elements[j].input.size(); ++k) {
elementInput.append(trainingSet[i].elements[j].input[k]);
Json::Value column_names;
for (int j = 0; j < trainingSet[i].columnNames.size(); ++j) {
column_names.append(trainingSet[i].columnNames[j]);
}
singleElement.append(elementInput);
thisPhrase.append(column_names);
Json::Value elementOutput;
for (int k = 0; k < trainingSet[i].elements[j].output.size(); ++k) {
elementOutput.append(trainingSet[i].elements[j].output[k]);
Json::Value elements;
for (int j = 0; j < trainingSet[i].elements.size(); ++j) {
Json::Value singleElement;
Json::Value elementInput;
for (int k = 0; k < trainingSet[i].elements[j].input.size(); ++k) {
elementInput.append(trainingSet[i].elements[j].input[k]);
}
singleElement.append(elementInput);
Json::Value elementOutput;
for (int k = 0; k < trainingSet[i].elements[j].output.size(); ++k) {
elementOutput.append(trainingSet[i].elements[j].output[k]);
}
singleElement.append(elementOutput);
singleElement.append(trainingSet[i].elements[j].timeStamp);
elements.append(singleElement);
}
singleElement.append(elementOutput);
thisPhrase.append(elements);
singleElement.append(trainingSet[i].elements[j].timeStamp);
elements.append(singleElement);
trainingSetJSON.append(thisPhrase);
}
thisPhrase.append(elements);
trainingSetJSON.append(thisPhrase);
root["metadata"] = metadata;
root["trainingSet"] = trainingSetJSON;
return root;
}
root["metadata"] = metadata;
root["trainingSet"] = trainingSetJSON;
return root;
}
std::string trainingData::getJSON() {
Json::Value root = parse2json();
return root.toStyledString();
}
void trainingData::writeJSON(const std::string &filepath) {
Json::Value root = parse2json();
std::ofstream jsonOut;
jsonOut.open (filepath);
Json::StyledStreamWriter writer;
writer.write(jsonOut, root);
jsonOut.close();
}
void trainingData::json2trainingSet(const Json::Value &root) {
trainingSet = {};
for (const Json::Value& jsonPhrase : root["trainingSet"]) {
std::string trainingData::getJSON() {
Json::Value root = parse2json();
return root.toStyledString();
}
phrase tempPhrase = { jsonPhrase[0].asUInt(), jsonPhrase[1].asString() };
for (int i = 0; i < jsonPhrase[2].size(); ++i) {
tempPhrase.columnNames.push_back(jsonPhrase[2][i].asString());
}
void trainingData::writeJSON(const std::string &filepath) {
Json::Value root = parse2json();
std::ofstream jsonOut;
jsonOut.open (filepath);
Json::StyledStreamWriter writer;
writer.write(jsonOut, root);
jsonOut.close();
for (int i = 0; i < jsonPhrase[3].size(); ++i) {
element tempElement;
for (int j = 0; j < jsonPhrase[3][i][0].size(); ++j) {
tempElement.input.push_back(jsonPhrase[3][i][0][j].asDouble());
}
for (int j = 0; j < jsonPhrase[3][i][1].size(); ++j) {
tempElement.output.push_back(jsonPhrase[3][i][1][j].asDouble());
}
void trainingData::json2trainingSet(const Json::Value &root) {
trainingSet = {};
for (const Json::Value& jsonPhrase : root["trainingSet"]) {
phrase tempPhrase = { jsonPhrase[0].asUInt(), jsonPhrase[1].asString() };
for (int i = 0; i < jsonPhrase[2].size(); ++i) {
tempPhrase.columnNames.push_back(jsonPhrase[2][i].asString());
}
tempElement.timeStamp = jsonPhrase[3][i][2].asDouble();
tempPhrase.elements.push_back(tempElement);
for (int i = 0; i < jsonPhrase[3].size(); ++i) {
element tempElement;
for (int j = 0; j < jsonPhrase[3][i][0].size(); ++j) {
tempElement.input.push_back(jsonPhrase[3][i][0][j].asDouble());
}
for (int j = 0; j < jsonPhrase[3][i][1].size(); ++j) {
tempElement.output.push_back(jsonPhrase[3][i][1][j].asDouble());
}
tempElement.timeStamp = jsonPhrase[3][i][2].asDouble();
tempPhrase.elements.push_back(tempElement);
}
trainingSet.push_back(tempPhrase);
}
trainingSet.push_back(tempPhrase);
}
}
bool trainingData::putJSON(const std::string &jsonMessage) {
Json::Value parsedFromString;
Json::Reader reader;
bool parsingSuccessful = reader.parse(jsonMessage, parsedFromString);
if (parsingSuccessful)
{
json2trainingSet(parsedFromString);
bool trainingData::putJSON(const std::string &jsonMessage) {
Json::Value parsedFromString;
Json::Reader reader;
bool parsingSuccessful = reader.parse(jsonMessage, parsedFromString);
if (parsingSuccessful)
{
json2trainingSet(parsedFromString);
}
return parsingSuccessful;
}
return parsingSuccessful;
}
bool trainingData::readJSON(const std::string &filepath) {
Json::Value root;
std::ifstream file(filepath);
file >> root;
json2trainingSet(root);
return true; //TODO: check something first
bool trainingData::readJSON(const std::string &filepath) {
Json::Value root;
std::ifstream file(filepath);
file >> root;
json2trainingSet(root);
return true; //TODO: check something first
}
}
RAPIDMIX_END_NAMESPACE
/*
* trainingData.h
* Created by Michael Zbyszynski on 2 Feb 2017
/**
* @file trainingData.h
* @author Michael Zbyszynski
* @date 2 Feb 2017
* @copyright
* Copyright © 2017 Goldsmiths. All rights reserved.
*
* @ingroup machinelearning
*/
#ifndef trainingData_h
......@@ -11,75 +15,100 @@
#include <string>
#include <unordered_map>
#include "rapidMix.h"
#include "../rapidmix.h"
#include "json.h"
RAPIDMIX_BEGIN_NAMESPACE
/** This is used by both NN and KNN models for training */
class trainingData {
public:
trainingData();
namespace rapidmix {
struct element{
uint32_t uniqueId; //MZ: Does this scope of this id need to extend beyond this instantiation?
std::vector<double> input;
std::vector<double> output;
double timeStamp;
/** This is used by both NN and KNN models for training */
class trainingData {
public:
trainingData();
struct element{
uint32_t uniqueId; //MZ: Does this scope of this id need to extend beyond this instantiation?
std::vector<double> input;
std::vector<double> output;
double timeStamp;
};
struct phrase {
uint32_t uniqueId;
std::string label; //TODO: Need to work this with templates
std::vector<std::string> columnNames; //equal to the number of inputs
std::vector<element> elements;
//TODO: This is just a design idea right now.
void addElement (const std::vector<double> &input, const std::vector<double> &output)
{
element tempElement;
// tempElement.uniqueId = assignCurrentId(); //TODO: how to do this? Do we need this?
tempElement.input = input;
tempElement.output = output;
//tempElement.timeStamp = NULL;
this->elements.push_back(tempElement);
}
};
std::vector<phrase> trainingSet;
//TODO: Deleting phrases (last or by label)
//Design ideas to make phrase building stateless:
std::vector<phrase>::iterator createNewPhrase(); //??? Do we need this?
std::vector<phrase>::iterator createNewPhrase(std::string label);
/** Create a new phrase that can be recorded into. Returns phrase id */
uint32_t startRecording(); //FIXME: this should go away. -MZ
/** Create new phrase, with a label, that can be recorded into. Returns phrase id */
uint32_t startRecording(const std::string &label);
/** Add an element with input and output to the phrase that is recording,
or to the default phrase if recording is stopped. Returns phrase id. */
uint32_t addElement(const std::vector<double> &input, const std::vector<double> &output);
/** Add an element with just input to the phrase that is recording,
or to the default phrase if recording is stopped. Returns phrase id. */
uint32_t addElement(const std::vector<double> &input);
void stopRecording();
/** Create a phrase with a single element that has a label and input. Returns phrase id. */
uint32_t recordSingleElement(const std::string &label, const std::vector<double> &input);
/** Create a phrase with a single element that has input, and output. Returns phrase id. */
uint32_t recordSingleElement(const std::vector<double> &input, const std::vector<double> &output);
/** Create a phrase with a single element that has a label, input, and output. Returns phrase id. */
uint32_t recordSingleElement(const std::string &label, const std::vector<double> &input, const std::vector<double> &output);
std::vector<std::string> getColumnNames();
void setColumnNames(const std::vector<std::string> &columnNames);
/** Get a JSON representation of the data set in the form of a styled string */
std::string getJSON();
/** Write a JSON version of the training set to specified file path */
void writeJSON(const std::string &filepath);
/** populate a data set with string. See getJSON() */
bool putJSON(const std::string &jsonMessage);
/** read a JSON file at file path and build a training set from it */
bool readJSON(const std::string &filepath);
private:
int targetPhrase;
uint32_t currentId;
//* Returns and increments current id */
uint32_t assignCurrentId();
Json::Value parse2json();
void json2trainingSet(const Json::Value &newTrainingData);
};
struct phrase {
uint32_t uniqueId;
std::string label; //TODO: Need to work this with templates
std::vector<std::string> columnNames;
std::vector<element> elements;
};
std::vector<phrase> trainingSet;
//* Create a new phrase that can be recorded into. Returns phrase id */
uint32_t startRecording();
//* Create new phrase, with a label, that can be recorded into. Returns phrase id */
uint32_t startRecording(std::string label);
//* Add an element to the phrase that is recording, or to the default phrase if recording is stopped. Returns phrase id. */
uint32_t addElement(std::vector<double>input, std::vector<double> output);
void stopRecording();
std::vector<std::string> getColumnNames();
void setColumnNames(std::vector<std::string> columnNames);
/** Get a JSON representation of the data set in the form of a styled string */
std::string getJSON();
/** Write a JSON version of the training set to specified file path */
void writeJSON(const std::string &filepath);
/** populate a data set with string. See getJSON() */
bool putJSON(const std::string &jsonMessage);
/** read a JSON file at file path and build a training set from it */
bool readJSON(const std::string &filepath);
//this holds string labels
std::unordered_map<std::string, int> labels;
std::string getLabel(int value);
private:
int targetPhrase;
uint32_t currentId;
//* Returns and increments current id */
uint32_t assignCurrentId();
Json::Value parse2json();
void json2trainingSet(const Json::Value &newTrainingData);
};
RAPIDMIX_END_NAMESPACE
}
#endif
/*
* rapidmix.h
* Created by Michael Zbyszynski on 12 Jan 2017
/**
* @file rapidmix.h
* @author Michael Zbyszynski
* @date 12 Jan 2017
*
* @copyright
* Copyright © 2017 Goldsmiths. All rights reserved.
*/
/**
* @mainpage RAPID-MIX API
*
* @section Introduction
*
* Hello, API ! <br>
* All the classes, functions and structs documented here belong to the
* <code>rapidmix</code> namespace.
*
* @section Examples
* @subsection Simple classification
* TODO
*/
/////////////////////////////////////////////////////////////////////////////
// ______ _ _ ___ ____ ___ ______ _____ //
// | ___ \ (_) | | | \/ (_) / _ \ | ___ \_ _| //
......@@ -19,16 +36,14 @@
#define rapidmix_h
#define RAPIDMIX_VERSION_MAJOR 2
#define RAPIDMIX_VERSION_MINOR 0
#define RAPIDMIX_VERSION_MINOR 3
#define RAPIDMIX_VERSION_PATCH 0
#define RAPIDMIX_VERSION "2.0.0"
#define RAPIDMIX_REVISION "31-May-2017"
#define RAPIDMIX_BEGIN_NAMESPACE namespace rapidmix {
#define RAPIDMIX_END_NAMESPACE }
#define RAPIDMIX_VERSION "2.3.1"
#define RAPIDMIX_JSON_DOC_VERSION "1.0.0"
#define RAPIDMIX_REVISION "2-MAY-2018"
#include "machineLearning.h"
#include "trainingData.h"
#include "signalProcessing.h"
#include "machineLearning/machineLearning.h"
#include "machineLearning/trainingData.h"
#include "signalProcessing/signalProcessing.h"
#endif
#include "rapidmix.h"
#include "rapidPiPoHost.h"
#include <iostream>
#include <fstream>
//=========================== H O S T === U T I L S ==========================//
/*
static const unsigned int maxWordLen = 256;
static bool getPiPoInstanceAndAttrName(const char *attrName,
char *instanceName,
char *pipoAttrName)
{
const char *dot = std::strrchr(attrName, '.');
if (dot != NULL)
{
long pipoAttrNameLen = dot - attrName;
std::strcpy(pipoAttrName, dot + 1);
if (pipoAttrNameLen > maxWordLen)
{
pipoAttrNameLen = maxWordLen;
}
std::strncpy(instanceName, attrName, pipoAttrNameLen);
instanceName[pipoAttrNameLen] = '\0';
return true;
}
return false;
}
//*/
static void fromPiPoStreamAttributes(PiPoStreamAttributes &src,
pipoStreamAttributes &dst)
RapidPiPoStreamAttributes &dst)
{
unsigned int numCols = src.dims[0];
unsigned int numLabels = src.numLabels;
if (numLabels > PIPO_MAX_LABELS) {
numLabels = PIPO_MAX_LABELS;
}
if (numLabels > numCols) {
numLabels = numCols;
}
......@@ -76,7 +47,7 @@ static void fromPiPoStreamAttributes(PiPoStreamAttributes &src,
}
static void toPiPoStreamAttributes(pipoStreamAttributes &src,
static void toPiPoStreamAttributes(RapidPiPoStreamAttributes &src,
PiPoStreamAttributes &dst)
{
const char *labs[src.labels.size()];
......@@ -101,258 +72,31 @@ static void toPiPoStreamAttributes(pipoStreamAttributes &src,
//========================= H O S T === M E T H O D S ========================//
PiPoHost::PiPoHost() :
inputStreamAttrs(PIPO_MAX_LABELS),
outputStreamAttrs(PIPO_MAX_LABELS)
{
PiPoCollection::init();
this->out = new PiPoOut(this);
this->graph = nullptr;
}
PiPoHost::~PiPoHost()
{
if (this->graph != nullptr)
{
delete this->graph;
}
delete this->out;
}
bool
PiPoHost::setGraph(std::string name)
{
if (this->graph != nullptr)
{
delete this->graph;
}
this->graph = PiPoCollection::create(name);
if (this->graph != NULL)
{
this->graphName = name;
this->graph->setReceiver((PiPo *)this->out);
return true;
}
this->graph = nullptr;
this->graphName = "undefined";
return false;
}
void
PiPoHost::clearGraph()
{
if (this->graph != nullptr)
{
delete this->graph;
this->graph = nullptr;
}
}
void
PiPoHost::onNewFrameOut(double time, std::vector<PiPoValue> &frame)
{
std::cout << time << std::endl;
std::cout << "please override this method" << std::endl;
}
std::vector<PiPoValue>
PiPoHost::getLastFrameOut()
{
return this->out->getLastFrame();
}
int
PiPoHost::setInputStreamAttributes(pipoStreamAttributes &sa, bool propagate)
RapidPiPoHost::setInputStreamAttributes(RapidPiPoStreamAttributes &rpsa)
{
toPiPoStreamAttributes(sa, inputStreamAttrs);
if (propagate)
{
return this->propagateInputStreamAttributes();
}
return 0;
PiPoStreamAttributes psa;
toPiPoStreamAttributes(rpsa, psa);
return PiPoHost::setInputStreamAttributes(psa);
}
pipoStreamAttributes
PiPoHost::getOutputStreamAttributes()
{
pipoStreamAttributes sa;
fromPiPoStreamAttributes(this->outputStreamAttrs, sa);
return sa;
}
int
PiPoHost::frames(double time, double weight, PiPoValue *values, unsigned int size,
unsigned int num)
{
return this->graph->frames(time, weight, values, size, num);
}
// bool
// setAttr(const std::string &attrName, bool value)
// {
// }
// bool
// setAttr(const std::string &attrName, int value)
// {
// }
bool
PiPoHost::setAttr(const std::string &attrName, double value)
{
PiPo::Attr *attr = this->graph->getAttr(attrName.c_str());
if (attr != NULL)
{
int iAttr = attr->getIndex();
return this->graph->setAttr(iAttr, value);
}
return false;
}
bool
PiPoHost::setAttr(const std::string &attrName, const std::vector<double> &values)
{
PiPo::Attr *attr = this->graph->getAttr(attrName.c_str());
if (attr != NULL)
{
int iAttr = attr->getIndex();
double vals[values.size()];
unsigned int i = 0;
for (auto &value : values)
{
vals[i] = value;
i++;
}
return this->graph->setAttr(iAttr, &vals[0], static_cast<unsigned int>(values.size()));
}
return false;
}
bool
PiPoHost::setAttr(const std::string &attrName, const std::string &value) // for enums
{
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)
{
std::vector<const char *> *list = attr->getEnumList();
for (int i = 0; i < list->size(); i++)
{
if (strcmp(list->at(i), value.c_str()) == 0)
{
attr->set(0, i);
return true;
}
}
}
}
return false;
}
std::vector<std::string>
PiPoHost::getAttrNames()
{
std::vector<std::string> res;
for (unsigned int i = 0; i < this->graph->getNumAttrs(); ++i)
{
res.push_back(this->graph->getAttr(i)->getName());
}
return res;
}
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;
}
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;
}
std::string
PiPoHost::getEnumAttr(const std::string &attrName)
void
RapidPiPoHost::onNewFrame(double time, double weight, PiPoValue *values, unsigned int size)
{
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);
}
}
return "";
std::cout << "I received " << size << " new frame(s)" << std::endl;
}
//============================= JSON FORMATTING ==============================//
//----------------------------- JSON FORMATTING ------------------------------//
std::string
PiPoHost::getJSON()
RapidPiPoHost::getJSON()
{
Json::Value result = toJSON();
return result.toStyledString();
}
void
PiPoHost::writeJSON(const std::string &filepath)
RapidPiPoHost::writeJSON(const std::string &filepath)
{
Json::Value root = toJSON();
std::ofstream jsonOut;
......@@ -363,7 +107,7 @@ PiPoHost::writeJSON(const std::string &filepath)
}
bool
PiPoHost::putJSON(const std::string &jsonMessage)
RapidPiPoHost::putJSON(const std::string &jsonMessage)
{
Json::Value parsedFromString;
Json::Reader reader;
......@@ -372,7 +116,7 @@ PiPoHost::putJSON(const std::string &jsonMessage)
}
bool
PiPoHost::readJSON(const std::string &filepath)
RapidPiPoHost::readJSON(const std::string &filepath)
{
Json::Value root;
std::ifstream file(filepath);
......@@ -380,23 +124,26 @@ PiPoHost::readJSON(const std::string &filepath)
return fromJSON(root);
}
//======================== PROTECTED HOST METHODS ============================//
//-------------------------- PRIVATE HOST METHODS ----------------------------//
Json::Value
PiPoHost::toJSON()
RapidPiPoHost::toJSON()
{
Json::Value root;
Json::Value metadata;
Json::Value pipodata;
metadata["creator"] = "RAPID-MIX API";// C++";
metadata["version"] = "v0.1.1"; //TODO: This should be a macro someplace
metadata["family"] = "pipo";
root["metadata"] = metadata;
//*
root["docType"] = "rapid-mix:signal-processing";
root["docVersion"] = RAPIDMIX_JSON_DOC_VERSION;
Json::Value target;
target["name"] = "pipo";
target["version"] = PIPO_SDK_VERSION;
root["target"] = target;
Json::Value pipodata;
pipodata["description"] = this->graphName;
Json::Value inputStream;
inputStream["hasTimeTags"] = inputStreamAttrs.hasTimeTags;
inputStream["rate"] = inputStreamAttrs.rate;
......@@ -407,7 +154,7 @@ PiPoHost::toJSON()
inputStream["hasVarSize"] = inputStreamAttrs.hasVarSize;
inputStream["domain"] = inputStreamAttrs.domain;
inputStream["maxFrames"] = inputStreamAttrs.maxFrames;
Json::Value outputStream;
outputStream["hasTimeTags"] = outputStreamAttrs.hasTimeTags;
outputStream["rate"] = outputStreamAttrs.rate;
......@@ -422,9 +169,9 @@ PiPoHost::toJSON()
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));
......@@ -434,331 +181,111 @@ PiPoHost::toJSON()
Json::Value param;
PiPo::Attr *a = this->graph->getAttr(i);
param["name"] = a->getName();
param["value"] = a->getDbl(0);
switch (a->getType())
{
case PiPo::Bool:
param["type"] = "Bool";
param["value"] = a->getInt(0);
break;
case PiPo::Enum:
param["type"] = "Enum";
param["value"] = std::string(a->getStr(0));
break;
case PiPo::String:
param["type"] = "String";
param["value"] = std::string(a->getStr(0));
break;
case PiPo::Int:
param["type"] = "Int";
param["value"] = Json::Value(Json::arrayValue);
for (int i = 0; i < a->getSize(); ++i)
{
param["value"].append(a->getInt(i));
}
break;
case PiPo::Double:
param["type"] = "Double";
param["value"] = Json::Value(Json::arrayValue);
for (int i = 0; i < a->getSize(); ++i)
{
param["value"].append(a->getDbl(i));
}
break;
default:
std::cout << a->getType() << std::endl;
break;
}
params[i] = param;
}
pipodata["parameters"] = params;
root["pipodata"] = pipodata;
root["payload"] = pipodata;
//*/
return root;
}
bool
PiPoHost::fromJSON(Json::Value &jv)
RapidPiPoHost::fromJSON(Json::Value &jv)
{
if (jv["metadata"]["family"].asString().compare("pipo") == 0 &&
jv["pipodata"].size() > 0) {
//*
if (jv["docType"].asString().compare("rapid-mix:signal-processing") == 0 &&
//jv["docVersion"].asString().compare(RAPIDMIX_JSON_DOC_VERSION) == 0 &&
jv["target"]["name"].asString().compare("pipo") == 0 &&
jv["payload"].size() > 0) {
this->setGraph(jv["pipodata"]["description"].asString());
Json::Value inputStream = jv["pipodata"]["streamAttributes"]["input"];
// setInputStreamAttributes(
// inputStream["hasTimeTags"].getDbl()//,
// //...
// );
return true;
}
return false;
}
this->setGraph(jv["payload"]["description"].asString());
//========================= PRIVATE HOST METHODS =============================//
Json::Value params = jv["payload"]["parameters"];
unsigned int nAttrs = params.size();
int
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;
}
for (unsigned int i = 0; i < nAttrs; ++i)
{
std::string type = params[i]["type"].asString();
const char *name = params[i]["name"].asString().c_str();
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;
}
for (unsigned int i = 0; i < numLabels; i++) {
try {
this->outputStreamAttrs.labels[i] = labels[i];
} catch(std::exception e) {
this->outputStreamAttrs.labels[i] = "unnamed";
if (type.compare("Bool") == 0)
{
this->setAttr(name, params[i]["value"].asInt());
}
}
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;
}
// 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;
if (propagate) {
this->propagateInputAttributes();
}
}
#define MIN_PIPO_SAMPLERATE (1.0 / 31536000000.0) // once a year
#define MAX_PIPO_SAMPLERATE (96000000000.0)
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;
}
if (propagate) {
this->propagateInputAttributes();
}
}
void
PiPoHost::setInputFrameOffset(double offset, bool propagate) {
this->inputStreamAttrs.offset = offset;
if (propagate) {
this->propagateInputAttributes();
}
}
void
PiPoHost::setInputDims(int width, int height, bool propagate) {
this->inputStreamAttrs.dims[0] = width;
this->inputStreamAttrs.dims[1] = height;
if (propagate) {
this->propagateInputAttributes();
}
}
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();
}
}
void
PiPoHost::setInputHasVarSize(bool hasVarSize, bool propagate) {
this->inputStreamAttrs.hasVarSize = hasVarSize;
if (propagate) {
this->propagateInputAttributes();
}
}
void
PiPoHost::setInputDomain(double domain, bool propagate) {
this->inputStreamAttrs.domain = domain;
if (propagate) {
this->propagateInputAttributes();
}
}
void
PiPoHost::setInputMaxFrames(int maxFrames, bool propagate) {
this->inputStreamAttrs.maxFrames = maxFrames;
if (propagate) {
this->propagateInputAttributes();
}
}
//*/
//--------------------- INPUT STREAM ATTRIBUTES GETTERS ----------------------//
/*
bool
PiPoHost::getInputHasTimeTags() {
return this->inputStreamAttrs.hasTimeTags;
}
double
PiPoHost::getInputFrameRate() {
return this->inputStreamAttrs.rate;
}
double
PiPoHost::getInputFrameOffset() {
return this->inputStreamAttrs.offset;
}
void
PiPoHost::getInputDims(int &width, int &height) {
width = this->inputStreamAttrs.dims[0];
height = this->inputStreamAttrs.dims[1];
}
void
PiPoHost::getInputLabels(std::vector<std::string> &labels) {
//for (unsigned int i = 0; i < )
}
bool
PiPoHost::getInputHasVarSize() {
return this->inputStreamAttrs.hasVarSize;
}
double
PiPoHost::getInputDomain() {
return this->inputStreamAttrs.domain;
}
int
PiPoHost::getInputMaxFrames() {
return this->inputStreamAttrs.maxFrames;
}
//*/
//--------------------- OUTPUT STREAM ATTRIBUTES GETTERS ---------------------//
// 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;
// }
// 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.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
PiPoHost::getOutputHasTimeTags() {
return this->outputStreamAttrs.hasTimeTags;
}
double
PiPoHost::getOutputFrameRate() {
return this->outputStreamAttrs.rate;
}
double
PiPoHost::getOutputFrameOffset() {
return this->outputStreamAttrs.offset;
}
else if (type.compare("Enum") == 0 || type.compare("String") == 0)
{
this->setAttr(name, params[i]["value"].asString());
}
else if (type.compare("Int") == 0)
{
std::vector<int> values;
void
PiPoHost::getOutputDims(int &width, int &height) {
width = this->outputStreamAttrs.dims[0];
height = this->outputStreamAttrs.dims[1];
}
for (int j = 0; j < params[i]["value"].size(); ++j)
{
values.push_back(params[i]["value"][j].asInt());
}
void
PiPoHost::getOutputLabels(std::vector<std::string> &labels) {
labels.clear();
this->setAttr(name, values);
}
else if (type.compare("Double") == 0)
{
std::vector<double> values;
for (unsigned int i = 0; this->outputStreamAttrs.numLabels; ++i) {
for (int j = 0; j < params[i]["value"].size(); ++j)
{
values.push_back(params[i]["value"][j].asDouble());
}
if (this->outputStreamAttrs.labels[i] != NULL) {
labels.push_back(std::string(this->outputStreamAttrs.labels[i]));
} else {
labels.push_back("unnamed");
this->setAttr(name, values);
}
}
}
}
bool
PiPoHost::getOutputHasVarSize() {
return this->outputStreamAttrs.hasVarSize;
}
double
PiPoHost::getOutputDomain() {
return this->outputStreamAttrs.domain;
}
Json::Value inputStream = jv["pipodata"]["streamAttributes"]["input"];
// setInputStreamAttributes(
// inputStream["hasTimeTags"].getDbl()//,
// //...
// );
return true;
}
//*/
int
PiPoHost::getOutputMaxFrames() {
return this->outputStreamAttrs.maxFrames;
return false;
}
//*/
......@@ -3,7 +3,6 @@
#include "PiPo.h"
#include "PiPoHost.h"
#include "PiPoCollection.h"
//#ifdef EXTERNAL_JSONCPP_PATH
#define EXTERNAL_JSONCPP_PATH "json.h"
......@@ -12,13 +11,12 @@
#define MIN_PIPO_SAMPLERATE (1.0 / 31536000000.0) /* once a year */
#define MAX_PIPO_SAMPLERATE (96000000000.0)
#define DEFAULT_PIPO_SAMPLERATE 1000.0
#define PIPO_OUT_RING_SIZE 2
struct pipoStreamAttributes {
pipoStreamAttributes() : // default parameters suited for audio
struct RapidPiPoStreamAttributes {
RapidPiPoStreamAttributes() : // default parameters suited for audio
hasTimeTags(false),
rate(MIN_PIPO_SAMPLERATE),
rate(DEFAULT_PIPO_SAMPLERATE),
offset(0),
width(1),
height(1),
......@@ -38,212 +36,25 @@ struct pipoStreamAttributes {
unsigned int maxFrames;
};
//class PiPoObserver;
class PiPoOut;
//================================ H O S T ===================================//
class PiPoHost : public PiPo::Parent {
friend class PiPoOut;
private:
PiPo *graph;
std::string graphName;
PiPoOut *out;
// PiPoObserver *obs;
PiPoStreamAttributes inputStreamAttrs;
PiPoStreamAttributes outputStreamAttrs;
class RapidPiPoHost : public PiPoHost {
public:
// PiPoHost(PiPoObserver *obs);
PiPoHost();
~PiPoHost();
// PiPoObserver *getObserver();
virtual bool setGraph(std::string name);
virtual void clearGraph();
// override this method when inheriting !!!
virtual void onNewFrameOut(double time, std::vector<PiPoValue> &frame);
virtual std::vector<PiPoValue> getLastFrameOut();
virtual int setInputStreamAttributes(pipoStreamAttributes &sa, bool propagate = true);
virtual pipoStreamAttributes getOutputStreamAttributes();
virtual int frames(double time, double weight, PiPoValue *values, unsigned int size,
unsigned int num);
// virtual bool setAttr(const std::string &attrName, bool value);
// virtual bool setAttr(const std::string &attrName, int value);
virtual bool setAttr(const std::string &attrName, double value);
virtual bool setAttr(const std::string &attrName, const std::vector<double> &values);
virtual bool setAttr(const std::string &attrName, const std::string &value); // for enums
// virtual const std::vector<std::string>& getAttrNames();
// virtual bool isBoolAttr(const std::string &attrName);
// virtual bool isEnumAttr(const std::string &attrName);
// virtual bool isIntAttr(const std::string &attrName);
// virtual bool isIntArrayAttr(const std::string &attrName);
// 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 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);
virtual int setInputStreamAttributes(RapidPiPoStreamAttributes &a);
virtual void onNewFrame(double time, double weight, PiPoValue *values, unsigned int size);
/** 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,
// unsigned int width, unsigned int height,
// const std::vector<std::string> &labels,
// bool hasVarSize, double domain, unsigned int maxFrames,
// bool propagate = true);
// void propagateInputAttributes();
// void streamAttributesChanged(PiPo *pipo, PiPo::Attr *attr);
// void signalError(PiPo *pipo, std::string errorMsg);
// void signalWarning(PiPo *pipo, std::string warningMsg);
/*
void setInputHasTimeTags(bool hasTimeTags, bool propagate = true);
void setInputFrameRate(double rate, bool propagate = true);
void setInputFrameOffset(double offset, bool propagate = true);
void setInputDims(int width, int height, bool propagate = true);
void setInputLabels(const std::vector<std::string> &labels, bool propagate = true);
void setInputHasVarSize(bool hasVarSize, bool propagate = true);
void setInputDomain(double domain, bool propagate = true);
void setInputMaxFrames(int maxFrames, bool propagate = true);
bool getInputHasTimeTags();
double getInputFrameRate();
double getInputFrameOffset();
void getInputDims(int &width, int &height);
void getInputLabels(std::vector<std::string> &labels);
bool getInputHasVarSize();
double getInputDomain();
int getInputMaxFrames();
bool getOutputHasTimeTags();
double getOutputFrameRate();
double getOutputFrameOffset();
void getOutputDims(int &width, int &height);
void getOutputLabels(std::vector<std::string> &labels);
bool getOutputHasVarSize();
double getOutputDomain();
int getOutputMaxFrames();
// void setPiPoParam(PiPoParam *param);
//*/
protected:
private:
Json::Value toJSON();
bool fromJSON(Json::Value &jv);
private:
int propagateInputStreamAttributes();
void setOutputAttributes(bool hasTimeTags, double rate, double offset,
unsigned int width, unsigned int height,
const char **labels, bool hasVarSize,
double domain, unsigned int maxFrames);
};
//================================= PiPoOut ==================================//
class PiPoOut : public PiPo {
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;
public:
PiPoOut(PiPoHost *host) :
PiPo((PiPo::Parent *)host) {
this->host = host;
writeIndex = 0;
readIndex = 0;
ringBuffer.resize(PIPO_OUT_RING_SIZE);
}
~PiPoOut() {}
int streamAttributes(bool hasTimeTags,
double rate, double offset,
unsigned int width, unsigned int height,
const char **labels, bool hasVarSize,
double domain, unsigned int maxFrames) {
this->host->setOutputAttributes(hasTimeTags, rate, offset, width, height,
labels, hasVarSize, domain, maxFrames);
for (int i = 0; i < PIPO_OUT_RING_SIZE; ++i) {
ringBuffer[i].resize(width * height);
}
return 0;
}
int frames(double time, double weight, float *values,
unsigned int size, unsigned int num) {
if (num > 0) {
for (int i = 0; i < num; ++i) {
for (int j = 0; j < size; ++j) {
ringBuffer[writeIndex][j] = values[i * size + j];
}
// atomic swap ?
writeIndex = 1 - writeIndex;
readIndex = 1 - writeIndex;
this->host->onNewFrameOut(time, ringBuffer[readIndex]);
if (writeIndex + 1 == PIPO_OUT_RING_SIZE) {
writeIndex = 0;
} else {
writeIndex++;
}
}
}
return 0;
}
//void setFrameCallback(std::function<void(std::vector<PiPoValue>,
// PiPoObserver *obs)> f) {
// frameCallback = f;
//}
// void setSimpleFrameCallback(std::function<void(std::vector<PiPoValue>)> f) {
// simpleFrameCallback = f;
// }
std::vector<PiPoValue> getLastFrame() {
std::vector<PiPoValue> f;
if (readIndex > -1) {
f = ringBuffer[readIndex];
}
return f;
}
};
#endif /* _RAPID_PIPO_HOST_H_ */
......@@ -3,7 +3,7 @@
#include "rapidPiPoHost.h"
typedef PiPoHost pipoHost;
typedef pipoStreamAttributes pipoStreamAttributes;
typedef RapidPiPoStreamAttributes signalAttributes;
typedef RapidPiPoHost signalProcessingHost;
# endif /* _RAPID_PIPO_TOOLS_H_ */
#endif /* _RAPID_PIPO_TOOLS_H_ */
/*
* rapidStream.cpp
* Created by Michael Zbyszynski on 6 Feb 2017
* Copyright © 2017 Goldsmiths. All rights reserved.
*/
#include "rapidStream.h"
#include <iostream>
#include <cmath>
rapidStream::rapidStream(int window_size) {
windowSize = window_size;
windowIndex = 0;
circularWindow = new double[window_size];
for (int i = 0; i < windowSize; ++i) {
circularWindow[i] = 0;
}
}
rapidStream::rapidStream() {
windowSize = 3;
windowIndex = 0;
circularWindow = new double[windowSize];
for (int i = 0; i < windowSize; ++i) {
circularWindow[i] = 0;
}
}
rapidStream::~rapidStream() {
delete []circularWindow;
}
void rapidStream::clear() {
windowIndex = 0;
circularWindow = new double[windowSize];
for (int i = 0; i < windowSize; ++i) {
circularWindow[i] = 0;
}
}
void rapidStream::pushToWindow(double input) {
circularWindow[windowIndex] = input;
windowIndex = (windowIndex + 1) % windowSize;
}
inline double rapidStream::calcCurrentVel(int i) {
return circularWindow[(i + windowIndex) % windowSize] - circularWindow[(i + windowIndex - 1) % windowSize];
}
double rapidStream::velocity() {
return calcCurrentVel(-1);
};
double rapidStream::acceleration() {
return calcCurrentVel(-2) - calcCurrentVel(-3);
};
double rapidStream::minimum() {
double minimum = std::numeric_limits<double>::infinity();
for (int i = 0; i < windowSize; ++i) {
if (circularWindow[i] < minimum) {
minimum = circularWindow[i];
}
}
return minimum;
}
double rapidStream::maximum() {
double maximum = std::numeric_limits<double>::min();
for (int i = 0; i < windowSize; ++i) {
if (circularWindow[i] > maximum) {
maximum = circularWindow[i];
}
}
return maximum;
}
double rapidStream::sum() {
double newSum = 0;
for(int i = 0; i < windowSize; ++i)
{
newSum += circularWindow[i];
}
return newSum;
}
double rapidStream::mean() {
return sum()/windowSize;
}
double rapidStream::standardDeviation() {
double newMean = mean();
double standardDeviation = 0.;
for(int i = 0; i < windowSize; ++i) {
standardDeviation += pow(circularWindow[i] - newMean, 2);
}
return sqrt(standardDeviation / windowSize);
}
double rapidStream::minVelocity() {
double minVel = std::numeric_limits<double>::infinity();
for (int i = 0; i < windowSize; ++i) {
double currentVel = calcCurrentVel(i);
if ( currentVel < minVel) {
minVel = currentVel;
}
}
return minVel;
}
double rapidStream::maxVelocity() {
double maxVel = std::numeric_limits<double>::lowest();
for (int i = 0; i < windowSize; ++i) {
double currentVel = calcCurrentVel(i);
if (currentVel > maxVel) {
maxVel = currentVel;
}
}
return maxVel;
}
double rapidStream::minAcceleration() {
double minAccel = std::numeric_limits<double>::infinity();
double lastVel = calcCurrentVel(1);
for (int i = 2; i < windowSize; ++i) {
double currentVel = calcCurrentVel(i);
double currentAccel = currentVel - lastVel;
lastVel = currentVel;
if (currentAccel < minAccel) {
minAccel = currentAccel;
}
}
return minAccel;
}
double rapidStream::maxAcceleration() {
double maxAccel = std::numeric_limits<double>::lowest();
double lastVel = calcCurrentVel(1);
for (int i = 2; i < windowSize; ++i) {
double currentVel = calcCurrentVel(i);
double currentAccel = currentVel - lastVel;
lastVel = currentVel;
if (currentAccel > maxAccel) {
maxAccel = currentAccel;
}
}
return maxAccel;
}
\ No newline at end of file
/*
* rapidStream.h
* Created by Michael Zbyszynski on 6 Feb 2017
* Copyright © 2017 Goldsmiths. All rights reserved.
*/
#ifndef rapidStream_h
#define rapidStream_h
#include <stdint.h>
class rapidStream {
public:
/**
* Create a circular buffer with 3 elements.
*/
rapidStream();
/**
* Create a circular buffer with an arbitrary number of elements.
* @param int: number of elements to hold in the buffer
*/
rapidStream(int windowSize);
~rapidStream();
/**
* Resets all the values in the buffer to zero.
*/
void clear();
/** Add a value to a circular buffer whose size is defined at creation.
* @param double: value to be pushed into circular buffer.
*/
void pushToWindow(double input);
/** Calculate the first-order difference (aka velocity) between the last two inputs.
* @return double: difference between last two inputs.
*/
double velocity();
/** Calculate the second-order difference (aka acceleration) over the last three inputs.
* @return double: acceleration over the last three inputs.
*/
double acceleration();
/** Find the minimum value in the buffer.
* @return double: minimum.
*/
double minimum();
/** Find the maximum value in the buffer.
* @return double: maximum.
*/
double maximum();
/** Calculate the sum of all values in the buffer.
* @return double: sum.
*/
double sum();
/** Calculate the mean of all values in the buffer.
* @return double: mean.
*/
double mean();
/** Calculate the standard deviation of all values in the buffer.
* @return double: standard deviation.
*/
double standardDeviation();
/** Calculate the minimum first-order difference over consecutive inputs in the buffer.
* @return double: minimum velocity.
*/
double minVelocity();
/** Calculate the maximum first-order difference over consecutive inputs in the buffer.
* @return double: maximum velocity.
*/
double maxVelocity();
/** Calculate the minimum second-order difference over consecutive inputs in the buffer.
* @return double: minimum acceleration.
*/
double minAcceleration();
/** Calculate the maximum second-order difference over consecutive inputs in the buffer.
* @return double: maximum acceleration.
*/
double maxAcceleration();
private:
uint32_t windowSize;
uint32_t windowIndex;
double *circularWindow;
double calcCurrentVel(int i);
};
#endif
\ No newline at end of file
/*
* signalProcessing.h
* Created by Michael Zbyszynski on 6 Feb 2017
/**
* @file signalProcessing.h
* @author Michael Zbyszynski
* @date 6 Feb 2017
* @copyright
* Copyright © 2017 Goldsmiths. All rights reserved.
*
* @ingroup signalprocessing
*/
#ifndef signalProcessing_h
#define signalProcessing_h
#include "rapidMix.h"
#include "rapidmix.h"
#include "maximilian.h"
#include "maxim.h"
#include "rapidStream.h"
#include "rapidPiPoTools.h"
#include "./rapidPiPoTools/rapidPiPoTools.h"
RAPIDMIX_BEGIN_NAMESPACE
namespace rapidmix {
/*
* Wrapper for signalProcessing modules, currently a collection of typedefs
*/
typedef maxiFFT FFT;
typedef maxiMFCC MFCC;
typedef rapidStream rapidStream; //MZ: Best... typedef... EVER!
typedef pipoHost pipoHost;
typedef pipoStreamAttributes pipoStreamAttributes;
/*
* Wrapper for signalProcessing modules, currently a collection of typedefs
*/
typedef maxiFFT FFT;
typedef maxiMFCC MFCC;
typedef rapidStream<double> rapidStream;
RAPIDMIX_END_NAMESPACE
typedef signalProcessingHost signalProcessingHost;
typedef signalAttributes signalAttributes;
}
#endif
{
"docType" : "rapid-mix:signal-processing",
"docVersion" : "1.0.0",
"payload" :
{
"description" : "slice:fft:sum:scale:onseg",
"parameters" :
[
{
"name" : "slice.size",
"type" : "Int",
"value" : [ 1024 ]
},
{
"name" : "slice.hop",
"type" : "Int",
"value" : [ 256 ]
},
{
"name" : "slice.wind",
"type" : "Enum",
"value" : "hann"
},
{
"name" : "slice.norm",
"type" : "Enum",
"value" : "power"
},
{
"name" : "fft.size",
"type" : "Int",
"value" : [ 0 ]
},
{
"name" : "fft.mode",
"type" : "Enum",
"value" : "power"
},
{
"name" : "fft.norm",
"type" : "Bool",
"value" : 1
},
{
"name" : "fft.weighting",
"type" : "Enum",
"value" : "itur468"
},
{
"name" : "sum.norm",
"type" : "Bool",
"value" : 0
},
{
"name" : "sum.colname",
"type" : "String",
"value" : ""
},
{
"name" : "scale.inmin",
"type" : "Double",
"value" : [ 1 ]
},
{
"name" : "scale.inmax",
"type" : "Double",
"value" : [ 10 ]
},
{
"name" : "scale.outmin",
"type" : "Double",
"value" : [ 0 ]
},
{
"name" : "scale.outmax",
"type" : "Double",
"value" : [ 10 ]
},
{
"name" : "scale.clip",
"type" : "Bool",
"value" : 0
},
{
"name" : "scale.func",
"type" : "Enum",
"value" : "log"
},
{
"name" : "scale.base",
"type" : "Double",
"value" : [ 10 ]
},
{
"name" : "scale.minlog",
"type" : "Double",
"value" : [ 1.0000000195414814e-24 ]
},
{
"name" : "scale.complete",
"type" : "Enum",
"value" : "repeatlast"
},
{
"name" : "scale.colindex",
"type" : "Int",
"value" : [ 0 ]
},
{
"name" : "scale.numcols",
"type" : "Int",
"value" : [ 0 ]
},
{
"name" : "onseg.colindex",
"type" : "Int",
"value" : [ 0 ]
},
{
"name" : "onseg.numcols",
"type" : "Int",
"value" : [ -1 ]
},
{
"name" : "onseg.filtersize",
"type" : "Int",
"value" : [ 3 ]
},
{
"name" : "onseg.threshold",
"type" : "Double",
"value" : [ 9 ]
},
{
"name" : "onseg.odfmode",
"type" : "Enum",
"value" : "mean"
},
{
"name" : "onseg.mininter",
"type" : "Double",
"value" : [ 50 ]
},
{
"name" : "onseg.startisonset",
"type" : "Bool",
"value" : 1
},
{
"name" : "onseg.duration",
"type" : "Bool",
"value" : 1
},
{
"name" : "onseg.durthresh",
"type" : "Double",
"value" : [ 0 ]
},
{
"name" : "onseg.offthresh",
"type" : "Double",
"value" : [ -120 ]
},
{
"name" : "onseg.maxsize",
"type" : "Double",
"value" : [ 0 ]
},
{
"name" : "onseg.min",
"type" : "Bool",
"value" : 0
},
{
"name" : "onseg.max",
"type" : "Bool",
"value" : 1
},
{
"name" : "onseg.mean",
"type" : "Bool",
"value" : 0
},
{
"name" : "onseg.stddev",
"type" : "Bool",
"value" : 0
},
{
"name" : "onseg.odfoutput",
"type" : "Bool",
"value" : 0
}
],
"streamAttributes" :
{
"input" :
{
"domain" : 0,
"hasTimeTags" : 0,
"hasVarSize" : false,
"height" : 1,
"labels" : true,
"maxFrames" : 1,
"offset" : 0,
"rate" : 1000,
"width" : 1
},
"output" :
{
"domain" : 0,
"hasTimeTags" : 1,
"hasVarSize" : false,
"height" : 1,
"labels" : true,
"maxFrames" : 1,
"offset" : 0,
"rate" : 3.90625,
"width" : 2
}
}
},
"target" :
{
"name" : "pipo",
"version" : 0.20000000000000001
}
}
#include <cassert>
#include <vector>
#include <iostream>
#include "rapidmix.h"
int main() {
///////////////////////////////////Test GVF
rapidmix::gvfTemporalVariation gvf;
rapidmix::trainingData myGVFData;
// Record first gesture
myGVFData.startRecording();
myGVFData.addElement({ 4.0, 0.7 });
myGVFData.addElement({ 3.0, 0.8 });
myGVFData.addElement({ 2.0, 0.9 });
myGVFData.addElement({ 1.0, 1.0 });
myGVFData.addElement({ 0.4, 1.2 });
myGVFData.addElement({ 0.2, 1.4 });
myGVFData.stopRecording();
// Record reverse of first gesture
myGVFData.startRecording();
myGVFData.addElement({ 0.2, 1.4 });
myGVFData.addElement({ 0.4, 1.2 });
myGVFData.addElement({ 1.0, 1.0 });
myGVFData.addElement({ 2.0, 0.9 });
myGVFData.addElement({ 3.0, 0.8 });
myGVFData.addElement({ 4.0, 0.7 });
myGVFData.stopRecording();
// Train
std::cout << "gvf train = " << gvf.train(myGVFData) << std::endl;
std::cout << "gvf passed." << std::endl;
//////////////////////////////////////Test RapidLib
rapidmix::staticRegression myNN;
rapidmix::trainingData myRLData;
std::vector<double> input = { 0.2, 0.7 };
std::vector<double> output = { 3.0 };
myRLData.recordSingleElement("label", input, output);
input = { 2.0, 44.2 };
output = { 20.14 };
myRLData.recordSingleElement("label", input, output);
std::cout << "staticRegression train = " << myNN.train(myRLData) << std::endl;
std::vector<double> inputVec = { 1.618, 18.9 };
assert(myNN.run(inputVec)[0] == 12.596715279688549);
std::cout << "staticRegression passed." << std::endl;
//////////////////////////////////////Test XMM
rapidmix::xmmConfig xcfg;
xcfg.relativeRegularization = 0.1;
rapidmix::trainingData myXmmData;
std::vector<double> myXmmInput;
std::vector<double> myXmmOutput;
myXmmData.startRecording("lab1");
myXmmInput = { 0.2, 0.7 };
myXmmData.addElement(myXmmInput, myXmmOutput);
myXmmData.stopRecording();
myXmmData.startRecording("lab2");
myXmmInput = { 0.8, 0.1 };
myXmmData.addElement(myXmmInput, myXmmOutput);
myXmmData.stopRecording();
myXmmData.writeJSON("/var/tmp/testTrainingData.json");
rapidmix::xmmStaticClassification myGmm(xcfg);
myGmm.train(myXmmData);
std::string filepath = "/var/tmp/modelSetDescription";
myGmm.writeJSON(filepath);
myXmmInput = { 0.2, 0.7 };
rapidmix::xmmStaticClassification myGmmFromFile;
myGmmFromFile.readJSON(filepath);
assert(myGmm.run(myXmmInput)[0] == myGmmFromFile.run(myXmmInput)[0]);
std::cout << "xmm passed." << std::endl;
/////////////////////////////////////Test pipo signal processing
rapidmix::signalProcessingHost spHost;
spHost.setGraph("slice<fft:moments,moments>");
spHost.setAttr("slice.size", 128);
spHost.setAttr("slice.hop", 64);
rapidmix::signalAttributes sa;
spHost.setInputStreamAttributes(sa);
for (unsigned int i = 0; i < 256; ++i)
{
std::vector<float> f({ 1, 2, 3 });
spHost.frames(0, 1, &f[0], 1, 1);
}
std::cout << "pipo passed." << std::endl;
/////////////////////////////////////Test rapidStream signal processing
rapidmix::rapidStream myProcessor(5); //create a processor with a window size of 5
myProcessor.pushToWindow(0.246);
myProcessor.pushToWindow(0.44);
myProcessor.pushToWindow(-0.228);
myProcessor.pushToWindow(0.402);
myProcessor.pushToWindow(-0.382);
assert(myProcessor.maximum() == 0.44);
assert(myProcessor.minimum() == -0.382);
assert(myProcessor.sum() == 0.478);
assert(myProcessor.mean() == 0.09559999999999999);
assert(myProcessor.standardDeviation() == 0.33702557766436664);
assert(myProcessor.rms() == 0.3503221374677884);
std::cout << "rapidStream passed." << std::endl;
/////////////////////////////////////Test Maxi signal processing
rapidmix::FFT myFFT;
myFFT.setup(1024, 512, 265);
for (int i = 0; i < 1024; ++i) {
float input = (i % 256/256.0);
myFFT.process(input);
}
assert(myFFT.spectralCentroid() == 3520.84277f);
std::cout << "maxi fft passed." << std::endl;
return 0;
}
......@@ -8,7 +8,7 @@
#define CATCH_CONFIG_MAIN
#include "catch.hpp"
#include "machineLearning.h"
#include "rapidMix.h"
#include <iostream>
SCENARIO("Test NN Regression", "[machineLearning]")
......@@ -20,11 +20,15 @@ SCENARIO("Test NN Regression", "[machineLearning]")
rapidmix::trainingData myData;
std::vector<double> input = { 0.2, 0.7 };
std::vector<double> output = { 3.0 };
REQUIRE(myData.addElement(input, output) == 1);
REQUIRE(myData.recordSingleElement("label", input, output) == 1); //FIXME: Label is stupd here. -MZ
//testing alternate API
//auto newPhrase = myData.createNewPhrase("lab1");
//newPhrase->addElement(input, output);
input = { 2.0, 44.2 };
output = { 20.14 };
REQUIRE(myData.addElement(input, output) == 2);
REQUIRE(myData.recordSingleElement("label", input, output) == 3);
myData.writeJSON("/var/tmp/testTrainingData.json");
......@@ -33,8 +37,8 @@ SCENARIO("Test NN Regression", "[machineLearning]")
std::string filepath = "/var/tmp/modelSetDescription.json";
myNN.writeJSON(filepath);
std::vector<double> inputVec = { 1.618, 18.9 }; //arbitrary input
REQUIRE(myNN.run(inputVec)[0] == 12.596715279688551);
std::vector<double> inputVec = { 1.618, 18.9 }; //arbitrary input
REQUIRE(myNN.run(inputVec)[0] == 12.596715279688549);
WHEN("when NN model is deserialized from file")
{
......@@ -62,19 +66,12 @@ SCENARIO("Test NN Regression", "[machineLearning]")
SCENARIO("Test kNN classification", "[machineLearning]")
{
GIVEN("kNN Regression object and training dataset")
GIVEN("kNN object and training dataset")
{
rapidmix::staticClassification myKnn;
rapidmix::trainingData myData;
std::vector<double> input = { 0.2, 0.7 };
std::vector<double> output = { 3.0 };
REQUIRE(myData.addElement(input, output) == 1);
input = { 2.0, 44.2 };
output = { 20.14 };
REQUIRE(myData.addElement(input, output) == 2);
REQUIRE(myData.recordSingleElement("cat", { 0.2, 0.7 }) == 1);
REQUIRE(myData.recordSingleElement("dog", { 2.0, 44.2 }) == 3); // This is not 2, because phrases get numbers, too.
REQUIRE(myKnn.train(myData) == true);
std::string filepath2 = "/var/tmp/modelSetDescription_knn.json";
......@@ -89,7 +86,7 @@ SCENARIO("Test kNN classification", "[machineLearning]")
std::vector<double> inputVec = { 2.0, 44.2 };
REQUIRE(myKnn.run(inputVec)[0] == 20.0); //FIXME: kNN truncates to ints!
REQUIRE(myKnn.run(inputVec, "label") == "dog");
WHEN("when kNN model is read from file")
{
......@@ -99,7 +96,7 @@ SCENARIO("Test kNN classification", "[machineLearning]")
}
}
WHEN("when NN model is read from JSON stream")
WHEN("when kNN model is read from JSON stream")
{
THEN("run models and compare")
{
......@@ -109,6 +106,59 @@ SCENARIO("Test kNN classification", "[machineLearning]")
}
}
SCENARIO("Test DTW classification", "[machineLearning]")
{
GIVEN("DTW object and training dataset")
{
rapidmix::dtwTemporalClassification myDTW;
rapidmix::trainingData myData;
myData.startRecording("setOne");
std::vector<double> input = { 0.1, 0.5 };
std::vector<double> output = {};
REQUIRE(myData.addElement(input, output) == 1);
input = { 0.2, 0.4 };
REQUIRE(myData.addElement(input, output) == 2);
input = { 0.3, 0.3 };
REQUIRE(myData.addElement(input, output) == 3);
input = { 0.4, 0.2 };
REQUIRE(myData.addElement(input, output) == 4);
input = { 0.5, 0.1 };
REQUIRE(myData.addElement(input, output) == 5);
myData.stopRecording();
//alternate API
auto setTwo = myData.createNewPhrase("setTwo");
input = { 1., 4. };
setTwo->addElement(input, output);
input = { 2., -3. };
setTwo->addElement(input, output);
input = { 1., 5. };
setTwo->addElement(input, output);
input = { -2., 1. };
setTwo->addElement(input, output);
REQUIRE(myDTW.train(myData) == true);
std::vector<std::vector<double> > inputSet1;
inputSet1.push_back( {1., 4.});
inputSet1.push_back( {2., -3.});
inputSet1.push_back( {1., 5.});
inputSet1.push_back( {-2., 1.});
REQUIRE(myDTW.run(inputSet1) == "setTwo");
std::vector<std::vector<double> > inputSet0;
inputSet0.push_back( { 0.1, 0.5 });
inputSet0.push_back( { 0.2, 0.4 });
inputSet0.push_back( { 0.3, 0.3 });
inputSet0.push_back( { 0.4, 0.2 });
inputSet0.push_back( { 0.5, 0.1 });
REQUIRE(myDTW.run(inputSet0) == "setOne");
}
}
SCENARIO("Test both classes reject bad data", "[machineLearning]") {
rapidmix::staticRegression badNN;
rapidmix::staticClassification badKNN;
......@@ -116,7 +166,7 @@ SCENARIO("Test both classes reject bad data", "[machineLearning]") {
std::vector<double> input = { 0.1, 0.2, 0.3};
std::vector<double> output = { 1.0 };
myBadData.addElement(input,output);
myBadData.recordSingleElement("label", input,output); //FIXME: This label is uselsess? -MZ
input = { 1.0, 2.0, 3.0, 4.0 };
myBadData.addElement(input, output);
......@@ -126,14 +176,3 @@ SCENARIO("Test both classes reject bad data", "[machineLearning]") {
//TODO: These should return false with empty data set. I think it just crashes now. -mz
}
/*
rapidmix::staticClassification labelKnn;
labelKnn.train(myXmmData);
std::vector<double> input = { 0.8, 0.1 };
std::cout << "knn test: " << myXmmData.getLabel(labelKnn.run(input)[0]) << std::endl;
return 0;
*/
\ No newline at end of file
......@@ -8,18 +8,16 @@
#define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one cpp file
#include "catch.hpp"
#include "machineLearning.h"
#include "rapidMix.h"
TEST_CASE( "Tests default GVF ctor.", "[GVF]" ) {
GVF * gvf = new GVF();
gvf->translate(false);
gvf->segmentation(false);
REQUIRE(gvf != NULL);
}
TEST_CASE( "Tests default GVFGesture ctor.", "[GVF]" ) {
......@@ -35,11 +33,9 @@ TEST_CASE( "Tests default GVFGesture ctor.", "[GVF]" ) {
gvf->setTolerance(0.2f);
gvf->setScalingsVariance(0.00001f); //0.00001f); //0.000002f); //0.00004f);
gvf->setDynamicsVariance(0.0001f);
vector<vector<float>> trainingData;
if(gvf->getState() == GVF::STATE_LEARNING)
{
gvf->startGesture();
......@@ -49,7 +45,6 @@ TEST_CASE( "Tests default GVFGesture ctor.", "[GVF]" ) {
// Fill the template
gesture.addObservation(*frame);
}
}
gvf->setState(GVF::STATE_FOLLOWING);
......@@ -66,184 +61,111 @@ TEST_CASE( "Tests default GVFGesture ctor.", "[GVF]" ) {
// Fill the template
gesture.addObservation(*frame);
}
gvf->update(gesture.getLastObservation());
}
// float phase = gvf->getOutcomes().estimations[0].alignment;
// float speed = gvf->getOutcomes().estimations[0].dynamics[0];
//
// getDynamicsVariance();
// getScalingsVariance();
// getRotationsVariance();
// float phase = gvf->getOutcomes().estimations[0].alignment;
// float speed = gvf->getOutcomes().estimations[0].dynamics[0];
//
// getDynamicsVariance();
// getScalingsVariance();
// getRotationsVariance();
REQUIRE( gvf != NULL);
}
SCENARIO("Test GVF Regression", "[machineLearning]")
{
GIVEN("gvf object and training dataset")
{
rapidmix::gvf gvf;
rapidmix::gvfTemporalVariation gvf;
rapidmix::trainingData myData;
std::vector<double> input = { 0.2, 0.7 };
std::vector<double> output = { 3.0 };
myData.addElement(input, output);
input = { 2.0, 44.2 };
output = { 20.14 };
myData.addElement(input, output);
// Record first gesture
myData.startRecording();
std::vector<double> inputs = { 4.0, 0.7 };
myData.addElement(inputs);
gvf.train(myData);
inputs = { 3.0, 0.8 };
myData.addElement(inputs);
// gvf.process(input);
inputs = { 2.0, 0.9 };
myData.addElement(inputs);
inputs = { 1.0, 1.0 };
myData.addElement(inputs);
std::string filepath2 = "/var/tmp/modelSetDescription_gvf.json";
// gvf.writeJSON(filepath2);
inputs = { 0.4, 1.2 };
myData.addElement(inputs);
// rapidmix::staticClassification gvfFromString;
// gvfFromString.putJSON(gvf.getJSON());
inputs = { 0.2, 1.4 };
myData.addElement(inputs);
myData.stopRecording();
// rapidmix::staticClassification gvfFromFile;
// gvfFromFile.readJSON(filepath2);
// Record reverse of first gesture
myData.startRecording();
inputs = { 0.2, 1.4 };
myData.addElement(inputs);
inputs = { 0.4, 1.2 };
myData.addElement(inputs);
std::vector<double> inputVec = { 2.0, 44.2 };
inputs = { 1.0, 1.0 };
myData.addElement(inputs);
WHEN("when gvf model is read from file")
{
THEN("run models and compare")
{
// REQUIRE(gvf.run(inputVec)[0] == gvfFromFile.run(inputVec)[0]);
}
}
inputs = { 2.0, 0.9 };
myData.addElement(inputs);
WHEN("when gvf model is read from JSON stream")
{
THEN("run models and compare")
{
// REQUIRE(gvf.run(inputVec)[0] == gvfFromString.run(inputVec)[0]);
}
}
}
}
inputs = { 3.0, 0.8 };
myData.addElement(inputs);
/*
unsigned int runGVF(){
GVFGesture currentGesture;
GVFConfig config;
GVFOutcomes outcomes;
// START UNIT TEST LOOP HERE
// Init GVF
config.inputDimensions = 8;
config.translate = false;
config.segmentation = false;
GVF * gvf = new ofxGVF(config);
// change set parameters (from default)
gvf->setScalingsVariance(0.00001f); //0.00001f); //0.000002f); //0.00004f);
gvf->setDynamicsVariance(0.0001f);
std::vector<std::string> trainingFiles;
// Data structure for training data
vector<vector<vector<float>>> trainingData = readData(trainPath, participantRegExp, trainingFiles);
for (vector<vector<vector<float>>>::iterator trainingGesture = trainingData.begin(); trainingGesture != trainingData.end(); trainingGesture++)
{
currentGesture.clear();
for (vector<vector<float>>::iterator frame = (*trainingGesture).begin(); frame != (*trainingGesture).end(); frame++)
{
// Fill the template
currentGesture.addObservation(*frame);
}
// Add the template at the end of the gesture
gvf->addGestureTemplate(currentGesture);
}
// Set Following Mode (fitting here)
gvf->setState(ofxGVF::STATE_FOLLOWING);
std::vector<std::string> testFilesList;
vector<GVFOutput> gvfOutputs = readTestData(testPath, participantRegExp, outputPath);
float tempAlignmentDistance = 0.0;
float alignmentDistance;
for (vector<GVFOutput>::iterator gvfOutput = gvfOutputs.begin(); gvfOutput != gvfOutputs.end(); gvfOutput++)
{
inputs = { 4.0, 0.7 };
myData.addElement(inputs);
myData.stopRecording();
// here you restart before testing with an indivudal testing gesture
gvf->restart();
// Train
REQUIRE(gvf.train(myData) == true);
// boost::filesystem::ofstream outfile(gvfOutput->fileOut);
// Set first gesture (or a fragment of it)
std::vector<double> outcomes;
for (vector<vector<float>>::iterator frame = (gvfOutput->testData).begin(); frame != (gvfOutput->testData).end(); frame++) {
currentGesture.addObservation(*frame);
gvf->update(currentGesture.getLastObservation());
ofxGVFOutcomes outcomes = gvf->getOutcomes();
if (outcomes.most_probable >= 0){
WHEN("when gvf is trained with a gesture and the reverse gesture")
{
THEN("follows the the gesture (first) and confirm it is the likeliestGesture and likelihoods reasonable")
{
outcomes = gvf.run(inputs = { 3.0, 0.8 });
outcomes = gvf.run({ 2.0, 0.9 });
outcomes = gvf.run({ 1.0, 1.0 });
outcomes = gvf.run({ 0.4, 1.2 });
outcomes = gvf.run({ 0.2, 1.4 });
// The assumtion for the test is that the outcome of the last segment of the test gesture must converge
REQUIRE(outcomes[0] == 0); // outcomes[0] - likeliestGesture must be equal to first gesture '0'
REQUIRE(gvf.getLikelihoods()[0] > 0.5); // outcomes[1] - likelihood gesture '0' must be greater than 50%
REQUIRE(gvf.getLikelihoods()[1] < 0.5); // outcomes[2] - likelihood gesture '1' must be lesser than 50%
REQUIRE(gvf.getAlignments()[0] < 0.5); // outcomes[3] - alignment gesture '0' must be lesser than 50%
// REQUIRE(outcomes[4] < 0.5); // outcomes[4] - alignment gesture '1' must be lesser than 50%
outfile << outcomes.estimations[0].scalings[0] << ' ' << outcomes.estimations[0].scalings[1] << ' ' << outcomes.estimations[0].scalings[2] << ' ' << outcomes.estimations[0].scalings[3] << ' ' << outcomes.estimations[0].scalings[4] << ' ' << outcomes.estimations[0].scalings[5] << ' ' << outcomes.estimations[0].scalings[6] << ' ' << outcomes.estimations[0].scalings[7] << ' ' << outcomes.estimations[1].scalings[0] << ' ' << outcomes.estimations[1].scalings[1] << ' ' << outcomes.estimations[1].scalings[2] << ' ' << outcomes.estimations[1].scalings[3] << ' ' << outcomes.estimations[1].scalings[4] << ' ' << outcomes.estimations[1].scalings[5] << ' ' << outcomes.estimations[1].scalings[6] << ' ' << outcomes.estimations[1].scalings[7] << ' ' << outcomes.estimations[2].scalings[0] << ' ' << outcomes.estimations[2].scalings[1] << ' ' << outcomes.estimations[2].scalings[2] << ' ' << outcomes.estimations[2].scalings[3] << ' ' << outcomes.estimations[2].scalings[4] << ' ' << outcomes.estimations[2].scalings[5] << ' ' << outcomes.estimations[2].scalings[6] << ' ' << outcomes.estimations[2].scalings[7] << ' ' << outcomes.estimations[0].dynamics[0] << ' ' << outcomes.estimations[0].dynamics[1] << ' ' << outcomes.estimations[1].dynamics[0] << ' ' << outcomes.estimations[1].dynamics[1] << ' ' << outcomes.estimations[2].dynamics[0] << ' ' << outcomes.estimations[2].dynamics[1] << ' ' << outcomes.estimations[0].alignment << ' ' << outcomes.estimations[1].alignment << ' ' << outcomes.estimations[2].alignment << ' ' << '0' << ' ' << outcomes.estimations[0].likelihood << ' ' << outcomes.estimations[1].likelihood << ' ' << outcomes.estimations[2].likelihood << ' ' << '1' << ' ' << '0' << ' ' << '0' << std::endl;
}
else
WHEN("when gvf is trained with two gestures")
{
outfile << "Error" << endl;
THEN("gvf follows the test gesture (first gesture scaled) and confirm it is the likeliestGesture and likelihoods anc reasonable ")
{
}
}
// reconstruction and distance computation
int alignmentindex = 0;
if (gvf->getMostProbableGestureIndex()>=0)
alignmentindex = trainingData[gvf->getMostProbableGestureIndex()].size() * outcomes.estimations[gvf->getMostProbableGestureIndex()].alignment;
vector<float> alignedFrame = trainingData[gvf->getMostProbableGestureIndex()][alignmentindex];
float distanceRefAligned = 0.0;
for (int i=0; i<alignedFrame.size(); i++){
alignedFrame[i]*=outcomes.estimations[gvf->getMostProbableGestureIndex()].scalings[i];
distanceRefAligned+=pow(alignedFrame[i]-(*frame)[i],2);
WHEN("when gvf is trained with two gestures")
{
THEN("gvf follows the test gesture (first gesture scaled) and confirm it is the likeliestGesture and likelihoods anc reasonable ")
{
}
}
tempAlignmentDistance += sqrt(distanceRefAligned);
}
alignmentDistance = tempAlignmentDistance / (float)(gvfOutput->testData).size();
outfile.close();
}
return 0;
}
*/
//TEST_CASE( "Factorials are computed", "[factorial]" ) {
// REQUIRE( Factorial(1) == 1 );
// REQUIRE( Factorial(2) == 2 );
// REQUIRE( Factorial(3) == 6 );
// REQUIRE( Factorial(10) == 3628800 );
//}
\ No newline at end of file
......@@ -15,7 +15,23 @@
#include "catch.hpp"
#include "signalProcessing.h"
//#define MAX_PATH_SIZE 256
#define MAX_PATH_SIZE 256
void doSomething(double time, double weight, PiPoValue *values, unsigned int size)
{
std::cout << time << std::endl;
}
class Stuff {
public:
Stuff() {}
~Stuff() {}
void doSomething(double time, double weight, PiPoValue *values, unsigned int size)
{
std::cout << time << std::endl;
}
};
//=============================== ONSEG TEST =================================//
......@@ -24,23 +40,29 @@ SCENARIO("Test rapidPiPoHost", "[signalProcessing]")
GIVEN("A rapidPiPoHost class with a rapidPiPo chain and an audio file")
{
maxiSample buffer;
Stuff stuff;
// in XCode this gives the path to DerivedData folder
// char pathStrBuf[MAX_PATH_SIZE];
// char *cwd = getcwd(pathStrBuf, sizeof(pathStrBuf));
// std::cout << std::string(cwd) << std::endl;
// but here we just add the file to the Copy File(s) Build Phase
buffer.load("./DnB-loop-175BPM.wav", 0);
buffer.load("./data/DnB-loop-175BPM.wav", 0);
// ( source : http://freesound.org/people/yewbic/sounds/40107/ )
buffer.reset(); // (no real need to do this here)
//====================================================================//
// instantiate PiPo related classes here :
rapidmix::pipoHost host; // -> this class is located in rapidPiPoTools
rapidmix::signalProcessingHost host;
// host.setFrameCallback(doSomething);
// host.setFrameCallback(stuff.doSomething);
// host.setFrameCallback(dynamic_cast<frameCallback>(std::bind(&Stuff::doSomething, stuff)));
// host.setFrameCallback(dynamic_cast<frameCallback>(Stuff::* doSomething));
// if we want to add some custom PiPos to our collection :
// #include "myCustomPiPo.h"
// PiPoCollection::addToCollection("myCustomPiPo", new PiPoCreator<myCustomPiPo>);
......@@ -50,9 +72,10 @@ SCENARIO("Test rapidPiPoHost", "[signalProcessing]")
// #include "PiPoMaximChroma.h"
// this one is not part of the default collection :
// PiPoCollection::addToCollection("chroma", new PiPoCreator<PiPoMaximChroma>);
//*
host.setGraph("slice:fft:sum:scale:onseg");
host.setAttr("slice.size", 1024);
host.setAttr("slice.hop", 256);
host.setAttr("slice.norm", "power");
......@@ -72,7 +95,7 @@ SCENARIO("Test rapidPiPoHost", "[signalProcessing]")
host.setAttr("onseg.startisonset", 1.);
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 : ";
......@@ -80,31 +103,45 @@ SCENARIO("Test rapidPiPoHost", "[signalProcessing]")
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;
}
//*/
//char pathStrBuf[MAX_PATH_SIZE];
//char *cwd = getcwd(pathStrBuf, sizeof(pathStrBuf));
//std::string filePath = std::string(cwd) + "/hello.json";
//std::string filePath = ${PROJECT_DIR};
std::string filePath = "./data/pipo.json";
std::cout << filePath << std::endl;
//host.writeJSON(filePath);
host.readJSON(filePath);
//host.putJSON(jj);
//std::string jj = host.getJSON();
//std::cout << jj << std::endl;
std::cout << host.getJSON() << std::endl;
// set another chain :
// pipoHost.setChain("chroma");
WHEN("file is processed")
{
rapidmix::pipoStreamAttributes sa;
rapidmix::signalAttributes sa;
sa.hasTimeTags = true;
sa.rate = 44100;
sa.offset = 0;
sa.width = 1,
sa.height = 1,
sa.width = 1;
sa.height = 1;
sa.labels = std::vector<std::string>();
sa.hasVarSize = false;
sa.domain = 0;
sa.maxFrames = 1;
host.setInputStreamAttributes(sa);
host.setInputSignalAttributes(sa);
float value;
for (unsigned int i = 0; i < buffer.length; ++i) {
value = buffer.play();
......
//
// test_rapidXmmTools.cpp
// Unit tests for rapidXmmTools
//
#ifndef CATCH_CONFIG_MAIN
#define CATCH_CONFIG_MAIN
#endif
......@@ -18,37 +13,37 @@ SCENARIO("Test GMM", "[machineLearning]")
{
rapidmix::xmmConfig xcfg;
xcfg.relativeRegularization = 0.1;
rapidmix::trainingData myXmmData;
std::vector<double> myXmmInput;
std::vector<double> myXmmOutput;
myXmmData.startRecording("lab1");
myXmmInput = { 0.2, 0.7 };
myXmmData.addElement(myXmmInput, myXmmOutput);
myXmmData.stopRecording();
myXmmData.startRecording("lab2");
myXmmInput = { 0.8, 0.1 };
myXmmData.addElement(myXmmInput, myXmmOutput);
myXmmData.stopRecording();
myXmmData.writeJSON("/var/tmp/testTrainingData.json");
rapidmix::xmmStaticClassification myGmm(xcfg);
myGmm.train(myXmmData);
std::string filepath = "/var/tmp/modelSetDescription";
myGmm.writeJSON(filepath);
myXmmInput = { 0.2, 0.7 };
WHEN("GMM model is deserialized from file")
{
rapidmix::xmmStaticClassification myGmmFromFile;
myGmmFromFile.readJSON(filepath);
THEN("compare results of original and deserialized models")
{
REQUIRE(myGmm.run(myXmmInput)[0] == myGmmFromFile.run(myXmmInput)[0]);
......@@ -59,7 +54,7 @@ SCENARIO("Test GMM", "[machineLearning]")
{
rapidmix::xmmStaticClassification myGmmFromString;
myGmmFromString.putJSON(myGmm.getJSON());
THEN("compare results of original and deserialized models")
{
REQUIRE(myGmm.run(myXmmInput)[0] == myGmmFromString.run(myXmmInput)[0]);
......@@ -78,39 +73,39 @@ SCENARIO("Test GMR", "[machineLearning]")
{
rapidmix::xmmConfig xcfg;
xcfg.relativeRegularization = 0.1;
rapidmix::trainingData myXmmData;
std::vector<double> myXmmInput;
std::vector<double> myXmmOutput;
myXmmData.startRecording("lab1");
myXmmInput = { 0.2, 0.7 };
myXmmOutput = { 1.0 };
myXmmData.addElement(myXmmInput, myXmmOutput);
myXmmData.stopRecording();
myXmmData.startRecording("lab2");
myXmmInput = { 0.8, 0.1 };
myXmmOutput = { 2.0 };
myXmmData.addElement(myXmmInput, myXmmOutput);
myXmmData.stopRecording();
myXmmData.writeJSON("/var/tmp/testTrainingData.json");
rapidmix::xmmStaticRegression myGmr(xcfg);
myGmr.train(myXmmData);
std::string filepath = "/var/tmp/modelSetDescription";
myGmr.writeJSON(filepath);
myXmmInput = { 0.2, 0.7 };
WHEN("GMM model is deserialized from file")
{
rapidmix::xmmStaticClassification myGmrFromFile;
myGmrFromFile.readJSON(filepath);
THEN("compare results of original and deserialized models")
{
double epsilon = 0.001;
......@@ -119,12 +114,12 @@ SCENARIO("Test GMR", "[machineLearning]")
REQUIRE(std::abs(origOut - fileOut) < epsilon);
}
}
WHEN("GMM model is deserialized from JSON stream")
{
rapidmix::xmmStaticClassification myGmrFromString;
myGmrFromString.putJSON(myGmr.getJSON());
THEN("compare results of original and deserialized models")
{
double epsilon = 0.001;
......@@ -148,10 +143,10 @@ SCENARIO("Test HMM", "[machineLearning]")
xcfg.relativeRegularization = 0.1;
xcfg.states = 6;
xcfg.likelihoodWindow = 10;
rapidmix::trainingData myXmmData;
std::vector<double> myXmmOutput;
myXmmData.startRecording("lab1");
std::vector<std::vector<double>> myXmmPhrase = {
{ 0.0, 0.0 },
......@@ -179,16 +174,16 @@ SCENARIO("Test HMM", "[machineLearning]")
myXmmData.addElement(myXmmPhrase[i], myXmmOutput);
}
myXmmData.stopRecording();
rapidmix::xmmTemporalClassification myHmm(xcfg);
myHmm.train(myXmmData);
myXmmData.writeJSON("/var/tmp/testTrainingData.json");
std::string filepath = "/var/tmp/modelSetDescription";
myHmm.writeJSON(filepath);
WHEN("HMM model processes the phrase it was trained with")
{
THEN("check its time progression output is constantly increasing")
......@@ -201,16 +196,16 @@ SCENARIO("Test HMM", "[machineLearning]")
}
std::vector<double> sortedProgress = progress;
std::sort(sortedProgress.begin(), sortedProgress.end());
REQUIRE(std::equal(progress.begin(), progress.end(), sortedProgress.begin()));
}
}
WHEN("HMM model is deserialized from file")
{
rapidmix::xmmTemporalClassification myHmmFromFile;
myHmmFromFile.readJSON(filepath);
for (int i = 0; i < myXmmPhrase.size(); ++i) {
THEN("compare results of original and deserialized models")
......@@ -219,14 +214,14 @@ SCENARIO("Test HMM", "[machineLearning]")
}
}
}
WHEN("HMM model is deserialized from JSON stream")
{
rapidmix::xmmTemporalClassification myHmmFromString;
myHmmFromString.putJSON(myHmm.getJSON());
for (int i = 0; i < myXmmPhrase.size(); ++i) {
THEN("compare results of original and deserialized models")
{
REQUIRE(myHmm.run(myXmmPhrase[i]) == myHmmFromString.run(myXmmPhrase[i]));
......@@ -250,9 +245,9 @@ SCENARIO("Test HMR", "[machineLearning]")
xcfg.absoluteRegularization = 0.001;
xcfg.states = 6;
xcfg.likelihoodWindow = 10;
rapidmix::trainingData myXmmData;
myXmmData.startRecording("lab1");
std::vector <std::pair <std::vector<double>, std::vector<double>>> myXmmPhrase = {
{ { 0.0, 0.0 }, { 1.0 } },
......@@ -276,54 +271,59 @@ SCENARIO("Test HMR", "[machineLearning]")
{ { 1.5, 2.5 }, { 19.0 } },
{ { 1.6, 2.6 }, { 20.0 } }
};
for (int i = 0; i < myXmmPhrase.size(); ++i) {
myXmmData.addElement(myXmmPhrase[i].first, myXmmPhrase[i].second);
}
myXmmData.stopRecording();
rapidmix::xmmTemporalRegression myHmr(xcfg);
myHmr.train(myXmmData);
myXmmData.writeJSON("/var/tmp/testTrainingData.json");
std::string filepath = "/var/tmp/modelSetDescription";
myHmr.writeJSON(filepath);
myHmr.reset();
WHEN("HMR model processes the phrase it was trained with")
{
THEN("check its regression output is the same as the output example")
{
int cnt = 0;
double sum = 0;
for (int i = 0; i < myXmmPhrase.size(); ++i) {
std::vector<double> regression;
regression = myHmr.run(myXmmPhrase[i].first);
for (int j = 0; j < regression.size(); ++j) {
double delta = regression[j] - myXmmPhrase[i].second[j];
sum += delta * delta;
cnt++;
}
}
sum = std::sqrt(sum / cnt);
// totally arbitrary epsilon value :
double epsilon = 1.0;
REQUIRE(sum <= epsilon);
}
}
WHEN("HMR model is deserialized from file")
{
rapidmix::xmmTemporalRegression myHmrFromFile;
myHmrFromFile.readJSON(filepath);
for (int i = 0; i < myXmmPhrase.size(); ++i) {
myHmr.reset();
myHmrFromFile.reset();
THEN("compare results of original and deserialized models")
{
int cnt = 0;
......@@ -333,14 +333,14 @@ SCENARIO("Test HMR", "[machineLearning]")
std::vector<double> r1, r2;
r1 = myHmr.run(myXmmPhrase[i].first);
r2 = myHmrFromFile.run(myXmmPhrase[i].first);
for (int j = 0; j < r1.size(); ++j) {
double delta = r1[j] - r2[j];
sum += delta * delta;
cnt++;
}
}
sum = std::sqrt(sum / cnt);
// totally arbitrary epsilon value :
......@@ -349,33 +349,36 @@ SCENARIO("Test HMR", "[machineLearning]")
}
}
}
WHEN("HMR model is deserialized from JSON stream")
{
rapidmix::xmmTemporalRegression myHmrFromString;
myHmrFromString.putJSON(myHmr.getJSON());
for (int i = 0; i < myXmmPhrase.size(); ++i) {
myHmr.reset();
myHmrFromString.reset();
THEN("compare results of original and deserialized models")
{
int cnt = 0;
double sum = 0;
for (int i = 0; i < myXmmPhrase.size(); ++i) {
std::vector<double> r1, r2;
r1 = myHmr.run(myXmmPhrase[i].first);
r2 = myHmrFromString.run(myXmmPhrase[i].first);
for (int j = 0; j < r1.size(); ++j) {
double delta = r1[j] - r2[j];
sum += delta * delta;
cnt++;
}
}
sum = std::sqrt(sum / cnt);
// totally arbitrary epsilon value :
double epsilon = 0.1;
REQUIRE(sum <= epsilon);
......
......@@ -47,6 +47,7 @@ SCENARIO("Test rapidStream processing", "[signalProcessing]")
REQUIRE(myProcessor.sum() == 0.478);
REQUIRE(myProcessor.mean() == 0.09559999999999999);
REQUIRE(myProcessor.standardDeviation() == 0.33702557766436664);
REQUIRE(myProcessor.rms() == 0.3503221374677884);
}
}
......
#ifndef CATCH_CONFIG_MAIN
#define CATCH_CONFIG_MAIN
#endif
#include "catch.hpp"
#include "machineLearning.h"
//============================= TRAINING DATA ================================//
SCENARIO("Test training sets managements", "[machineLearning]")
{
GIVEN("A training set we fill in a variety of ways")
{
rapidmix::trainingData set;
set.createNewPhrase("test_label_01");
std::vector <std::pair <std::vector<double>, std::vector<double>>> phrase = {
{ { 0.0, 0.0 }, { 9.0 } },
{ { 1.0, 0.0 }, { 8.0 } },
{ { 2.0, 0.0 }, { 7.0 } },
{ { 3.0, 0.0 }, { 6.0 } },
{ { 4.0, 0.0 }, { 5.0 } },
{ { 5.0, 0.0 }, { 4.0 } },
{ { 6.0, 0.0 }, { 3.0 } },
{ { 7.0, 0.0 }, { 2.0 } },
{ { 8.0, 0.0 }, { 1.0 } },
{ { 9.0, 0.0 }, { 0.0 } }
};
for (int i = 0; i < phrase.size(); ++i) {
set.addElement(phrase[i].first, phrase[i].second);
}
WHEN("We serialize / deserialize a training set")
{
std::string js = set.getJSON();
std::cout << js << std::endl;
THEN("It should stay the same")
{
}
}
}
}
......@@ -7,8 +7,11 @@
objects = {
/* Begin PBXBuildFile section */
311BA2A61EDC6A8900244DAC /* test_rapidXmmTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EE21ED8480D00E9FAFA /* test_rapidXmmTools.cpp */; };
311BA2FD1EDC6F9F00244DAC /* rapidXmmTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 311BA2A91EDC6ADB00244DAC /* rapidXmmTools.cpp */; };
0BA41BAD1EE6E0ED00B74667 /* trainingData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EC01ED8459300E9FAFA /* trainingData.cpp */; };
0BA41BAE1EE6E10A00B74667 /* jsoncpp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5E081ED8450E00E9FAFA /* jsoncpp.cpp */; };
0BE2E7371EE56F4F00722712 /* rapidGVF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0BE2E7351EE56F4F00722712 /* rapidGVF.cpp */; };
0BE2E7381EE56F5800722712 /* GVF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0BE2E72F1EE56E6D00722712 /* GVF.cpp */; };
311BA2A61EDC6A8900244DAC /* test_rapidXMM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EE21ED8480D00E9FAFA /* test_rapidXMM.cpp */; };
311BA2FE1EDC6FD000244DAC /* xmmKMeans.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 311BA2C61EDC6EC100244DAC /* xmmKMeans.cpp */; };
311BA2FF1EDC6FD000244DAC /* xmmKMeansParameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 311BA2C81EDC6EC100244DAC /* xmmKMeansParameters.cpp */; };
311BA3001EDC6FD000244DAC /* xmmHierarchicalHmm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 311BA2CD1EDC6ECE00244DAC /* xmmHierarchicalHmm.cpp */; };
......@@ -26,20 +29,70 @@
311BA30C1EDC6FD000244DAC /* xmmJson.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 311BA2F71EDC6F0F00244DAC /* xmmJson.cpp */; };
311BA30D1EDC709900244DAC /* jsoncpp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5E081ED8450E00E9FAFA /* jsoncpp.cpp */; };
311BA30F1EDC711E00244DAC /* trainingData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EC01ED8459300E9FAFA /* trainingData.cpp */; };
311BA3101EDC746F00244DAC /* test_rapidPiPoTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EE11ED8480D00E9FAFA /* test_rapidPiPoTools.cpp */; };
311BA3101EDC746F00244DAC /* test_rapidPiPo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EE11ED8480D00E9FAFA /* test_rapidPiPo.cpp */; };
311BA3111EDC747A00244DAC /* rapidPiPoHost.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 311BA2AC1EDC6AED00244DAC /* rapidPiPoHost.cpp */; };
311BA3161EDC74E000244DAC /* libpipo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 311BA3141EDC74C400244DAC /* libpipo.a */; };
311BA31A1EDC7ADE00244DAC /* fft.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5A0E1ED8450C00E9FAFA /* fft.cpp */; };
311BA31B1EDC7ADE00244DAC /* maxiBark.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5A121ED8450C00E9FAFA /* maxiBark.cpp */; };
311BA31C1EDC7ADE00244DAC /* maxiFFT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5A141ED8450C00E9FAFA /* maxiFFT.cpp */; };
311BA31D1EDC7ADE00244DAC /* maxiMFCC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5A191ED8450C00E9FAFA /* maxiMFCC.cpp */; };
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 */; };
311BA3251EDCE80B00244DAC /* jsoncpp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5E081ED8450E00E9FAFA /* jsoncpp.cpp */; };
312C61BD1FE95A680085E283 /* trainingData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EC01ED8459300E9FAFA /* trainingData.cpp */; };
312C61CD1FE95A680085E283 /* jsoncpp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5E081ED8450E00E9FAFA /* jsoncpp.cpp */; };
312C61D41FE95A8F0085E283 /* test_trainingData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 312C61B71FE958CB0085E283 /* test_trainingData.cpp */; };
319C94A11FC5BFA80055BE40 /* PiPoHost.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 319C93FD1FC49BAA0055BE40 /* PiPoHost.cpp */; };
319C94A21FC5C0C10055BE40 /* PiPoCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 319C947C1FC49D490055BE40 /* PiPoCollection.cpp */; };
319C94A31FC5C0DE0055BE40 /* BayesianFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 319C93ED1FC49B5C0055BE40 /* BayesianFilter.cpp */; };
319C94A41FC5C0DE0055BE40 /* filter_utilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 319C93EF1FC49B5C0055BE40 /* filter_utilities.cpp */; };
319C94A51FC5C1200055BE40 /* finitedifferences.c in Sources */ = {isa = PBXBuildFile; fileRef = 319C94761FC49D120055BE40 /* finitedifferences.c */; };
319C94A61FC5C1200055BE40 /* rta_bands.c in Sources */ = {isa = PBXBuildFile; fileRef = 319C94281FC49CC10055BE40 /* rta_bands.c */; };
319C94A71FC5C1200055BE40 /* rta_biquad.c in Sources */ = {isa = PBXBuildFile; fileRef = 319C942A1FC49CC10055BE40 /* rta_biquad.c */; };
319C94A81FC5C1200055BE40 /* rta_correlation.c in Sources */ = {isa = PBXBuildFile; fileRef = 319C942C1FC49CC10055BE40 /* rta_correlation.c */; };
319C94A91FC5C1200055BE40 /* rta_cubic.c in Sources */ = {isa = PBXBuildFile; fileRef = 319C942E1FC49CC10055BE40 /* rta_cubic.c */; };
319C94AA1FC5C1200055BE40 /* rta_dct.c in Sources */ = {isa = PBXBuildFile; fileRef = 319C94301FC49CC10055BE40 /* rta_dct.c */; };
319C94AB1FC5C1200055BE40 /* rta_delta.c in Sources */ = {isa = PBXBuildFile; fileRef = 319C94321FC49CC10055BE40 /* rta_delta.c */; };
319C94AC1FC5C1200055BE40 /* rta_fft.c in Sources */ = {isa = PBXBuildFile; fileRef = 319C94341FC49CC10055BE40 /* rta_fft.c */; };
319C94AD1FC5C1200055BE40 /* rta_lifter.c in Sources */ = {isa = PBXBuildFile; fileRef = 319C94371FC49CC10055BE40 /* rta_lifter.c */; };
319C94AE1FC5C1200055BE40 /* rta_lpc.c in Sources */ = {isa = PBXBuildFile; fileRef = 319C94391FC49CC10055BE40 /* rta_lpc.c */; };
319C94AF1FC5C1200055BE40 /* rta_mel.c in Sources */ = {isa = PBXBuildFile; fileRef = 319C943B1FC49CC10055BE40 /* rta_mel.c */; };
319C94B11FC5C1200055BE40 /* rta_preemphasis.c in Sources */ = {isa = PBXBuildFile; fileRef = 319C943F1FC49CC10055BE40 /* rta_preemphasis.c */; };
319C94B21FC5C1200055BE40 /* rta_psy.c in Sources */ = {isa = PBXBuildFile; fileRef = 319C94411FC49CC10055BE40 /* rta_psy.c */; };
319C94B41FC5C1200055BE40 /* rta_window.c in Sources */ = {isa = PBXBuildFile; fileRef = 319C94451FC49CC10055BE40 /* rta_window.c */; };
319C94B51FC5C1200055BE40 /* rta_yin.c in Sources */ = {isa = PBXBuildFile; fileRef = 319C94471FC49CC10055BE40 /* rta_yin.c */; };
319C94B61FC5C1200055BE40 /* rta_mean_variance.c in Sources */ = {isa = PBXBuildFile; fileRef = 319C941B1FC49CAA0055BE40 /* rta_mean_variance.c */; };
319C94B71FC5C1200055BE40 /* rta_moments.c in Sources */ = {isa = PBXBuildFile; fileRef = 319C941D1FC49CAA0055BE40 /* rta_moments.c */; };
319C94B81FC5C1200055BE40 /* rta_selection.c in Sources */ = {isa = PBXBuildFile; fileRef = 319C941F1FC49CAA0055BE40 /* rta_selection.c */; };
319C94B91FC5C1200055BE40 /* rta_svd.c in Sources */ = {isa = PBXBuildFile; fileRef = 319C94211FC49CAA0055BE40 /* rta_svd.c */; };
319C94BA1FC5C1200055BE40 /* rta_bpf.c in Sources */ = {isa = PBXBuildFile; fileRef = 319C940A1FC49C990055BE40 /* rta_bpf.c */; };
319C94BB1FC5C1200055BE40 /* rta_int.c in Sources */ = {isa = PBXBuildFile; fileRef = 319C940E1FC49C990055BE40 /* rta_int.c */; };
319C94BC1FC5C1200055BE40 /* rta_util.c in Sources */ = {isa = PBXBuildFile; fileRef = 319C94141FC49C990055BE40 /* rta_util.c */; };
31A8F1971F4ECF3300CA8CEC /* rapidXMM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31A8F1941F4ECD1200CA8CEC /* rapidXMM.cpp */; };
BE0AC6251FD17669008056E6 /* BayesianFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 319C93ED1FC49B5C0055BE40 /* BayesianFilter.cpp */; };
BE0AC6261FD1766D008056E6 /* filter_utilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 319C93EF1FC49B5C0055BE40 /* filter_utilities.cpp */; };
BE0AC6271FD1768D008056E6 /* BayesianFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 319C93ED1FC49B5C0055BE40 /* BayesianFilter.cpp */; };
BE0AC6281FD17690008056E6 /* filter_utilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 319C93EF1FC49B5C0055BE40 /* filter_utilities.cpp */; };
BE5733061F505ECC0063F4D1 /* machineLearning.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EBE1ED8459300E9FAFA /* machineLearning.cpp */; };
BE5733071F505F190063F4D1 /* rapidGVF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0BE2E7351EE56F4F00722712 /* rapidGVF.cpp */; };
BE5733081F505F310063F4D1 /* GVF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0BE2E72F1EE56E6D00722712 /* GVF.cpp */; };
BE5733091F505F7F0063F4D1 /* seriesClassification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE9286531EF01A23006847CF /* seriesClassification.cpp */; };
BE57330A1F505F870063F4D1 /* regression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5DF91ED8450E00E9FAFA /* regression.cpp */; };
BE57330B1F505F920063F4D1 /* dtw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE9286571EF01C45006847CF /* dtw.cpp */; };
BE57330C1F505F9B0063F4D1 /* neuralNetwork.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5DF71ED8450E00E9FAFA /* neuralNetwork.cpp */; };
BE57330D1F505FAA0063F4D1 /* classification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5DEA1ED8450E00E9FAFA /* classification.cpp */; };
BE57330E1F505FAD0063F4D1 /* modelSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5DF51ED8450E00E9FAFA /* modelSet.cpp */; };
BE57330F1F505FBD0063F4D1 /* knnClassification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5DF31ED8450E00E9FAFA /* knnClassification.cpp */; };
BE5733101F505FC80063F4D1 /* svmClassification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE92864E1EF017E2006847CF /* svmClassification.cpp */; };
BE5733111F505FDC0063F4D1 /* libsvm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F0F1EDD74BC00E9FAFA /* libsvm.cpp */; };
BE9286491EF015AE006847CF /* test_signalProcessing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EE31ED8480D00E9FAFA /* test_signalProcessing.cpp */; };
BE92864C1EF015E7006847CF /* rapidStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE92864A1EF015E7006847CF /* rapidStream.cpp */; };
BE92864D1EF01622006847CF /* rapidStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE92864A1EF015E7006847CF /* rapidStream.cpp */; };
BE9286511EF01801006847CF /* svmClassification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE92864E1EF017E2006847CF /* svmClassification.cpp */; };
BE9286521EF01823006847CF /* libsvm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5F0F1EDD74BC00E9FAFA /* libsvm.cpp */; };
BE9286561EF01A2D006847CF /* seriesClassification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE9286531EF01A23006847CF /* seriesClassification.cpp */; };
BE92865A1EF01C4A006847CF /* dtw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE9286571EF01C45006847CF /* dtw.cpp */; };
BEA7B70F1EDD7B350003E84B /* machineLearning.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EBE1ED8459300E9FAFA /* machineLearning.cpp */; };
BEA7B7101EDD7B390003E84B /* trainingData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EC01ED8459300E9FAFA /* trainingData.cpp */; };
BEA7B7111EDD7B640003E84B /* svm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EED1ED849AA00E9FAFA /* svm.cpp */; };
BEA7B7121EDD7B660003E84B /* classification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5DEA1ED8450E00E9FAFA /* classification.cpp */; };
BEA7B7131EDD7B690003E84B /* knnClassification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5DF31ED8450E00E9FAFA /* knnClassification.cpp */; };
BEA7B7141EDD7B6B0003E84B /* modelSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5DF51ED8450E00E9FAFA /* modelSet.cpp */; };
......@@ -47,6 +100,18 @@
BEA7B7161EDD7B700003E84B /* regression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5DF91ED8450E00E9FAFA /* regression.cpp */; };
BEA7B7171EDD7B7E0003E84B /* jsoncpp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5E081ED8450E00E9FAFA /* jsoncpp.cpp */; };
BEA7B7181EDD7C0E0003E84B /* test_RapidLib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EDF1ED8480D00E9FAFA /* test_RapidLib.cpp */; };
BEA7B71B1EDD96090003E84B /* maxiFFT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5A141ED8450C00E9FAFA /* maxiFFT.cpp */; };
BEA7B71C1EDD960F0003E84B /* maxiMFCC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5A191ED8450C00E9FAFA /* maxiMFCC.cpp */; };
BEA7B71D1EDD96140003E84B /* fft.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5A0E1ED8450C00E9FAFA /* fft.cpp */; };
BEA7B71E1EDD963E0003E84B /* maximilian.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5A1F1ED8450C00E9FAFA /* maximilian.cpp */; };
BEA7B7201EDD96AC0003E84B /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 311BA3201EDC7B2400244DAC /* Accelerate.framework */; };
BEA7B7211EDD97130003E84B /* test_gvf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EDE1ED8480D00E9FAFA /* test_gvf.cpp */; };
BEF47B1B1F7A74E5005B0C35 /* searchWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BEF47B191F7A74E5005B0C35 /* searchWindow.cpp */; };
BEF47B1E1F7A74EE005B0C35 /* fastDTW.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BEF47B1C1F7A74EE005B0C35 /* fastDTW.cpp */; };
BEF47B211F7A74FC005B0C35 /* warpPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BEF47B1F1F7A74FC005B0C35 /* warpPath.cpp */; };
BEF47B221F7A8685005B0C35 /* fastDTW.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BEF47B1C1F7A74EE005B0C35 /* fastDTW.cpp */; };
BEF47B231F7A868B005B0C35 /* warpPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BEF47B1F1F7A74FC005B0C35 /* warpPath.cpp */; };
BEF47B241F7A8693005B0C35 /* searchWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BEF47B191F7A74E5005B0C35 /* searchWindow.cpp */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
......@@ -86,36 +151,40 @@
);
runOnlyForDeploymentPostprocessing = 1;
};
312C61CF1FE95A680085E283 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = /usr/share/man/man1/;
dstSubfolderSpec = 0;
files = (
);
runOnlyForDeploymentPostprocessing = 1;
};
31D7B7281E6B048100917757 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 12;
dstPath = "";
dstSubfolderSpec = 16;
files = (
311BA3241EDC7BA800244DAC /* DnB-loop-175BPM.wav in CopyFiles */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
0BE2E72F1EE56E6D00722712 /* GVF.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GVF.cpp; sourceTree = "<group>"; };
0BE2E7301EE56E6D00722712 /* GVF.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GVF.h; sourceTree = "<group>"; };
0BE2E7311EE56E6D00722712 /* GVFGesture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GVFGesture.h; sourceTree = "<group>"; };
0BE2E7321EE56E6D00722712 /* GVFUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GVFUtils.h; sourceTree = "<group>"; };
0BE2E7331EE56E6D00722712 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = "<group>"; };
0BE2E7351EE56F4F00722712 /* rapidGVF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rapidGVF.cpp; sourceTree = "<group>"; };
0BE2E7361EE56F4F00722712 /* rapidGVF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rapidGVF.h; sourceTree = "<group>"; };
0BFFEF1B1E56082700EF19A5 /* test_GVF */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = test_GVF; sourceTree = BUILT_PRODUCTS_DIR; };
0BFFEF261E56083C00EF19A5 /* test_RapidLib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = test_RapidLib; sourceTree = BUILT_PRODUCTS_DIR; };
0BFFEF311E56085C00EF19A5 /* test_rapidXmmTools */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = test_rapidXmmTools; sourceTree = BUILT_PRODUCTS_DIR; };
0BFFEF311E56085C00EF19A5 /* test_rapidXMM */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = test_rapidXMM; sourceTree = BUILT_PRODUCTS_DIR; };
0BFFEF3F1E5608C000EF19A5 /* test_signalProcessing */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = test_signalProcessing; sourceTree = BUILT_PRODUCTS_DIR; };
311BA2A91EDC6ADB00244DAC /* rapidXmmTools.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = rapidXmmTools.cpp; path = rapidXmmTools/rapidXmmTools.cpp; sourceTree = "<group>"; };
311BA2AA1EDC6ADB00244DAC /* rapidXmmTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rapidXmmTools.h; path = rapidXmmTools/rapidXmmTools.h; sourceTree = "<group>"; };
311BA2AC1EDC6AED00244DAC /* rapidPiPoHost.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = rapidPiPoHost.cpp; path = rapidPiPoTools/rapidPiPoHost.cpp; sourceTree = "<group>"; };
311BA2AD1EDC6AED00244DAC /* rapidPiPoHost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rapidPiPoHost.h; path = rapidPiPoTools/rapidPiPoHost.h; sourceTree = "<group>"; };
311BA2B11EDC6C6800244DAC /* PiPo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPo.h; path = pipo/src/include/PiPo.h; sourceTree = "<group>"; };
311BA2B21EDC6C6800244DAC /* PiPoParallel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoParallel.h; path = pipo/src/include/PiPoParallel.h; sourceTree = "<group>"; };
311BA2B31EDC6C6800244DAC /* PiPoSequence.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoSequence.h; path = pipo/src/include/PiPoSequence.h; sourceTree = "<group>"; };
311BA2B41EDC6C6800244DAC /* RingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RingBuffer.h; path = pipo/src/include/RingBuffer.h; sourceTree = "<group>"; };
311BA2B61EDC6C7E00244DAC /* PiPoCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PiPoCollection.cpp; path = pipo/src/host/PiPoCollection.cpp; sourceTree = "<group>"; };
311BA2B71EDC6C7E00244DAC /* PiPoCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoCollection.h; path = pipo/src/host/PiPoCollection.h; sourceTree = "<group>"; };
311BA2B81EDC6C7E00244DAC /* PiPoGraph.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoGraph.h; path = pipo/src/host/PiPoGraph.h; sourceTree = "<group>"; };
311BA2B91EDC6C7E00244DAC /* PiPoHost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoHost.h; path = pipo/src/host/PiPoHost.h; sourceTree = "<group>"; };
311BA2BA1EDC6C7E00244DAC /* PiPoModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoModule.h; path = pipo/src/host/PiPoModule.h; sourceTree = "<group>"; };
311BA2BC1EDC6DB900244DAC /* rapidPiPoTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rapidPiPoTools.h; path = rapidPiPoTools/rapidPiPoTools.h; sourceTree = "<group>"; };
311BA2C61EDC6EC100244DAC /* xmmKMeans.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = xmmKMeans.cpp; path = xmm/src/models/kmeans/xmmKMeans.cpp; sourceTree = "<group>"; };
311BA2C71EDC6EC100244DAC /* xmmKMeans.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmKMeans.hpp; path = xmm/src/models/kmeans/xmmKMeans.hpp; sourceTree = "<group>"; };
......@@ -157,10 +226,133 @@
311BA2F81EDC6F0F00244DAC /* xmmJson.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmJson.hpp; path = xmm/src/core/common/xmmJson.hpp; sourceTree = "<group>"; };
311BA2F91EDC6F0F00244DAC /* xmmMatrix.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmMatrix.hpp; path = xmm/src/core/common/xmmMatrix.hpp; sourceTree = "<group>"; };
311BA2FC1EDC6F1900244DAC /* xmm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = xmm.h; path = xmm/src/xmm.h; sourceTree = "<group>"; };
311BA3141EDC74C400244DAC /* libpipo.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libpipo.a; path = pipo/bin/osx/libpipo.a; sourceTree = "<group>"; };
311BA3201EDC7B2400244DAC /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; };
311BA3231EDC7BA400244DAC /* DnB-loop-175BPM.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = "DnB-loop-175BPM.wav"; path = "data/DnB-loop-175BPM.wav"; sourceTree = "<group>"; };
31D7B72C1E6B048100917757 /* test_rapidPiPoTools */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = test_rapidPiPoTools; sourceTree = BUILT_PRODUCTS_DIR; };
312C61B71FE958CB0085E283 /* test_trainingData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = test_trainingData.cpp; sourceTree = "<group>"; };
312C61D31FE95A680085E283 /* test_trainingData */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = test_trainingData; sourceTree = BUILT_PRODUCTS_DIR; };
318E7A361FD748D900FEEB7E /* pipo.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = pipo.json; path = data/pipo.json; sourceTree = "<group>"; };
319C93ED1FC49B5C0055BE40 /* BayesianFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BayesianFilter.cpp; path = pipo/modules/bayesfilter/src/BayesianFilter.cpp; sourceTree = "<group>"; };
319C93EE1FC49B5C0055BE40 /* BayesianFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BayesianFilter.h; path = pipo/modules/bayesfilter/src/BayesianFilter.h; sourceTree = "<group>"; };
319C93EF1FC49B5C0055BE40 /* filter_utilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = filter_utilities.cpp; path = pipo/modules/bayesfilter/src/filter_utilities.cpp; sourceTree = "<group>"; };
319C93F01FC49B5C0055BE40 /* filter_utilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = filter_utilities.h; path = pipo/modules/bayesfilter/src/filter_utilities.h; sourceTree = "<group>"; };
319C93F31FC49B8F0055BE40 /* mimo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mimo.h; path = pipo/sdk/src/mimo.h; sourceTree = "<group>"; };
319C93F41FC49B8F0055BE40 /* PiPo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPo.h; path = pipo/sdk/src/PiPo.h; sourceTree = "<group>"; };
319C93F51FC49B8F0055BE40 /* PiPoParallel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoParallel.h; path = pipo/sdk/src/PiPoParallel.h; sourceTree = "<group>"; };
319C93F61FC49B8F0055BE40 /* PiPoSequence.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoSequence.h; path = pipo/sdk/src/PiPoSequence.h; sourceTree = "<group>"; };
319C93F71FC49B8F0055BE40 /* RingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RingBuffer.h; path = pipo/sdk/src/RingBuffer.h; sourceTree = "<group>"; };
319C93F91FC49BAA0055BE40 /* mimo_host.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mimo_host.h; path = pipo/sdk/src/host/mimo_host.h; sourceTree = "<group>"; };
319C93FA1FC49BAA0055BE40 /* PiPoChain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoChain.h; path = pipo/sdk/src/host/PiPoChain.h; sourceTree = "<group>"; };
319C93FB1FC49BAA0055BE40 /* PiPoCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoCollection.h; path = pipo/sdk/src/host/PiPoCollection.h; sourceTree = "<group>"; };
319C93FC1FC49BAA0055BE40 /* PiPoGraph.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoGraph.h; path = pipo/sdk/src/host/PiPoGraph.h; sourceTree = "<group>"; };
319C93FD1FC49BAA0055BE40 /* PiPoHost.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PiPoHost.cpp; path = pipo/sdk/src/host/PiPoHost.cpp; sourceTree = "<group>"; };
319C93FE1FC49BAA0055BE40 /* PiPoHost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoHost.h; path = pipo/sdk/src/host/PiPoHost.h; sourceTree = "<group>"; };
319C93FF1FC49BAA0055BE40 /* PiPoModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoModule.h; path = pipo/sdk/src/host/PiPoModule.h; sourceTree = "<group>"; };
319C94001FC49BAA0055BE40 /* PiPoModuleClass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoModuleClass.h; path = pipo/sdk/src/host/PiPoModuleClass.h; sourceTree = "<group>"; };
319C94011FC49BAA0055BE40 /* PiPoOp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoOp.h; path = pipo/sdk/src/host/PiPoOp.h; sourceTree = "<group>"; };
319C94041FC49C5D0055BE40 /* rta.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta.h; path = pipo/modules/rta/src/rta.h; sourceTree = "<group>"; };
319C940A1FC49C990055BE40 /* rta_bpf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_bpf.c; path = pipo/modules/rta/src/util/rta_bpf.c; sourceTree = "<group>"; };
319C940B1FC49C990055BE40 /* rta_bpf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_bpf.h; path = pipo/modules/rta/src/util/rta_bpf.h; sourceTree = "<group>"; };
319C940C1FC49C990055BE40 /* rta_complex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_complex.h; path = pipo/modules/rta/src/util/rta_complex.h; sourceTree = "<group>"; };
319C940D1FC49C990055BE40 /* rta_float.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_float.h; path = pipo/modules/rta/src/util/rta_float.h; sourceTree = "<group>"; };
319C940E1FC49C990055BE40 /* rta_int.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_int.c; path = pipo/modules/rta/src/util/rta_int.c; sourceTree = "<group>"; };
319C940F1FC49C990055BE40 /* rta_int.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_int.h; path = pipo/modules/rta/src/util/rta_int.h; sourceTree = "<group>"; };
319C94101FC49C990055BE40 /* rta_math.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_math.h; path = pipo/modules/rta/src/util/rta_math.h; sourceTree = "<group>"; };
319C94111FC49C990055BE40 /* rta_stdio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_stdio.h; path = pipo/modules/rta/src/util/rta_stdio.h; sourceTree = "<group>"; };
319C94121FC49C990055BE40 /* rta_stdlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_stdlib.h; path = pipo/modules/rta/src/util/rta_stdlib.h; sourceTree = "<group>"; };
319C94131FC49C990055BE40 /* rta_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_types.h; path = pipo/modules/rta/src/util/rta_types.h; sourceTree = "<group>"; };
319C94141FC49C990055BE40 /* rta_util.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_util.c; path = pipo/modules/rta/src/util/rta_util.c; sourceTree = "<group>"; };
319C94151FC49C990055BE40 /* rta_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_util.h; path = pipo/modules/rta/src/util/rta_util.h; sourceTree = "<group>"; };
319C941B1FC49CAA0055BE40 /* rta_mean_variance.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_mean_variance.c; path = pipo/modules/rta/src/statistics/rta_mean_variance.c; sourceTree = "<group>"; };
319C941C1FC49CAA0055BE40 /* rta_mean_variance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_mean_variance.h; path = pipo/modules/rta/src/statistics/rta_mean_variance.h; sourceTree = "<group>"; };
319C941D1FC49CAA0055BE40 /* rta_moments.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_moments.c; path = pipo/modules/rta/src/statistics/rta_moments.c; sourceTree = "<group>"; };
319C941E1FC49CAA0055BE40 /* rta_moments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_moments.h; path = pipo/modules/rta/src/statistics/rta_moments.h; sourceTree = "<group>"; };
319C941F1FC49CAA0055BE40 /* rta_selection.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_selection.c; path = pipo/modules/rta/src/statistics/rta_selection.c; sourceTree = "<group>"; };
319C94201FC49CAA0055BE40 /* rta_selection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_selection.h; path = pipo/modules/rta/src/statistics/rta_selection.h; sourceTree = "<group>"; };
319C94211FC49CAA0055BE40 /* rta_svd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_svd.c; path = pipo/modules/rta/src/statistics/rta_svd.c; sourceTree = "<group>"; };
319C94221FC49CAA0055BE40 /* rta_svd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_svd.h; path = pipo/modules/rta/src/statistics/rta_svd.h; sourceTree = "<group>"; };
319C94281FC49CC10055BE40 /* rta_bands.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_bands.c; path = pipo/modules/rta/src/signal/rta_bands.c; sourceTree = "<group>"; };
319C94291FC49CC10055BE40 /* rta_bands.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_bands.h; path = pipo/modules/rta/src/signal/rta_bands.h; sourceTree = "<group>"; };
319C942A1FC49CC10055BE40 /* rta_biquad.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_biquad.c; path = pipo/modules/rta/src/signal/rta_biquad.c; sourceTree = "<group>"; };
319C942B1FC49CC10055BE40 /* rta_biquad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_biquad.h; path = pipo/modules/rta/src/signal/rta_biquad.h; sourceTree = "<group>"; };
319C942C1FC49CC10055BE40 /* rta_correlation.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_correlation.c; path = pipo/modules/rta/src/signal/rta_correlation.c; sourceTree = "<group>"; };
319C942D1FC49CC10055BE40 /* rta_correlation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_correlation.h; path = pipo/modules/rta/src/signal/rta_correlation.h; sourceTree = "<group>"; };
319C942E1FC49CC10055BE40 /* rta_cubic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_cubic.c; path = pipo/modules/rta/src/signal/rta_cubic.c; sourceTree = "<group>"; };
319C942F1FC49CC10055BE40 /* rta_cubic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_cubic.h; path = pipo/modules/rta/src/signal/rta_cubic.h; sourceTree = "<group>"; };
319C94301FC49CC10055BE40 /* rta_dct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_dct.c; path = pipo/modules/rta/src/signal/rta_dct.c; sourceTree = "<group>"; };
319C94311FC49CC10055BE40 /* rta_dct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_dct.h; path = pipo/modules/rta/src/signal/rta_dct.h; sourceTree = "<group>"; };
319C94321FC49CC10055BE40 /* rta_delta.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_delta.c; path = pipo/modules/rta/src/signal/rta_delta.c; sourceTree = "<group>"; };
319C94331FC49CC10055BE40 /* rta_delta.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_delta.h; path = pipo/modules/rta/src/signal/rta_delta.h; sourceTree = "<group>"; };
319C94341FC49CC10055BE40 /* rta_fft.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_fft.c; path = pipo/modules/rta/src/signal/rta_fft.c; sourceTree = "<group>"; };
319C94351FC49CC10055BE40 /* rta_fft.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_fft.h; path = pipo/modules/rta/src/signal/rta_fft.h; sourceTree = "<group>"; };
319C94361FC49CC10055BE40 /* rta_filter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_filter.h; path = pipo/modules/rta/src/signal/rta_filter.h; sourceTree = "<group>"; };
319C94371FC49CC10055BE40 /* rta_lifter.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_lifter.c; path = pipo/modules/rta/src/signal/rta_lifter.c; sourceTree = "<group>"; };
319C94381FC49CC10055BE40 /* rta_lifter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_lifter.h; path = pipo/modules/rta/src/signal/rta_lifter.h; sourceTree = "<group>"; };
319C94391FC49CC10055BE40 /* rta_lpc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_lpc.c; path = pipo/modules/rta/src/signal/rta_lpc.c; sourceTree = "<group>"; };
319C943A1FC49CC10055BE40 /* rta_lpc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_lpc.h; path = pipo/modules/rta/src/signal/rta_lpc.h; sourceTree = "<group>"; };
319C943B1FC49CC10055BE40 /* rta_mel.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_mel.c; path = pipo/modules/rta/src/signal/rta_mel.c; sourceTree = "<group>"; };
319C943C1FC49CC10055BE40 /* rta_mel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_mel.h; path = pipo/modules/rta/src/signal/rta_mel.h; sourceTree = "<group>"; };
319C943D1FC49CC10055BE40 /* rta_onepole.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_onepole.c; path = pipo/modules/rta/src/signal/rta_onepole.c; sourceTree = "<group>"; };
319C943E1FC49CC10055BE40 /* rta_onepole.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_onepole.h; path = pipo/modules/rta/src/signal/rta_onepole.h; sourceTree = "<group>"; };
319C943F1FC49CC10055BE40 /* rta_preemphasis.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_preemphasis.c; path = pipo/modules/rta/src/signal/rta_preemphasis.c; sourceTree = "<group>"; };
319C94401FC49CC10055BE40 /* rta_preemphasis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_preemphasis.h; path = pipo/modules/rta/src/signal/rta_preemphasis.h; sourceTree = "<group>"; };
319C94411FC49CC10055BE40 /* rta_psy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_psy.c; path = pipo/modules/rta/src/signal/rta_psy.c; sourceTree = "<group>"; };
319C94421FC49CC10055BE40 /* rta_psy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_psy.h; path = pipo/modules/rta/src/signal/rta_psy.h; sourceTree = "<group>"; };
319C94431FC49CC10055BE40 /* rta_resample.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_resample.c; path = pipo/modules/rta/src/signal/rta_resample.c; sourceTree = "<group>"; };
319C94441FC49CC10055BE40 /* rta_resample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_resample.h; path = pipo/modules/rta/src/signal/rta_resample.h; sourceTree = "<group>"; };
319C94451FC49CC10055BE40 /* rta_window.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_window.c; path = pipo/modules/rta/src/signal/rta_window.c; sourceTree = "<group>"; };
319C94461FC49CC10055BE40 /* rta_window.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_window.h; path = pipo/modules/rta/src/signal/rta_window.h; sourceTree = "<group>"; };
319C94471FC49CC10055BE40 /* rta_yin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_yin.c; path = pipo/modules/rta/src/signal/rta_yin.c; sourceTree = "<group>"; };
319C94481FC49CC10055BE40 /* rta_yin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_yin.h; path = pipo/modules/rta/src/signal/rta_yin.h; sourceTree = "<group>"; };
319C945B1FC49CD10055BE40 /* rta_kdtree.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_kdtree.c; path = pipo/modules/rta/src/recognition/rta_kdtree.c; sourceTree = "<group>"; };
319C945C1FC49CD10055BE40 /* rta_kdtree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_kdtree.h; path = pipo/modules/rta/src/recognition/rta_kdtree.h; sourceTree = "<group>"; };
319C945D1FC49CD10055BE40 /* rta_kdtreebuild.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_kdtreebuild.c; path = pipo/modules/rta/src/recognition/rta_kdtreebuild.c; sourceTree = "<group>"; };
319C945E1FC49CD10055BE40 /* rta_kdtreeintern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_kdtreeintern.h; path = pipo/modules/rta/src/recognition/rta_kdtreeintern.h; sourceTree = "<group>"; };
319C945F1FC49CD10055BE40 /* rta_kdtreesearch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_kdtreesearch.c; path = pipo/modules/rta/src/recognition/rta_kdtreesearch.c; sourceTree = "<group>"; };
319C94601FC49CD10055BE40 /* rta_mahalanobis.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rta_mahalanobis.c; path = pipo/modules/rta/src/recognition/rta_mahalanobis.c; sourceTree = "<group>"; };
319C94611FC49CD10055BE40 /* rta_mahalanobis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_mahalanobis.h; path = pipo/modules/rta/src/recognition/rta_mahalanobis.h; sourceTree = "<group>"; };
319C94741FC49CF90055BE40 /* rta_configuration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rta_configuration.h; path = pipo/modules/rta/bindings/lib/rta_configuration.h; sourceTree = "<group>"; };
319C94761FC49D120055BE40 /* finitedifferences.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = finitedifferences.c; path = pipo/modules/finitedifferences/finitedifferences.c; sourceTree = "<group>"; };
319C94771FC49D120055BE40 /* finitedifferences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = finitedifferences.h; path = pipo/modules/finitedifferences/finitedifferences.h; sourceTree = "<group>"; };
319C947A1FC49D260055BE40 /* mimo_stats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mimo_stats.h; path = pipo/modules/mimo/mimo_stats.h; sourceTree = "<group>"; };
319C947C1FC49D490055BE40 /* PiPoCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PiPoCollection.cpp; path = pipo/modules/collection/PiPoCollection.cpp; sourceTree = "<group>"; };
319C947E1FC49D690055BE40 /* PiPoBands.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoBands.h; path = pipo/modules/PiPoBands.h; sourceTree = "<group>"; };
319C947F1FC49D690055BE40 /* PiPoBasic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoBasic.h; path = pipo/modules/PiPoBasic.h; sourceTree = "<group>"; };
319C94801FC49D690055BE40 /* PiPoBayesFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoBayesFilter.h; path = pipo/modules/PiPoBayesFilter.h; sourceTree = "<group>"; };
319C94811FC49D690055BE40 /* PiPoBiquad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoBiquad.h; path = pipo/modules/PiPoBiquad.h; sourceTree = "<group>"; };
319C94821FC49D690055BE40 /* PiPoBranch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoBranch.h; path = pipo/modules/PiPoBranch.h; sourceTree = "<group>"; };
319C94831FC49D690055BE40 /* PiPoChop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoChop.h; path = pipo/modules/PiPoChop.h; sourceTree = "<group>"; };
319C94841FC49D690055BE40 /* PiPoConst.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoConst.h; path = pipo/modules/PiPoConst.h; sourceTree = "<group>"; };
319C94851FC49D690055BE40 /* PiPoDct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoDct.h; path = pipo/modules/PiPoDct.h; sourceTree = "<group>"; };
319C94861FC49D690055BE40 /* PiPoDelta.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoDelta.h; path = pipo/modules/PiPoDelta.h; sourceTree = "<group>"; };
319C94871FC49D690055BE40 /* PiPoDescr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoDescr.h; path = pipo/modules/PiPoDescr.h; sourceTree = "<group>"; };
319C94881FC49D690055BE40 /* PiPoFft.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoFft.h; path = pipo/modules/PiPoFft.h; sourceTree = "<group>"; };
319C94891FC49D690055BE40 /* PiPoFiniteDif.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoFiniteDif.h; path = pipo/modules/PiPoFiniteDif.h; sourceTree = "<group>"; };
319C948A1FC49D690055BE40 /* PiPoGate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoGate.h; path = pipo/modules/PiPoGate.h; sourceTree = "<group>"; };
319C948B1FC49D690055BE40 /* PiPoIdentity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoIdentity.h; path = pipo/modules/PiPoIdentity.h; sourceTree = "<group>"; };
319C948C1FC49D690055BE40 /* PiPoIdesc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoIdesc.h; path = pipo/modules/PiPoIdesc.h; sourceTree = "<group>"; };
319C948D1FC49D690055BE40 /* PiPoLpc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoLpc.h; path = pipo/modules/PiPoLpc.h; sourceTree = "<group>"; };
319C948E1FC49D690055BE40 /* PiPoMaximChroma.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoMaximChroma.h; path = pipo/modules/PiPoMaximChroma.h; sourceTree = "<group>"; };
319C948F1FC49D690055BE40 /* PiPoMeanStddev.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoMeanStddev.h; path = pipo/modules/PiPoMeanStddev.h; sourceTree = "<group>"; };
319C94901FC49D690055BE40 /* PiPoMedian.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoMedian.h; path = pipo/modules/PiPoMedian.h; sourceTree = "<group>"; };
319C94911FC49D690055BE40 /* PiPoMel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoMel.h; path = pipo/modules/PiPoMel.h; sourceTree = "<group>"; };
319C94921FC49D690055BE40 /* PiPoMfcc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoMfcc.h; path = pipo/modules/PiPoMfcc.h; sourceTree = "<group>"; };
319C94931FC49D690055BE40 /* PiPoMinMax.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoMinMax.h; path = pipo/modules/PiPoMinMax.h; sourceTree = "<group>"; };
319C94941FC49D690055BE40 /* PiPoMoments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoMoments.h; path = pipo/modules/PiPoMoments.h; sourceTree = "<group>"; };
319C94951FC49D690055BE40 /* PiPoMvavrg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoMvavrg.h; path = pipo/modules/PiPoMvavrg.h; sourceTree = "<group>"; };
319C94961FC49D690055BE40 /* PiPoOnseg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoOnseg.h; path = pipo/modules/PiPoOnseg.h; sourceTree = "<group>"; };
319C94971FC49D690055BE40 /* PiPoPeaks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoPeaks.h; path = pipo/modules/PiPoPeaks.h; sourceTree = "<group>"; };
319C94981FC49D690055BE40 /* PiPoPsy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoPsy.h; path = pipo/modules/PiPoPsy.h; sourceTree = "<group>"; };
319C94991FC49D690055BE40 /* PiPoRms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoRms.h; path = pipo/modules/PiPoRms.h; sourceTree = "<group>"; };
319C949A1FC49D690055BE40 /* PiPoScale.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoScale.h; path = pipo/modules/PiPoScale.h; sourceTree = "<group>"; };
319C949B1FC49D690055BE40 /* PiPoSelect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoSelect.h; path = pipo/modules/PiPoSelect.h; sourceTree = "<group>"; };
319C949C1FC49D690055BE40 /* PiPoSlice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoSlice.h; path = pipo/modules/PiPoSlice.h; sourceTree = "<group>"; };
319C949D1FC49D690055BE40 /* PiPoSum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoSum.h; path = pipo/modules/PiPoSum.h; sourceTree = "<group>"; };
319C949E1FC49D690055BE40 /* PiPoWavelet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoWavelet.h; path = pipo/modules/PiPoWavelet.h; sourceTree = "<group>"; };
319C949F1FC49D690055BE40 /* PiPoYin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiPoYin.h; path = pipo/modules/PiPoYin.h; sourceTree = "<group>"; };
319C94A01FC49D690055BE40 /* TempMod.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TempMod.h; path = pipo/modules/TempMod.h; sourceTree = "<group>"; };
31A8F1941F4ECD1200CA8CEC /* rapidXMM.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = rapidXMM.cpp; path = rapidXMM/rapidXMM.cpp; sourceTree = "<group>"; };
31A8F1951F4ECD1200CA8CEC /* rapidXMM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rapidXMM.h; path = rapidXMM/rapidXMM.h; sourceTree = "<group>"; };
31D7B72C1E6B048100917757 /* test_rapidPiPo */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = test_rapidPiPo; sourceTree = BUILT_PRODUCTS_DIR; };
BE2C5A0A1ED8450C00E9FAFA /* .gitignore */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = .gitignore; sourceTree = "<group>"; };
BE2C5A0B1ED8450C00E9FAFA /* beat2.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = beat2.wav; sourceTree = "<group>"; };
BE2C5A0C1ED8450C00E9FAFA /* blip.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = blip.wav; sourceTree = "<group>"; };
......@@ -212,111 +404,32 @@
BE2C5EC01ED8459300E9FAFA /* trainingData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = trainingData.cpp; sourceTree = "<group>"; };
BE2C5EC11ED8459300E9FAFA /* trainingData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = trainingData.h; sourceTree = "<group>"; };
BE2C5EC21ED8459300E9FAFA /* rapidmix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rapidmix.h; sourceTree = "<group>"; };
BE2C5EC51ED8459300E9FAFA /* rapidStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rapidStream.cpp; sourceTree = "<group>"; };
BE2C5EC61ED8459300E9FAFA /* rapidStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rapidStream.h; sourceTree = "<group>"; };
BE2C5EC71ED8459300E9FAFA /* signalProcessing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = signalProcessing.h; sourceTree = "<group>"; };
BE2C5EDA1ED8471F00E9FAFA /* catch.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = catch.hpp; sourceTree = "<group>"; };
BE2C5EDB1ED8471F00E9FAFA /* LICENSE_1_0.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE_1_0.txt; sourceTree = "<group>"; };
BE2C5EDE1ED8480D00E9FAFA /* test_gvf.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = test_gvf.cpp; sourceTree = "<group>"; };
BE2C5EDF1ED8480D00E9FAFA /* test_RapidLib.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = test_RapidLib.cpp; sourceTree = "<group>"; };
BE2C5EE01ED8480D00E9FAFA /* test_rapidmix-api.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "test_rapidmix-api.cpp"; sourceTree = "<group>"; };
BE2C5EE11ED8480D00E9FAFA /* test_rapidPiPoTools.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = test_rapidPiPoTools.cpp; sourceTree = "<group>"; };
BE2C5EE21ED8480D00E9FAFA /* test_rapidXmmTools.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = test_rapidXmmTools.cpp; sourceTree = "<group>"; };
BE2C5EE11ED8480D00E9FAFA /* test_rapidPiPo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = test_rapidPiPo.cpp; sourceTree = "<group>"; };
BE2C5EE21ED8480D00E9FAFA /* test_rapidXMM.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = test_rapidXMM.cpp; sourceTree = "<group>"; };
BE2C5EE31ED8480D00E9FAFA /* test_signalProcessing.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = test_signalProcessing.cpp; sourceTree = "<group>"; };
BE2C5EED1ED849AA00E9FAFA /* svm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = svm.cpp; sourceTree = "<group>"; };
BE2C5EEE1ED849AA00E9FAFA /* svm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = svm.h; sourceTree = "<group>"; };
BE2C5EF21EDD73D000E9FAFA /* mimo_stats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mimo_stats.h; sourceTree = "<group>"; };
BE2C5EF31EDD73D000E9FAFA /* PiPoBands.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoBands.h; sourceTree = "<group>"; };
BE2C5EF41EDD73D000E9FAFA /* PiPoBayesFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoBayesFilter.h; sourceTree = "<group>"; };
BE2C5EF51EDD73D000E9FAFA /* PiPoBiquad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoBiquad.h; sourceTree = "<group>"; };
BE2C5EF61EDD73D000E9FAFA /* PiPoChop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoChop.h; sourceTree = "<group>"; };
BE2C5EF71EDD73D000E9FAFA /* PiPoConst.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoConst.h; sourceTree = "<group>"; };
BE2C5EF81EDD73D000E9FAFA /* PiPoDct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoDct.h; sourceTree = "<group>"; };
BE2C5EF91EDD73D000E9FAFA /* PiPoDelta.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoDelta.h; sourceTree = "<group>"; };
BE2C5EFA1EDD73D000E9FAFA /* PiPoFft.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoFft.h; sourceTree = "<group>"; };
BE2C5EFB1EDD73D000E9FAFA /* PiPoFiniteDif.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoFiniteDif.h; sourceTree = "<group>"; };
BE2C5EFC1EDD73D000E9FAFA /* PiPoGate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoGate.h; sourceTree = "<group>"; };
BE2C5EFD1EDD73D000E9FAFA /* PiPoLpc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoLpc.h; sourceTree = "<group>"; };
BE2C5EFE1EDD73D000E9FAFA /* PiPoLpcFormants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoLpcFormants.h; sourceTree = "<group>"; };
BE2C5EFF1EDD73D000E9FAFA /* PiPoMeanStddev.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoMeanStddev.h; sourceTree = "<group>"; };
BE2C5F001EDD73D000E9FAFA /* PiPoMedian.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoMedian.h; sourceTree = "<group>"; };
BE2C5F011EDD73D000E9FAFA /* PiPoMel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoMel.h; sourceTree = "<group>"; };
BE2C5F021EDD73D000E9FAFA /* PiPoMfcc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoMfcc.h; sourceTree = "<group>"; };
BE2C5F031EDD73D000E9FAFA /* PiPoMinMax.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoMinMax.h; sourceTree = "<group>"; };
BE2C5F041EDD73D000E9FAFA /* PiPoMoments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoMoments.h; sourceTree = "<group>"; };
BE2C5F051EDD73D000E9FAFA /* PiPoMvavrg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoMvavrg.h; sourceTree = "<group>"; };
BE2C5F061EDD73D000E9FAFA /* PiPoOnseg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoOnseg.h; sourceTree = "<group>"; };
BE2C5F071EDD73D000E9FAFA /* PiPoPeaks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoPeaks.h; sourceTree = "<group>"; };
BE2C5F081EDD73D000E9FAFA /* PiPoRms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoRms.h; sourceTree = "<group>"; };
BE2C5F091EDD73D000E9FAFA /* PiPoScale.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoScale.h; sourceTree = "<group>"; };
BE2C5F0A1EDD73D000E9FAFA /* PiPoSelect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoSelect.h; sourceTree = "<group>"; };
BE2C5F0B1EDD73D000E9FAFA /* PiPoSlice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoSlice.h; sourceTree = "<group>"; };
BE2C5F0C1EDD73D000E9FAFA /* PiPoSum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiPoSum.h; sourceTree = "<group>"; };
BE2C5F0D1EDD73D000E9FAFA /* TempMod.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TempMod.h; sourceTree = "<group>"; };
BE2C5F0F1EDD74BC00E9FAFA /* libsvm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = libsvm.cpp; sourceTree = "<group>"; };
BE2C5F101EDD74BC00E9FAFA /* libsvm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = libsvm.h; sourceTree = "<group>"; };
BE2C5F111EDD74BC00E9FAFA /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = "<group>"; };
BE2C5F151EDD74FC00E9FAFA /* BayesianFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BayesianFilter.cpp; sourceTree = "<group>"; };
BE2C5F161EDD74FC00E9FAFA /* BayesianFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BayesianFilter.h; sourceTree = "<group>"; };
BE2C5F171EDD74FC00E9FAFA /* filter_utilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = filter_utilities.cpp; sourceTree = "<group>"; };
BE2C5F181EDD74FC00E9FAFA /* filter_utilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filter_utilities.h; sourceTree = "<group>"; };
BE2C5F1A1EDD74FC00E9FAFA /* finitedifferences.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = finitedifferences.c; sourceTree = "<group>"; };
BE2C5F1B1EDD74FC00E9FAFA /* finitedifferences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = finitedifferences.h; sourceTree = "<group>"; };
BE2C5F1D1EDD74FC00E9FAFA /* bbpr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bbpr.cpp; sourceTree = "<group>"; };
BE2C5F1E1EDD74FC00E9FAFA /* bbpr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bbpr.h; sourceTree = "<group>"; };
BE2C5F1F1EDD74FC00E9FAFA /* rpoly.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rpoly.cpp; sourceTree = "<group>"; };
BE2C5F201EDD74FC00E9FAFA /* rpoly.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rpoly.h; sourceTree = "<group>"; };
BE2C5F231EDD74FC00E9FAFA /* rta.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta.h; sourceTree = "<group>"; };
BE2C5F241EDD74FC00E9FAFA /* rta_bpf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rta_bpf.c; sourceTree = "<group>"; };
BE2C5F251EDD74FC00E9FAFA /* rta_bpf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_bpf.h; sourceTree = "<group>"; };
BE2C5F261EDD74FC00E9FAFA /* rta_complex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_complex.h; sourceTree = "<group>"; };
BE2C5F271EDD74FC00E9FAFA /* rta_float.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_float.h; sourceTree = "<group>"; };
BE2C5F281EDD74FC00E9FAFA /* rta_int.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rta_int.c; sourceTree = "<group>"; };
BE2C5F291EDD74FC00E9FAFA /* rta_int.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_int.h; sourceTree = "<group>"; };
BE2C5F2A1EDD74FC00E9FAFA /* rta_math.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_math.h; sourceTree = "<group>"; };
BE2C5F2B1EDD74FC00E9FAFA /* rta_stdio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_stdio.h; sourceTree = "<group>"; };
BE2C5F2C1EDD74FC00E9FAFA /* rta_stdlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_stdlib.h; sourceTree = "<group>"; };
BE2C5F2D1EDD74FC00E9FAFA /* rta_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_types.h; sourceTree = "<group>"; };
BE2C5F2E1EDD74FC00E9FAFA /* rta_util.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rta_util.c; sourceTree = "<group>"; };
BE2C5F2F1EDD74FC00E9FAFA /* rta_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_util.h; sourceTree = "<group>"; };
BE2C5F311EDD74FC00E9FAFA /* rta_bands.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rta_bands.c; sourceTree = "<group>"; };
BE2C5F321EDD74FC00E9FAFA /* rta_bands.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_bands.h; sourceTree = "<group>"; };
BE2C5F331EDD74FC00E9FAFA /* rta_biquad.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rta_biquad.c; sourceTree = "<group>"; };
BE2C5F341EDD74FC00E9FAFA /* rta_biquad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_biquad.h; sourceTree = "<group>"; };
BE2C5F351EDD74FC00E9FAFA /* rta_correlation.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rta_correlation.c; sourceTree = "<group>"; };
BE2C5F361EDD74FC00E9FAFA /* rta_correlation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_correlation.h; sourceTree = "<group>"; };
BE2C5F371EDD74FC00E9FAFA /* rta_cubic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rta_cubic.c; sourceTree = "<group>"; };
BE2C5F381EDD74FC00E9FAFA /* rta_cubic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_cubic.h; sourceTree = "<group>"; };
BE2C5F391EDD74FC00E9FAFA /* rta_dct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rta_dct.c; sourceTree = "<group>"; };
BE2C5F3A1EDD74FC00E9FAFA /* rta_dct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_dct.h; sourceTree = "<group>"; };
BE2C5F3B1EDD74FC00E9FAFA /* rta_delta.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rta_delta.c; sourceTree = "<group>"; };
BE2C5F3C1EDD74FC00E9FAFA /* rta_delta.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_delta.h; sourceTree = "<group>"; };
BE2C5F3D1EDD74FC00E9FAFA /* rta_fft.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rta_fft.c; sourceTree = "<group>"; };
BE2C5F3E1EDD74FC00E9FAFA /* rta_fft.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_fft.h; sourceTree = "<group>"; };
BE2C5F3F1EDD74FC00E9FAFA /* rta_filter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_filter.h; sourceTree = "<group>"; };
BE2C5F401EDD74FC00E9FAFA /* rta_lifter.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rta_lifter.c; sourceTree = "<group>"; };
BE2C5F411EDD74FC00E9FAFA /* rta_lifter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_lifter.h; sourceTree = "<group>"; };
BE2C5F421EDD74FC00E9FAFA /* rta_lpc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rta_lpc.c; sourceTree = "<group>"; };
BE2C5F431EDD74FC00E9FAFA /* rta_lpc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_lpc.h; sourceTree = "<group>"; };
BE2C5F441EDD74FC00E9FAFA /* rta_mean_variance.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rta_mean_variance.c; sourceTree = "<group>"; };
BE2C5F451EDD74FC00E9FAFA /* rta_mean_variance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_mean_variance.h; sourceTree = "<group>"; };
BE2C5F461EDD74FC00E9FAFA /* rta_mel.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rta_mel.c; sourceTree = "<group>"; };
BE2C5F471EDD74FC00E9FAFA /* rta_mel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_mel.h; sourceTree = "<group>"; };
BE2C5F481EDD74FC00E9FAFA /* rta_moments.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rta_moments.c; sourceTree = "<group>"; };
BE2C5F491EDD74FC00E9FAFA /* rta_moments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_moments.h; sourceTree = "<group>"; };
BE2C5F4A1EDD74FC00E9FAFA /* rta_onepole.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rta_onepole.c; sourceTree = "<group>"; };
BE2C5F4B1EDD74FC00E9FAFA /* rta_onepole.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_onepole.h; sourceTree = "<group>"; };
BE2C5F4C1EDD74FC00E9FAFA /* rta_preemphasis.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rta_preemphasis.c; sourceTree = "<group>"; };
BE2C5F4D1EDD74FC00E9FAFA /* rta_preemphasis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_preemphasis.h; sourceTree = "<group>"; };
BE2C5F4E1EDD74FC00E9FAFA /* rta_resample.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rta_resample.c; sourceTree = "<group>"; };
BE2C5F4F1EDD74FC00E9FAFA /* rta_resample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_resample.h; sourceTree = "<group>"; };
BE2C5F501EDD74FC00E9FAFA /* rta_selection.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rta_selection.c; sourceTree = "<group>"; };
BE2C5F511EDD74FC00E9FAFA /* rta_selection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_selection.h; sourceTree = "<group>"; };
BE2C5F521EDD74FC00E9FAFA /* rta_svd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rta_svd.c; sourceTree = "<group>"; };
BE2C5F531EDD74FC00E9FAFA /* rta_svd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_svd.h; sourceTree = "<group>"; };
BE2C5F541EDD74FC00E9FAFA /* rta_window.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rta_window.c; sourceTree = "<group>"; };
BE2C5F551EDD74FC00E9FAFA /* rta_window.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_window.h; sourceTree = "<group>"; };
BE2C5F561EDD74FC00E9FAFA /* rta_configuration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rta_configuration.h; sourceTree = "<group>"; };
BE92864A1EF015E7006847CF /* rapidStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rapidStream.cpp; sourceTree = "<group>"; };
BE92864B1EF015E7006847CF /* rapidStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rapidStream.h; sourceTree = "<group>"; };
BE92864E1EF017E2006847CF /* svmClassification.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = svmClassification.cpp; sourceTree = "<group>"; };
BE92864F1EF017E2006847CF /* svmClassification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = svmClassification.h; sourceTree = "<group>"; };
BE9286531EF01A23006847CF /* seriesClassification.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = seriesClassification.cpp; sourceTree = "<group>"; };
BE9286541EF01A23006847CF /* seriesClassification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = seriesClassification.h; sourceTree = "<group>"; };
BE9286571EF01C45006847CF /* dtw.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dtw.cpp; sourceTree = "<group>"; };
BE9286581EF01C45006847CF /* dtw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dtw.h; sourceTree = "<group>"; };
BEF47B191F7A74E5005B0C35 /* searchWindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = searchWindow.cpp; sourceTree = "<group>"; };
BEF47B1A1F7A74E5005B0C35 /* searchWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = searchWindow.h; sourceTree = "<group>"; };
BEF47B1C1F7A74EE005B0C35 /* fastDTW.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fastDTW.cpp; sourceTree = "<group>"; };
BEF47B1D1F7A74EE005B0C35 /* fastDTW.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fastDTW.h; sourceTree = "<group>"; };
BEF47B1F1F7A74FC005B0C35 /* warpPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = warpPath.cpp; sourceTree = "<group>"; };
BEF47B201F7A74FC005B0C35 /* warpPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = warpPath.h; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
......@@ -342,6 +455,14 @@
runOnlyForDeploymentPostprocessing = 0;
};
0BFFEF3C1E5608C000EF19A5 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
BEA7B7201EDD96AC0003E84B /* Accelerate.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
312C61CE1FE95A680085E283 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
......@@ -353,42 +474,41 @@
buildActionMask = 2147483647;
files = (
311BA3211EDC7B2400244DAC /* Accelerate.framework in Frameworks */,
311BA3161EDC74E000244DAC /* libpipo.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
311BA2A41EDC698600244DAC /* pipo */ = {
0BE2E72E1EE56E6D00722712 /* GVF */ = {
isa = PBXGroup;
children = (
BE2C5F131EDD74FC00E9FAFA /* dependencies */,
BE2C5EF01EDD73D000E9FAFA /* modules */,
311BA3121EDC74B300244DAC /* lib */,
311BA2B51EDC6C6F00244DAC /* host */,
311BA2B01EDC6C5A00244DAC /* include */,
0BE2E72F1EE56E6D00722712 /* GVF.cpp */,
0BE2E7301EE56E6D00722712 /* GVF.h */,
0BE2E7311EE56E6D00722712 /* GVFGesture.h */,
0BE2E7321EE56E6D00722712 /* GVFUtils.h */,
0BE2E7331EE56E6D00722712 /* LICENSE */,
);
name = pipo;
path = GVF;
sourceTree = "<group>";
};
311BA2A51EDC698D00244DAC /* xmm */ = {
0BE2E7341EE56F4F00722712 /* rapidGVF */ = {
isa = PBXGroup;
children = (
311BA2FC1EDC6F1900244DAC /* xmm.h */,
311BA2BE1EDC6E7100244DAC /* models */,
311BA2BD1EDC6E6700244DAC /* core */,
0BE2E7351EE56F4F00722712 /* rapidGVF.cpp */,
0BE2E7361EE56F4F00722712 /* rapidGVF.h */,
);
name = xmm;
path = rapidGVF;
sourceTree = "<group>";
};
311BA2A71EDC6AC300244DAC /* rapidXmmTools */ = {
311BA2A51EDC698D00244DAC /* xmm */ = {
isa = PBXGroup;
children = (
311BA2A91EDC6ADB00244DAC /* rapidXmmTools.cpp */,
311BA2AA1EDC6ADB00244DAC /* rapidXmmTools.h */,
311BA2FC1EDC6F1900244DAC /* xmm.h */,
311BA2BE1EDC6E7100244DAC /* models */,
311BA2BD1EDC6E6700244DAC /* core */,
);
name = rapidXmmTools;
name = xmm;
sourceTree = "<group>";
};
311BA2A81EDC6ACC00244DAC /* rapidPiPoTools */ = {
......@@ -401,29 +521,6 @@
name = rapidPiPoTools;
sourceTree = "<group>";
};
311BA2B01EDC6C5A00244DAC /* include */ = {
isa = PBXGroup;
children = (
311BA2B11EDC6C6800244DAC /* PiPo.h */,
311BA2B21EDC6C6800244DAC /* PiPoParallel.h */,
311BA2B31EDC6C6800244DAC /* PiPoSequence.h */,
311BA2B41EDC6C6800244DAC /* RingBuffer.h */,
);
name = include;
sourceTree = "<group>";
};
311BA2B51EDC6C6F00244DAC /* host */ = {
isa = PBXGroup;
children = (
311BA2B61EDC6C7E00244DAC /* PiPoCollection.cpp */,
311BA2B71EDC6C7E00244DAC /* PiPoCollection.h */,
311BA2B81EDC6C7E00244DAC /* PiPoGraph.h */,
311BA2B91EDC6C7E00244DAC /* PiPoHost.h */,
311BA2BA1EDC6C7E00244DAC /* PiPoModule.h */,
);
name = host;
sourceTree = "<group>";
};
311BA2BD1EDC6E6700244DAC /* core */ = {
isa = PBXGroup;
children = (
......@@ -533,43 +630,268 @@
name = kmeans;
sourceTree = "<group>";
};
311BA3121EDC74B300244DAC /* lib */ = {
311BA31F1EDC7B2400244DAC /* Frameworks */ = {
isa = PBXGroup;
children = (
311BA3131EDC74B800244DAC /* osx */,
311BA3201EDC7B2400244DAC /* Accelerate.framework */,
);
name = lib;
name = Frameworks;
sourceTree = "<group>";
};
311BA3131EDC74B800244DAC /* osx */ = {
311BA3221EDC7B9A00244DAC /* data */ = {
isa = PBXGroup;
children = (
311BA3141EDC74C400244DAC /* libpipo.a */,
318E7A361FD748D900FEEB7E /* pipo.json */,
311BA3231EDC7BA400244DAC /* DnB-loop-175BPM.wav */,
);
name = osx;
name = data;
sourceTree = "<group>";
};
311BA31F1EDC7B2400244DAC /* Frameworks */ = {
319C93E91FC49B270055BE40 /* pipo */ = {
isa = PBXGroup;
children = (
311BA3201EDC7B2400244DAC /* Accelerate.framework */,
319C93EB1FC49B350055BE40 /* modules */,
319C93EA1FC49B300055BE40 /* sdk */,
);
name = Frameworks;
name = pipo;
sourceTree = "<group>";
};
311BA3221EDC7B9A00244DAC /* data */ = {
319C93EA1FC49B300055BE40 /* sdk */ = {
isa = PBXGroup;
children = (
311BA3231EDC7BA400244DAC /* DnB-loop-175BPM.wav */,
319C93F81FC49B960055BE40 /* host */,
319C93F31FC49B8F0055BE40 /* mimo.h */,
319C93F41FC49B8F0055BE40 /* PiPo.h */,
319C93F51FC49B8F0055BE40 /* PiPoParallel.h */,
319C93F61FC49B8F0055BE40 /* PiPoSequence.h */,
319C93F71FC49B8F0055BE40 /* RingBuffer.h */,
);
name = sdk;
sourceTree = "<group>";
};
319C93EB1FC49B350055BE40 /* modules */ = {
isa = PBXGroup;
children = (
319C93EC1FC49B4E0055BE40 /* bayesfilter */,
319C947B1FC49D380055BE40 /* collection */,
319C94751FC49D020055BE40 /* finitedifferences */,
319C94791FC49D170055BE40 /* mimo */,
319C94031FC49C430055BE40 /* rta */,
319C947E1FC49D690055BE40 /* PiPoBands.h */,
319C947F1FC49D690055BE40 /* PiPoBasic.h */,
319C94801FC49D690055BE40 /* PiPoBayesFilter.h */,
319C94811FC49D690055BE40 /* PiPoBiquad.h */,
319C94821FC49D690055BE40 /* PiPoBranch.h */,
319C94831FC49D690055BE40 /* PiPoChop.h */,
319C94841FC49D690055BE40 /* PiPoConst.h */,
319C94851FC49D690055BE40 /* PiPoDct.h */,
319C94861FC49D690055BE40 /* PiPoDelta.h */,
319C94871FC49D690055BE40 /* PiPoDescr.h */,
319C94881FC49D690055BE40 /* PiPoFft.h */,
319C94891FC49D690055BE40 /* PiPoFiniteDif.h */,
319C948A1FC49D690055BE40 /* PiPoGate.h */,
319C948B1FC49D690055BE40 /* PiPoIdentity.h */,
319C948C1FC49D690055BE40 /* PiPoIdesc.h */,
319C948D1FC49D690055BE40 /* PiPoLpc.h */,
319C948E1FC49D690055BE40 /* PiPoMaximChroma.h */,
319C948F1FC49D690055BE40 /* PiPoMeanStddev.h */,
319C94901FC49D690055BE40 /* PiPoMedian.h */,
319C94911FC49D690055BE40 /* PiPoMel.h */,
319C94921FC49D690055BE40 /* PiPoMfcc.h */,
319C94931FC49D690055BE40 /* PiPoMinMax.h */,
319C94941FC49D690055BE40 /* PiPoMoments.h */,
319C94951FC49D690055BE40 /* PiPoMvavrg.h */,
319C94961FC49D690055BE40 /* PiPoOnseg.h */,
319C94971FC49D690055BE40 /* PiPoPeaks.h */,
319C94981FC49D690055BE40 /* PiPoPsy.h */,
319C94991FC49D690055BE40 /* PiPoRms.h */,
319C949A1FC49D690055BE40 /* PiPoScale.h */,
319C949B1FC49D690055BE40 /* PiPoSelect.h */,
319C949C1FC49D690055BE40 /* PiPoSlice.h */,
319C949D1FC49D690055BE40 /* PiPoSum.h */,
319C949E1FC49D690055BE40 /* PiPoWavelet.h */,
319C949F1FC49D690055BE40 /* PiPoYin.h */,
319C94A01FC49D690055BE40 /* TempMod.h */,
);
name = data;
name = modules;
sourceTree = "<group>";
};
319C93EC1FC49B4E0055BE40 /* bayesfilter */ = {
isa = PBXGroup;
children = (
319C93ED1FC49B5C0055BE40 /* BayesianFilter.cpp */,
319C93EE1FC49B5C0055BE40 /* BayesianFilter.h */,
319C93EF1FC49B5C0055BE40 /* filter_utilities.cpp */,
319C93F01FC49B5C0055BE40 /* filter_utilities.h */,
);
name = bayesfilter;
sourceTree = "<group>";
};
319C93F81FC49B960055BE40 /* host */ = {
isa = PBXGroup;
children = (
319C93F91FC49BAA0055BE40 /* mimo_host.h */,
319C93FA1FC49BAA0055BE40 /* PiPoChain.h */,
319C93FB1FC49BAA0055BE40 /* PiPoCollection.h */,
319C93FC1FC49BAA0055BE40 /* PiPoGraph.h */,
319C93FD1FC49BAA0055BE40 /* PiPoHost.cpp */,
319C93FE1FC49BAA0055BE40 /* PiPoHost.h */,
319C93FF1FC49BAA0055BE40 /* PiPoModule.h */,
319C94001FC49BAA0055BE40 /* PiPoModuleClass.h */,
319C94011FC49BAA0055BE40 /* PiPoOp.h */,
);
name = host;
sourceTree = "<group>";
};
319C94031FC49C430055BE40 /* rta */ = {
isa = PBXGroup;
children = (
319C94041FC49C5D0055BE40 /* rta.h */,
319C94741FC49CF90055BE40 /* rta_configuration.h */,
319C94091FC49C840055BE40 /* physical-models */,
319C94081FC49C790055BE40 /* recognition */,
319C94071FC49C6C0055BE40 /* signal */,
319C94061FC49C640055BE40 /* statistics */,
319C94051FC49C5F0055BE40 /* util */,
);
name = rta;
sourceTree = "<group>";
};
319C94051FC49C5F0055BE40 /* util */ = {
isa = PBXGroup;
children = (
319C940A1FC49C990055BE40 /* rta_bpf.c */,
319C940B1FC49C990055BE40 /* rta_bpf.h */,
319C940C1FC49C990055BE40 /* rta_complex.h */,
319C940D1FC49C990055BE40 /* rta_float.h */,
319C940E1FC49C990055BE40 /* rta_int.c */,
319C940F1FC49C990055BE40 /* rta_int.h */,
319C94101FC49C990055BE40 /* rta_math.h */,
319C94111FC49C990055BE40 /* rta_stdio.h */,
319C94121FC49C990055BE40 /* rta_stdlib.h */,
319C94131FC49C990055BE40 /* rta_types.h */,
319C94141FC49C990055BE40 /* rta_util.c */,
319C94151FC49C990055BE40 /* rta_util.h */,
);
name = util;
sourceTree = "<group>";
};
319C94061FC49C640055BE40 /* statistics */ = {
isa = PBXGroup;
children = (
319C941B1FC49CAA0055BE40 /* rta_mean_variance.c */,
319C941C1FC49CAA0055BE40 /* rta_mean_variance.h */,
319C941D1FC49CAA0055BE40 /* rta_moments.c */,
319C941E1FC49CAA0055BE40 /* rta_moments.h */,
319C941F1FC49CAA0055BE40 /* rta_selection.c */,
319C94201FC49CAA0055BE40 /* rta_selection.h */,
319C94211FC49CAA0055BE40 /* rta_svd.c */,
319C94221FC49CAA0055BE40 /* rta_svd.h */,
);
name = statistics;
sourceTree = "<group>";
};
319C94071FC49C6C0055BE40 /* signal */ = {
isa = PBXGroup;
children = (
319C94281FC49CC10055BE40 /* rta_bands.c */,
319C94291FC49CC10055BE40 /* rta_bands.h */,
319C942A1FC49CC10055BE40 /* rta_biquad.c */,
319C942B1FC49CC10055BE40 /* rta_biquad.h */,
319C942C1FC49CC10055BE40 /* rta_correlation.c */,
319C942D1FC49CC10055BE40 /* rta_correlation.h */,
319C942E1FC49CC10055BE40 /* rta_cubic.c */,
319C942F1FC49CC10055BE40 /* rta_cubic.h */,
319C94301FC49CC10055BE40 /* rta_dct.c */,
319C94311FC49CC10055BE40 /* rta_dct.h */,
319C94321FC49CC10055BE40 /* rta_delta.c */,
319C94331FC49CC10055BE40 /* rta_delta.h */,
319C94341FC49CC10055BE40 /* rta_fft.c */,
319C94351FC49CC10055BE40 /* rta_fft.h */,
319C94361FC49CC10055BE40 /* rta_filter.h */,
319C94371FC49CC10055BE40 /* rta_lifter.c */,
319C94381FC49CC10055BE40 /* rta_lifter.h */,
319C94391FC49CC10055BE40 /* rta_lpc.c */,
319C943A1FC49CC10055BE40 /* rta_lpc.h */,
319C943B1FC49CC10055BE40 /* rta_mel.c */,
319C943C1FC49CC10055BE40 /* rta_mel.h */,
319C943D1FC49CC10055BE40 /* rta_onepole.c */,
319C943E1FC49CC10055BE40 /* rta_onepole.h */,
319C943F1FC49CC10055BE40 /* rta_preemphasis.c */,
319C94401FC49CC10055BE40 /* rta_preemphasis.h */,
319C94411FC49CC10055BE40 /* rta_psy.c */,
319C94421FC49CC10055BE40 /* rta_psy.h */,
319C94431FC49CC10055BE40 /* rta_resample.c */,
319C94441FC49CC10055BE40 /* rta_resample.h */,
319C94451FC49CC10055BE40 /* rta_window.c */,
319C94461FC49CC10055BE40 /* rta_window.h */,
319C94471FC49CC10055BE40 /* rta_yin.c */,
319C94481FC49CC10055BE40 /* rta_yin.h */,
);
name = signal;
sourceTree = "<group>";
};
319C94081FC49C790055BE40 /* recognition */ = {
isa = PBXGroup;
children = (
319C945B1FC49CD10055BE40 /* rta_kdtree.c */,
319C945C1FC49CD10055BE40 /* rta_kdtree.h */,
319C945D1FC49CD10055BE40 /* rta_kdtreebuild.c */,
319C945E1FC49CD10055BE40 /* rta_kdtreeintern.h */,
319C945F1FC49CD10055BE40 /* rta_kdtreesearch.c */,
319C94601FC49CD10055BE40 /* rta_mahalanobis.c */,
319C94611FC49CD10055BE40 /* rta_mahalanobis.h */,
);
name = recognition;
sourceTree = "<group>";
};
319C94091FC49C840055BE40 /* physical-models */ = {
isa = PBXGroup;
children = (
);
name = "physical-models";
sourceTree = "<group>";
};
319C94751FC49D020055BE40 /* finitedifferences */ = {
isa = PBXGroup;
children = (
319C94761FC49D120055BE40 /* finitedifferences.c */,
319C94771FC49D120055BE40 /* finitedifferences.h */,
);
name = finitedifferences;
sourceTree = "<group>";
};
319C94791FC49D170055BE40 /* mimo */ = {
isa = PBXGroup;
children = (
319C947A1FC49D260055BE40 /* mimo_stats.h */,
);
name = mimo;
sourceTree = "<group>";
};
319C947B1FC49D380055BE40 /* collection */ = {
isa = PBXGroup;
children = (
319C947C1FC49D490055BE40 /* PiPoCollection.cpp */,
);
name = collection;
sourceTree = "<group>";
};
31A8F1931F4ECD0500CA8CEC /* rapidXMM */ = {
isa = PBXGroup;
children = (
31A8F1941F4ECD1200CA8CEC /* rapidXMM.cpp */,
31A8F1951F4ECD1200CA8CEC /* rapidXMM.h */,
);
name = rapidXMM;
sourceTree = "<group>";
};
BE2C5A081ED8450C00E9FAFA /* dependencies */ = {
isa = PBXGroup;
children = (
319C93E91FC49B270055BE40 /* pipo */,
0BE2E72E1EE56E6D00722712 /* GVF */,
311BA2A51EDC698D00244DAC /* xmm */,
311BA2A41EDC698600244DAC /* pipo */,
BE2C5A091ED8450C00E9FAFA /* Maximilian */,
BE2C5BBE1ED8450D00E9FAFA /* RapidLib */,
BE2C5E041ED8450E00E9FAFA /* third_party */,
......@@ -634,9 +956,21 @@
BE2C5DE81ED8450E00E9FAFA /* src */ = {
isa = PBXGroup;
children = (
BEF47B1F1F7A74FC005B0C35 /* warpPath.cpp */,
BEF47B201F7A74FC005B0C35 /* warpPath.h */,
BEF47B1C1F7A74EE005B0C35 /* fastDTW.cpp */,
BEF47B1D1F7A74EE005B0C35 /* fastDTW.h */,
BEF47B191F7A74E5005B0C35 /* searchWindow.cpp */,
BEF47B1A1F7A74E5005B0C35 /* searchWindow.h */,
BE9286571EF01C45006847CF /* dtw.cpp */,
BE9286581EF01C45006847CF /* dtw.h */,
BE9286531EF01A23006847CF /* seriesClassification.cpp */,
BE9286541EF01A23006847CF /* seriesClassification.h */,
BE92864E1EF017E2006847CF /* svmClassification.cpp */,
BE92864F1EF017E2006847CF /* svmClassification.h */,
BE92864A1EF015E7006847CF /* rapidStream.cpp */,
BE92864B1EF015E7006847CF /* rapidStream.h */,
BE2C5DE91ED8450E00E9FAFA /* baseModel.h */,
BE2C5EED1ED849AA00E9FAFA /* svm.cpp */,
BE2C5EEE1ED849AA00E9FAFA /* svm.h */,
BE2C5DEA1ED8450E00E9FAFA /* classification.cpp */,
BE2C5DEB1ED8450E00E9FAFA /* classification.h */,
BE2C5DF31ED8450E00E9FAFA /* knnClassification.cpp */,
......@@ -687,7 +1021,8 @@
BE2C5EBD1ED8459300E9FAFA /* machineLearning */ = {
isa = PBXGroup;
children = (
311BA2A71EDC6AC300244DAC /* rapidXmmTools */,
31A8F1931F4ECD0500CA8CEC /* rapidXMM */,
0BE2E7341EE56F4F00722712 /* rapidGVF */,
BE2C5EBE1ED8459300E9FAFA /* machineLearning.cpp */,
BE2C5EBF1ED8459300E9FAFA /* machineLearning.h */,
BE2C5EC01ED8459300E9FAFA /* trainingData.cpp */,
......@@ -700,21 +1035,11 @@
isa = PBXGroup;
children = (
311BA2A81EDC6ACC00244DAC /* rapidPiPoTools */,
BE2C5EC41ED8459300E9FAFA /* rapidStream */,
BE2C5EC71ED8459300E9FAFA /* signalProcessing.h */,
);
path = signalProcessing;
sourceTree = "<group>";
};
BE2C5EC41ED8459300E9FAFA /* rapidStream */ = {
isa = PBXGroup;
children = (
BE2C5EC51ED8459300E9FAFA /* rapidStream.cpp */,
BE2C5EC61ED8459300E9FAFA /* rapidStream.h */,
);
path = rapidStream;
sourceTree = "<group>";
};
BE2C5ED91ED8471F00E9FAFA /* catch */ = {
isa = PBXGroup;
children = (
......@@ -739,57 +1064,14 @@
BE2C5EE01ED8480D00E9FAFA /* test_rapidmix-api.cpp */,
BE2C5EDE1ED8480D00E9FAFA /* test_gvf.cpp */,
BE2C5EDF1ED8480D00E9FAFA /* test_RapidLib.cpp */,
BE2C5EE11ED8480D00E9FAFA /* test_rapidPiPoTools.cpp */,
BE2C5EE21ED8480D00E9FAFA /* test_rapidXmmTools.cpp */,
BE2C5EE11ED8480D00E9FAFA /* test_rapidPiPo.cpp */,
BE2C5EE21ED8480D00E9FAFA /* test_rapidXMM.cpp */,
BE2C5EE31ED8480D00E9FAFA /* test_signalProcessing.cpp */,
312C61B71FE958CB0085E283 /* test_trainingData.cpp */,
);
path = src;
sourceTree = "<group>";
};
BE2C5EF01EDD73D000E9FAFA /* modules */ = {
isa = PBXGroup;
children = (
BE2C5EF11EDD73D000E9FAFA /* mimo */,
BE2C5EF31EDD73D000E9FAFA /* PiPoBands.h */,
BE2C5EF41EDD73D000E9FAFA /* PiPoBayesFilter.h */,
BE2C5EF51EDD73D000E9FAFA /* PiPoBiquad.h */,
BE2C5EF61EDD73D000E9FAFA /* PiPoChop.h */,
BE2C5EF71EDD73D000E9FAFA /* PiPoConst.h */,
BE2C5EF81EDD73D000E9FAFA /* PiPoDct.h */,
BE2C5EF91EDD73D000E9FAFA /* PiPoDelta.h */,
BE2C5EFA1EDD73D000E9FAFA /* PiPoFft.h */,
BE2C5EFB1EDD73D000E9FAFA /* PiPoFiniteDif.h */,
BE2C5EFC1EDD73D000E9FAFA /* PiPoGate.h */,
BE2C5EFD1EDD73D000E9FAFA /* PiPoLpc.h */,
BE2C5EFE1EDD73D000E9FAFA /* PiPoLpcFormants.h */,
BE2C5EFF1EDD73D000E9FAFA /* PiPoMeanStddev.h */,
BE2C5F001EDD73D000E9FAFA /* PiPoMedian.h */,
BE2C5F011EDD73D000E9FAFA /* PiPoMel.h */,
BE2C5F021EDD73D000E9FAFA /* PiPoMfcc.h */,
BE2C5F031EDD73D000E9FAFA /* PiPoMinMax.h */,
BE2C5F041EDD73D000E9FAFA /* PiPoMoments.h */,
BE2C5F051EDD73D000E9FAFA /* PiPoMvavrg.h */,
BE2C5F061EDD73D000E9FAFA /* PiPoOnseg.h */,
BE2C5F071EDD73D000E9FAFA /* PiPoPeaks.h */,
BE2C5F081EDD73D000E9FAFA /* PiPoRms.h */,
BE2C5F091EDD73D000E9FAFA /* PiPoScale.h */,
BE2C5F0A1EDD73D000E9FAFA /* PiPoSelect.h */,
BE2C5F0B1EDD73D000E9FAFA /* PiPoSlice.h */,
BE2C5F0C1EDD73D000E9FAFA /* PiPoSum.h */,
BE2C5F0D1EDD73D000E9FAFA /* TempMod.h */,
);
name = modules;
path = pipo/src/modules;
sourceTree = "<group>";
};
BE2C5EF11EDD73D000E9FAFA /* mimo */ = {
isa = PBXGroup;
children = (
BE2C5EF21EDD73D000E9FAFA /* mimo_stats.h */,
);
path = mimo;
sourceTree = "<group>";
};
BE2C5F0E1EDD74BC00E9FAFA /* libsvm */ = {
isa = PBXGroup;
children = (
......@@ -800,123 +1082,6 @@
path = libsvm;
sourceTree = "<group>";
};
BE2C5F131EDD74FC00E9FAFA /* dependencies */ = {
isa = PBXGroup;
children = (
BE2C5F141EDD74FC00E9FAFA /* bayesfilter */,
BE2C5F191EDD74FC00E9FAFA /* finitedifferences */,
BE2C5F1C1EDD74FC00E9FAFA /* lpcformants */,
BE2C5F211EDD74FC00E9FAFA /* rta */,
);
name = dependencies;
path = pipo/src/dependencies;
sourceTree = "<group>";
};
BE2C5F141EDD74FC00E9FAFA /* bayesfilter */ = {
isa = PBXGroup;
children = (
BE2C5F151EDD74FC00E9FAFA /* BayesianFilter.cpp */,
BE2C5F161EDD74FC00E9FAFA /* BayesianFilter.h */,
BE2C5F171EDD74FC00E9FAFA /* filter_utilities.cpp */,
BE2C5F181EDD74FC00E9FAFA /* filter_utilities.h */,
);
path = bayesfilter;
sourceTree = "<group>";
};
BE2C5F191EDD74FC00E9FAFA /* finitedifferences */ = {
isa = PBXGroup;
children = (
BE2C5F1A1EDD74FC00E9FAFA /* finitedifferences.c */,
BE2C5F1B1EDD74FC00E9FAFA /* finitedifferences.h */,
);
path = finitedifferences;
sourceTree = "<group>";
};
BE2C5F1C1EDD74FC00E9FAFA /* lpcformants */ = {
isa = PBXGroup;
children = (
BE2C5F1D1EDD74FC00E9FAFA /* bbpr.cpp */,
BE2C5F1E1EDD74FC00E9FAFA /* bbpr.h */,
BE2C5F1F1EDD74FC00E9FAFA /* rpoly.cpp */,
BE2C5F201EDD74FC00E9FAFA /* rpoly.h */,
);
path = lpcformants;
sourceTree = "<group>";
};
BE2C5F211EDD74FC00E9FAFA /* rta */ = {
isa = PBXGroup;
children = (
BE2C5F221EDD74FC00E9FAFA /* common */,
BE2C5F301EDD74FC00E9FAFA /* misc */,
BE2C5F561EDD74FC00E9FAFA /* rta_configuration.h */,
);
path = rta;
sourceTree = "<group>";
};
BE2C5F221EDD74FC00E9FAFA /* common */ = {
isa = PBXGroup;
children = (
BE2C5F231EDD74FC00E9FAFA /* rta.h */,
BE2C5F241EDD74FC00E9FAFA /* rta_bpf.c */,
BE2C5F251EDD74FC00E9FAFA /* rta_bpf.h */,
BE2C5F261EDD74FC00E9FAFA /* rta_complex.h */,
BE2C5F271EDD74FC00E9FAFA /* rta_float.h */,
BE2C5F281EDD74FC00E9FAFA /* rta_int.c */,
BE2C5F291EDD74FC00E9FAFA /* rta_int.h */,
BE2C5F2A1EDD74FC00E9FAFA /* rta_math.h */,
BE2C5F2B1EDD74FC00E9FAFA /* rta_stdio.h */,
BE2C5F2C1EDD74FC00E9FAFA /* rta_stdlib.h */,
BE2C5F2D1EDD74FC00E9FAFA /* rta_types.h */,
BE2C5F2E1EDD74FC00E9FAFA /* rta_util.c */,
BE2C5F2F1EDD74FC00E9FAFA /* rta_util.h */,
);
path = common;
sourceTree = "<group>";
};
BE2C5F301EDD74FC00E9FAFA /* misc */ = {
isa = PBXGroup;
children = (
BE2C5F311EDD74FC00E9FAFA /* rta_bands.c */,
BE2C5F321EDD74FC00E9FAFA /* rta_bands.h */,
BE2C5F331EDD74FC00E9FAFA /* rta_biquad.c */,
BE2C5F341EDD74FC00E9FAFA /* rta_biquad.h */,
BE2C5F351EDD74FC00E9FAFA /* rta_correlation.c */,
BE2C5F361EDD74FC00E9FAFA /* rta_correlation.h */,
BE2C5F371EDD74FC00E9FAFA /* rta_cubic.c */,
BE2C5F381EDD74FC00E9FAFA /* rta_cubic.h */,
BE2C5F391EDD74FC00E9FAFA /* rta_dct.c */,
BE2C5F3A1EDD74FC00E9FAFA /* rta_dct.h */,
BE2C5F3B1EDD74FC00E9FAFA /* rta_delta.c */,
BE2C5F3C1EDD74FC00E9FAFA /* rta_delta.h */,
BE2C5F3D1EDD74FC00E9FAFA /* rta_fft.c */,
BE2C5F3E1EDD74FC00E9FAFA /* rta_fft.h */,
BE2C5F3F1EDD74FC00E9FAFA /* rta_filter.h */,
BE2C5F401EDD74FC00E9FAFA /* rta_lifter.c */,
BE2C5F411EDD74FC00E9FAFA /* rta_lifter.h */,
BE2C5F421EDD74FC00E9FAFA /* rta_lpc.c */,
BE2C5F431EDD74FC00E9FAFA /* rta_lpc.h */,
BE2C5F441EDD74FC00E9FAFA /* rta_mean_variance.c */,
BE2C5F451EDD74FC00E9FAFA /* rta_mean_variance.h */,
BE2C5F461EDD74FC00E9FAFA /* rta_mel.c */,
BE2C5F471EDD74FC00E9FAFA /* rta_mel.h */,
BE2C5F481EDD74FC00E9FAFA /* rta_moments.c */,
BE2C5F491EDD74FC00E9FAFA /* rta_moments.h */,
BE2C5F4A1EDD74FC00E9FAFA /* rta_onepole.c */,
BE2C5F4B1EDD74FC00E9FAFA /* rta_onepole.h */,
BE2C5F4C1EDD74FC00E9FAFA /* rta_preemphasis.c */,
BE2C5F4D1EDD74FC00E9FAFA /* rta_preemphasis.h */,
BE2C5F4E1EDD74FC00E9FAFA /* rta_resample.c */,
BE2C5F4F1EDD74FC00E9FAFA /* rta_resample.h */,
BE2C5F501EDD74FC00E9FAFA /* rta_selection.c */,
BE2C5F511EDD74FC00E9FAFA /* rta_selection.h */,
BE2C5F521EDD74FC00E9FAFA /* rta_svd.c */,
BE2C5F531EDD74FC00E9FAFA /* rta_svd.h */,
BE2C5F541EDD74FC00E9FAFA /* rta_window.c */,
BE2C5F551EDD74FC00E9FAFA /* rta_window.h */,
);
path = misc;
sourceTree = "<group>";
};
BE325F281DB50BE100F199A8 = {
isa = PBXGroup;
children = (
......@@ -933,9 +1098,10 @@
children = (
0BFFEF1B1E56082700EF19A5 /* test_GVF */,
0BFFEF261E56083C00EF19A5 /* test_RapidLib */,
0BFFEF311E56085C00EF19A5 /* test_rapidXmmTools */,
0BFFEF311E56085C00EF19A5 /* test_rapidXMM */,
0BFFEF3F1E5608C000EF19A5 /* test_signalProcessing */,
31D7B72C1E6B048100917757 /* test_rapidPiPoTools */,
31D7B72C1E6B048100917757 /* test_rapidPiPo */,
312C61D31FE95A680085E283 /* test_trainingData */,
);
name = Products;
sourceTree = "<group>";
......@@ -977,9 +1143,9 @@
productReference = 0BFFEF261E56083C00EF19A5 /* test_RapidLib */;
productType = "com.apple.product-type.tool";
};
0BFFEF301E56085C00EF19A5 /* test_rapidXmmTools */ = {
0BFFEF301E56085C00EF19A5 /* test_rapidXMM */ = {
isa = PBXNativeTarget;
buildConfigurationList = 0BFFEF351E56085C00EF19A5 /* Build configuration list for PBXNativeTarget "test_rapidXmmTools" */;
buildConfigurationList = 0BFFEF351E56085C00EF19A5 /* Build configuration list for PBXNativeTarget "test_rapidXMM" */;
buildPhases = (
0BFFEF2D1E56085C00EF19A5 /* Sources */,
0BFFEF2E1E56085C00EF19A5 /* Frameworks */,
......@@ -989,9 +1155,9 @@
);
dependencies = (
);
name = test_rapidXmmTools;
name = test_rapidXMM;
productName = test_XMM;
productReference = 0BFFEF311E56085C00EF19A5 /* test_rapidXmmTools */;
productReference = 0BFFEF311E56085C00EF19A5 /* test_rapidXMM */;
productType = "com.apple.product-type.tool";
};
0BFFEF3E1E5608C000EF19A5 /* test_signalProcessing */ = {
......@@ -1011,9 +1177,26 @@
productReference = 0BFFEF3F1E5608C000EF19A5 /* test_signalProcessing */;
productType = "com.apple.product-type.tool";
};
31D7B7121E6B048100917757 /* test_rapidPiPoTools */ = {
312C61B91FE95A680085E283 /* test_trainingData */ = {
isa = PBXNativeTarget;
buildConfigurationList = 31D7B7291E6B048100917757 /* Build configuration list for PBXNativeTarget "test_rapidPiPoTools" */;
buildConfigurationList = 312C61D01FE95A680085E283 /* Build configuration list for PBXNativeTarget "test_trainingData" */;
buildPhases = (
312C61BA1FE95A680085E283 /* Sources */,
312C61CE1FE95A680085E283 /* Frameworks */,
312C61CF1FE95A680085E283 /* CopyFiles */,
);
buildRules = (
);
dependencies = (
);
name = test_trainingData;
productName = test_XMM;
productReference = 312C61D31FE95A680085E283 /* test_trainingData */;
productType = "com.apple.product-type.tool";
};
31D7B7121E6B048100917757 /* test_rapidPiPo */ = {
isa = PBXNativeTarget;
buildConfigurationList = 31D7B7291E6B048100917757 /* Build configuration list for PBXNativeTarget "test_rapidPiPo" */;
buildPhases = (
31D7B7131E6B048100917757 /* Sources */,
31D7B7271E6B048100917757 /* Frameworks */,
......@@ -1023,9 +1206,9 @@
);
dependencies = (
);
name = test_rapidPiPoTools;
name = test_rapidPiPo;
productName = test_XMM;
productReference = 31D7B72C1E6B048100917757 /* test_rapidPiPoTools */;
productReference = 31D7B72C1E6B048100917757 /* test_rapidPiPo */;
productType = "com.apple.product-type.tool";
};
/* End PBXNativeTarget section */
......@@ -1034,7 +1217,7 @@
BE325F291DB50BE100F199A8 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0730;
LastUpgradeCheck = 0910;
ORGANIZATIONNAME = Goldsmiths;
TargetAttributes = {
0BFFEF1A1E56082700EF19A5 = {
......@@ -1065,9 +1248,10 @@
targets = (
0BFFEF1A1E56082700EF19A5 /* test_GVF */,
0BFFEF251E56083C00EF19A5 /* test_RapidLib */,
31D7B7121E6B048100917757 /* test_rapidPiPoTools */,
0BFFEF301E56085C00EF19A5 /* test_rapidXmmTools */,
31D7B7121E6B048100917757 /* test_rapidPiPo */,
0BFFEF301E56085C00EF19A5 /* test_rapidXMM */,
0BFFEF3E1E5608C000EF19A5 /* test_signalProcessing */,
312C61B91FE95A680085E283 /* test_trainingData */,
);
};
/* End PBXProject section */
......@@ -1077,6 +1261,27 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
BE5733101F505FC80063F4D1 /* svmClassification.cpp in Sources */,
BE57330F1F505FBD0063F4D1 /* knnClassification.cpp in Sources */,
BE57330E1F505FAD0063F4D1 /* modelSet.cpp in Sources */,
BE57330D1F505FAA0063F4D1 /* classification.cpp in Sources */,
BE57330C1F505F9B0063F4D1 /* neuralNetwork.cpp in Sources */,
BE57330A1F505F870063F4D1 /* regression.cpp in Sources */,
BE57330B1F505F920063F4D1 /* dtw.cpp in Sources */,
BEF47B1B1F7A74E5005B0C35 /* searchWindow.cpp in Sources */,
BE92864C1EF015E7006847CF /* rapidStream.cpp in Sources */,
BE5733091F505F7F0063F4D1 /* seriesClassification.cpp in Sources */,
0BA41BAE1EE6E10A00B74667 /* jsoncpp.cpp in Sources */,
0BE2E7381EE56F5800722712 /* GVF.cpp in Sources */,
0BE2E7371EE56F4F00722712 /* rapidGVF.cpp in Sources */,
BEF47B1E1F7A74EE005B0C35 /* fastDTW.cpp in Sources */,
BEF47B211F7A74FC005B0C35 /* warpPath.cpp in Sources */,
BEA7B7211EDD97130003E84B /* test_gvf.cpp in Sources */,
0BA41BAD1EE6E0ED00B74667 /* trainingData.cpp in Sources */,
BE5733061F505ECC0063F4D1 /* machineLearning.cpp in Sources */,
BE5733111F505FDC0063F4D1 /* libsvm.cpp in Sources */,
BE0AC6271FD1768D008056E6 /* BayesianFilter.cpp in Sources */,
BE0AC6281FD17690008056E6 /* filter_utilities.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -1086,14 +1291,22 @@
files = (
BEA7B7181EDD7C0E0003E84B /* test_RapidLib.cpp in Sources */,
BEA7B7161EDD7B700003E84B /* regression.cpp in Sources */,
BE92865A1EF01C4A006847CF /* dtw.cpp in Sources */,
BEA7B7151EDD7B6E0003E84B /* neuralNetwork.cpp in Sources */,
BEA7B7141EDD7B6B0003E84B /* modelSet.cpp in Sources */,
BE9286561EF01A2D006847CF /* seriesClassification.cpp in Sources */,
BEA7B7131EDD7B690003E84B /* knnClassification.cpp in Sources */,
BEA7B7121EDD7B660003E84B /* classification.cpp in Sources */,
BEA7B70F1EDD7B350003E84B /* machineLearning.cpp in Sources */,
BEA7B7101EDD7B390003E84B /* trainingData.cpp in Sources */,
BEA7B7111EDD7B640003E84B /* svm.cpp in Sources */,
BEA7B7171EDD7B7E0003E84B /* jsoncpp.cpp in Sources */,
BE9286511EF01801006847CF /* svmClassification.cpp in Sources */,
BE9286521EF01823006847CF /* libsvm.cpp in Sources */,
BE5733071F505F190063F4D1 /* rapidGVF.cpp in Sources */,
BE5733081F505F310063F4D1 /* GVF.cpp in Sources */,
BEF47B231F7A868B005B0C35 /* warpPath.cpp in Sources */,
BEF47B241F7A8693005B0C35 /* searchWindow.cpp in Sources */,
BEF47B221F7A8685005B0C35 /* fastDTW.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -1101,8 +1314,8 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
311BA2A61EDC6A8900244DAC /* test_rapidXmmTools.cpp in Sources */,
311BA2FD1EDC6F9F00244DAC /* rapidXmmTools.cpp in Sources */,
31A8F1971F4ECF3300CA8CEC /* rapidXMM.cpp in Sources */,
311BA2A61EDC6A8900244DAC /* test_rapidXMM.cpp in Sources */,
311BA30F1EDC711E00244DAC /* trainingData.cpp in Sources */,
311BA2FE1EDC6FD000244DAC /* xmmKMeans.cpp in Sources */,
311BA2FF1EDC6FD000244DAC /* xmmKMeansParameters.cpp in Sources */,
......@@ -1127,6 +1340,24 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
BEA7B71B1EDD96090003E84B /* maxiFFT.cpp in Sources */,
BEA7B71C1EDD960F0003E84B /* maxiMFCC.cpp in Sources */,
BEA7B71D1EDD96140003E84B /* fft.cpp in Sources */,
BE9286491EF015AE006847CF /* test_signalProcessing.cpp in Sources */,
BEA7B71E1EDD963E0003E84B /* maximilian.cpp in Sources */,
BE92864D1EF01622006847CF /* rapidStream.cpp in Sources */,
BE0AC6251FD17669008056E6 /* BayesianFilter.cpp in Sources */,
BE0AC6261FD1766D008056E6 /* filter_utilities.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
312C61BA1FE95A680085E283 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
312C61D41FE95A8F0085E283 /* test_trainingData.cpp in Sources */,
312C61BD1FE95A680085E283 /* trainingData.cpp in Sources */,
312C61CD1FE95A680085E283 /* jsoncpp.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -1134,7 +1365,33 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
311BA3101EDC746F00244DAC /* test_rapidPiPoTools.cpp in Sources */,
319C94A51FC5C1200055BE40 /* finitedifferences.c in Sources */,
319C94A61FC5C1200055BE40 /* rta_bands.c in Sources */,
319C94A71FC5C1200055BE40 /* rta_biquad.c in Sources */,
319C94A81FC5C1200055BE40 /* rta_correlation.c in Sources */,
319C94A91FC5C1200055BE40 /* rta_cubic.c in Sources */,
319C94AA1FC5C1200055BE40 /* rta_dct.c in Sources */,
319C94AB1FC5C1200055BE40 /* rta_delta.c in Sources */,
319C94AC1FC5C1200055BE40 /* rta_fft.c in Sources */,
319C94AD1FC5C1200055BE40 /* rta_lifter.c in Sources */,
319C94AE1FC5C1200055BE40 /* rta_lpc.c in Sources */,
319C94AF1FC5C1200055BE40 /* rta_mel.c in Sources */,
319C94B11FC5C1200055BE40 /* rta_preemphasis.c in Sources */,
319C94B21FC5C1200055BE40 /* rta_psy.c in Sources */,
319C94B41FC5C1200055BE40 /* rta_window.c in Sources */,
319C94B51FC5C1200055BE40 /* rta_yin.c in Sources */,
319C94B61FC5C1200055BE40 /* rta_mean_variance.c in Sources */,
319C94B71FC5C1200055BE40 /* rta_moments.c in Sources */,
319C94B81FC5C1200055BE40 /* rta_selection.c in Sources */,
319C94B91FC5C1200055BE40 /* rta_svd.c in Sources */,
319C94BA1FC5C1200055BE40 /* rta_bpf.c in Sources */,
319C94BB1FC5C1200055BE40 /* rta_int.c in Sources */,
319C94BC1FC5C1200055BE40 /* rta_util.c in Sources */,
319C94A31FC5C0DE0055BE40 /* BayesianFilter.cpp in Sources */,
319C94A41FC5C0DE0055BE40 /* filter_utilities.cpp in Sources */,
319C94A21FC5C0C10055BE40 /* PiPoCollection.cpp in Sources */,
319C94A11FC5BFA80055BE40 /* PiPoHost.cpp in Sources */,
311BA3101EDC746F00244DAC /* test_rapidPiPo.cpp in Sources */,
311BA3111EDC747A00244DAC /* rapidPiPoHost.cpp in Sources */,
311BA31A1EDC7ADE00244DAC /* fft.cpp in Sources */,
311BA31B1EDC7ADE00244DAC /* maxiBark.cpp in Sources */,
......@@ -1151,6 +1408,8 @@
0BFFEF201E56082700EF19A5 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_WARN_INT_CONVERSION = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
MACOSX_DEPLOYMENT_TARGET = 10.11;
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = macosx;
......@@ -1160,6 +1419,8 @@
0BFFEF211E56082700EF19A5 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_WARN_INT_CONVERSION = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
MACOSX_DEPLOYMENT_TARGET = 10.11;
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = macosx;
......@@ -1169,6 +1430,7 @@
0BFFEF2B1E56083D00EF19A5 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
GCC_C_LANGUAGE_STANDARD = c11;
MACOSX_DEPLOYMENT_TARGET = 10.11;
PRODUCT_NAME = "$(TARGET_NAME)";
};
......@@ -1177,6 +1439,7 @@
0BFFEF2C1E56083D00EF19A5 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
GCC_C_LANGUAGE_STANDARD = c11;
MACOSX_DEPLOYMENT_TARGET = 10.11;
PRODUCT_NAME = "$(TARGET_NAME)";
};
......@@ -1214,10 +1477,25 @@
};
name = Release;
};
312C61D11FE95A680085E283 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
MACOSX_DEPLOYMENT_TARGET = 10.11;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
312C61D21FE95A680085E283 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
MACOSX_DEPLOYMENT_TARGET = 10.11;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
31D7B72A1E6B048100917757 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
LIBRARY_SEARCH_PATHS = "$(PROJECT_DIR)/../dependencies/pipo/bin/**";
MACOSX_DEPLOYMENT_TARGET = 10.11;
PRODUCT_NAME = "$(TARGET_NAME)";
};
......@@ -1226,7 +1504,6 @@
31D7B72B1E6B048100917757 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
LIBRARY_SEARCH_PATHS = "$(PROJECT_DIR)/../dependencies/pipo/bin/**";
MACOSX_DEPLOYMENT_TARGET = 10.11;
PRODUCT_NAME = "$(TARGET_NAME)";
};
......@@ -1237,17 +1514,25 @@
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "-";
......@@ -1280,17 +1565,25 @@
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "-";
......@@ -1332,7 +1625,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
0BFFEF351E56085C00EF19A5 /* Build configuration list for PBXNativeTarget "test_rapidXmmTools" */ = {
0BFFEF351E56085C00EF19A5 /* Build configuration list for PBXNativeTarget "test_rapidXMM" */ = {
isa = XCConfigurationList;
buildConfigurations = (
0BFFEF361E56085C00EF19A5 /* Debug */,
......@@ -1350,7 +1643,16 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
31D7B7291E6B048100917757 /* Build configuration list for PBXNativeTarget "test_rapidPiPoTools" */ = {
312C61D01FE95A680085E283 /* Build configuration list for PBXNativeTarget "test_trainingData" */ = {
isa = XCConfigurationList;
buildConfigurations = (
312C61D11FE95A680085E283 /* Debug */,
312C61D21FE95A680085E283 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
31D7B7291E6B048100917757 /* Build configuration list for PBXNativeTarget "test_rapidPiPo" */ = {
isa = XCConfigurationList;
buildConfigurations = (
31D7B72A1E6B048100917757 /* Debug */,
......
File added
//
// BarChart.cpp
// RapidVisualizerOSC
//
// Created by James on 09/11/2017.
//
//
#include "BarChart.hpp"
BarChart::BarChart ( GraphState* state ) : RealTimeGraph (state)
{
//
}
BarChart::~BarChart ( void )
{
}