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 4104 additions and 504 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 void fromPiPoStreamAttributes(PiPoStreamAttributes &src,
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;
}
dst.hasTimeTags = src.hasTimeTags;
if (src.rate <= MIN_PIPO_SAMPLERATE) {
dst.rate = MIN_PIPO_SAMPLERATE;
} else if (src.rate >= MAX_PIPO_SAMPLERATE) {
dst.rate = MAX_PIPO_SAMPLERATE;
} else {
dst.rate = src.rate;
}
dst.rate = src.rate;
dst.offset = src.offset;
dst.width = src.dims[0];
dst.height = src.dims[1];
dst.labels = std::vector<std::string>();
for (unsigned int i = 0; i < numLabels; ++i)
{
dst.labels.push_back(std::string(src.labels[i]));
}
dst.hasVarSize = src.hasVarSize;
dst.domain = src.domain;
dst.maxFrames = src.maxFrames;
}
static void toPiPoStreamAttributes(RapidPiPoStreamAttributes &src,
PiPoStreamAttributes &dst)
{
const char *labs[src.labels.size()];
for (unsigned int i = 0; i < src.labels.size(); ++i)
{
labs[i] = src.labels[i].c_str();
}
dst = PiPoStreamAttributes(
src.hasTimeTags,
src.rate,
src.offset,
src.width,
src.height,
&labs[0],
src.hasVarSize,
src.domain,
src.maxFrames
);
}
//========================= H O S T === M E T H O D S ========================//
int
RapidPiPoHost::setInputStreamAttributes(RapidPiPoStreamAttributes &rpsa)
{
PiPoStreamAttributes psa;
toPiPoStreamAttributes(rpsa, psa);
return PiPoHost::setInputStreamAttributes(psa);
}
void
RapidPiPoHost::onNewFrame(double time, double weight, PiPoValue *values, unsigned int size)
{
std::cout << "I received " << size << " new frame(s)" << std::endl;
}
//----------------------------- JSON FORMATTING ------------------------------//
std::string
RapidPiPoHost::getJSON()
{
Json::Value result = toJSON();
return result.toStyledString();
}
void
RapidPiPoHost::writeJSON(const std::string &filepath)
{
Json::Value root = toJSON();
std::ofstream jsonOut;
jsonOut.open (filepath);
Json::StyledStreamWriter writer;
writer.write(jsonOut, root);
jsonOut.close();
}
bool
RapidPiPoHost::putJSON(const std::string &jsonMessage)
{
Json::Value parsedFromString;
Json::Reader reader;
bool parsingSuccessful = reader.parse(jsonMessage, parsedFromString);
return (parsingSuccessful && fromJSON(parsedFromString));
}
bool
RapidPiPoHost::readJSON(const std::string &filepath)
{
Json::Value root;
std::ifstream file(filepath);
file >> root;
return fromJSON(root);
}
//-------------------------- PRIVATE HOST METHODS ----------------------------//
Json::Value
RapidPiPoHost::toJSON()
{
Json::Value root;
//*
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;
inputStream["offset"] = inputStreamAttrs.offset;
inputStream["width"] = inputStreamAttrs.dims[0];
inputStream["height"] = inputStreamAttrs.dims[1];
inputStream["labels"] = inputStreamAttrs.labels;
inputStream["hasVarSize"] = inputStreamAttrs.hasVarSize;
inputStream["domain"] = inputStreamAttrs.domain;
inputStream["maxFrames"] = inputStreamAttrs.maxFrames;
Json::Value outputStream;
outputStream["hasTimeTags"] = outputStreamAttrs.hasTimeTags;
outputStream["rate"] = outputStreamAttrs.rate;
outputStream["offset"] = outputStreamAttrs.offset;
outputStream["width"] = outputStreamAttrs.dims[0];
outputStream["height"] = outputStreamAttrs.dims[1];
outputStream["labels"] = outputStreamAttrs.labels;
outputStream["hasVarSize"] = outputStreamAttrs.hasVarSize;
outputStream["domain"] = outputStreamAttrs.domain;
outputStream["maxFrames"] = outputStreamAttrs.maxFrames;
Json::Value streams;
streams["input"] = inputStream;
streams["output"] = outputStream;
pipodata["streamAttributes"] = streams;
Json::Value params;
int n = this->graph->getNumAttrs();
params.resize(static_cast<Json::ArrayIndex>(n));
for (unsigned int i = 0; i < n; ++i)
{
Json::Value param;
PiPo::Attr *a = this->graph->getAttr(i);
param["name"] = a->getName();
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["payload"] = pipodata;
//*/
return root;
}
bool
RapidPiPoHost::fromJSON(Json::Value &jv)
{
//*
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["payload"]["description"].asString());
Json::Value params = jv["payload"]["parameters"];
unsigned int nAttrs = params.size();
for (unsigned int i = 0; i < nAttrs; ++i)
{
std::string type = params[i]["type"].asString();
const char *name = params[i]["name"].asString().c_str();
if (type.compare("Bool") == 0)
{
this->setAttr(name, params[i]["value"].asInt());
}
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;
for (int j = 0; j < params[i]["value"].size(); ++j)
{
values.push_back(params[i]["value"][j].asInt());
}
this->setAttr(name, values);
}
else if (type.compare("Double") == 0)
{
std::vector<double> values;
for (int j = 0; j < params[i]["value"].size(); ++j)
{
values.push_back(params[i]["value"][j].asDouble());
}
this->setAttr(name, values);
}
}
Json::Value inputStream = jv["pipodata"]["streamAttributes"]["input"];
// setInputStreamAttributes(
// inputStream["hasTimeTags"].getDbl()//,
// //...
// );
return true;
}
//*/
return false;
}
#ifndef _RAPID_PIPO_HOST_H_
#define _RAPID_PIPO_HOST_H_
#include "PiPo.h"
#include "PiPoHost.h"
//#ifdef EXTERNAL_JSONCPP_PATH
#define EXTERNAL_JSONCPP_PATH "json.h"
#include EXTERNAL_JSONCPP_PATH
//#endif /* EXTERNAL_JSONCPP_PATH */
#define MIN_PIPO_SAMPLERATE (1.0 / 31536000000.0) /* once a year */
#define MAX_PIPO_SAMPLERATE (96000000000.0)
#define DEFAULT_PIPO_SAMPLERATE 1000.0
struct RapidPiPoStreamAttributes {
RapidPiPoStreamAttributes() : // default parameters suited for audio
hasTimeTags(false),
rate(DEFAULT_PIPO_SAMPLERATE),
offset(0),
width(1),
height(1),
labels({ "" }),
hasVarSize(false),
domain(0),
maxFrames(1) {}
bool hasTimeTags;
double rate;
double offset;
unsigned int width;
unsigned int height;
std::vector<std::string> labels;
bool hasVarSize;
double domain;
unsigned int maxFrames;
};
//================================ H O S T ===================================//
class RapidPiPoHost : public PiPoHost {
public:
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);
private:
Json::Value toJSON();
bool fromJSON(Json::Value &jv);
};
#endif /* _RAPID_PIPO_HOST_H_ */
#ifndef _RAPID_PIPO_TOOLS_H_
#define _RAPID_PIPO_TOOLS_H_
#include "rapidPiPoHost.h"
typedef RapidPiPoStreamAttributes signalAttributes;
typedef RapidPiPoHost signalProcessingHost;
#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!
/*
* 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
File added
{
"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;
}
//
// test_RapidLib.cpp
// Unit tests for RapidLib
//
// Created by Francisco Bernardo on 17/02/2017.
// Copyright © 2017 Goldsmiths. All rights reserved.
//
#define CATCH_CONFIG_MAIN
#include "catch.hpp"
#include "rapidMix.h"
#include <iostream>
SCENARIO("Test NN Regression", "[machineLearning]")
{
GIVEN("NN Regression object and training dataset")
{
rapidmix::staticRegression myNN;
rapidmix::trainingData myData;
std::vector<double> input = { 0.2, 0.7 };
std::vector<double> output = { 3.0 };
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.recordSingleElement("label", input, output) == 3);
myData.writeJSON("/var/tmp/testTrainingData.json");
REQUIRE(myNN.train(myData) == true);
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.596715279688549);
WHEN("when NN model is deserialized from file")
{
rapidmix::staticRegression myNNfromFile;
REQUIRE(myNNfromFile.readJSON(filepath) == true);
THEN("run models and in-memory model")
{
REQUIRE(myNN.run(inputVec)[0] == myNNfromFile.run(inputVec)[0]);
}
}
WHEN("when NN model is deserialized from JSON stream")
{
rapidmix::staticRegression myNNfromString;
REQUIRE(myNNfromString.putJSON(myNN.getJSON()) == true);
THEN("run models and in-memory model")
{
REQUIRE(myNN.run(inputVec)[0] == myNNfromString.run(inputVec)[0]);
}
}
}
}
SCENARIO("Test kNN classification", "[machineLearning]")
{
GIVEN("kNN object and training dataset")
{
rapidmix::staticClassification myKnn;
rapidmix::trainingData myData;
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";
myKnn.writeJSON(filepath2);
rapidmix::staticClassification myKnnFromString;
myKnnFromString.putJSON(myKnn.getJSON());
rapidmix::staticClassification myKnnFromFile;
myKnnFromFile.readJSON(filepath2);
std::vector<double> inputVec = { 2.0, 44.2 };
REQUIRE(myKnn.run(inputVec, "label") == "dog");
WHEN("when kNN model is read from file")
{
THEN("run models and compare")
{
REQUIRE(myKnn.run(inputVec)[0] == myKnnFromFile.run(inputVec)[0]);
}
}
WHEN("when kNN model is read from JSON stream")
{
THEN("run models and compare")
{
REQUIRE(myKnn.run(inputVec)[0] == myKnnFromString.run(inputVec)[0]);
}
}
}
}
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;
rapidmix::trainingData myBadData;
std::vector<double> input = { 0.1, 0.2, 0.3};
std::vector<double> output = { 1.0 };
myBadData.recordSingleElement("label", input,output); //FIXME: This label is uselsess? -MZ
input = { 1.0, 2.0, 3.0, 4.0 };
myBadData.addElement(input, output);
REQUIRE(badNN.train(myBadData) == false);
REQUIRE(badKNN.train(myBadData) == false);
//TODO: These should return false with empty data set. I think it just crashes now. -mz
}
//
// test_GVF.cpp
// Unit tests for GFV
//
// Created by Francisco Bernardo on 17/02/2017.
// Copyright © 2017 Goldsmiths. All rights reserved.
//
#define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one cpp file
#include "catch.hpp"
#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]" ) {
GVF * gvf = new GVF();
GVFGesture gesture;
GVFOutcomes outcomes;
gvf->translate(false);
gvf->segmentation(false);
gvf->setNumberOfParticles(1000);
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();
for (vector<vector<float>>::iterator frame = trainingData.begin(); frame != trainingData.end(); frame++)
{
// Fill the template
gesture.addObservation(*frame);
}
}
gvf->setState(GVF::STATE_FOLLOWING);
gesture.clear();
trainingData.clear();
vector<vector<float>> testData;
if (gvf->getState()==GVF::STATE_FOLLOWING)
{
for (vector<vector<float>>::iterator frame = testData.begin(); frame != testData.end(); frame++)
{
// 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();
REQUIRE( gvf != NULL);
}
SCENARIO("Test GVF Regression", "[machineLearning]")
{
GIVEN("gvf object and training dataset")
{
rapidmix::gvfTemporalVariation gvf;
rapidmix::trainingData myData;
// Record first gesture
myData.startRecording();
std::vector<double> inputs = { 4.0, 0.7 };
myData.addElement(inputs);
inputs = { 3.0, 0.8 };
myData.addElement(inputs);
inputs = { 2.0, 0.9 };
myData.addElement(inputs);
inputs = { 1.0, 1.0 };
myData.addElement(inputs);
inputs = { 0.4, 1.2 };
myData.addElement(inputs);
inputs = { 0.2, 1.4 };
myData.addElement(inputs);
myData.stopRecording();
// Record reverse of first gesture
myData.startRecording();
inputs = { 0.2, 1.4 };
myData.addElement(inputs);
inputs = { 0.4, 1.2 };
myData.addElement(inputs);
inputs = { 1.0, 1.0 };
myData.addElement(inputs);
inputs = { 2.0, 0.9 };
myData.addElement(inputs);
inputs = { 3.0, 0.8 };
myData.addElement(inputs);
inputs = { 4.0, 0.7 };
myData.addElement(inputs);
myData.stopRecording();
// Train
REQUIRE(gvf.train(myData) == true);
// Set first gesture (or a fragment of it)
std::vector<double> outcomes;
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%
}
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 ")
{
}
}
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 ")
{
}
}
}
}
}
//
// test_rapidPiPoTools.cpp
// Unit tests for rapidPiPoTools
//
#ifndef CATCH_CONFIG_MAIN
#define CATCH_CONFIG_MAIN
#endif
#ifdef RTA_USE_VECLIB
#undef RTA_USE_VECLIB
#endif
#include <unistd.h>
#include "catch.hpp"
#include "signalProcessing.h"
#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 =================================//
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("./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::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>);
// now we can write :
// pipoHost.setChain("myCustomPiPo");
// #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");
host.setAttr("fft.mode", "power");
host.setAttr("fft.weighting", "itur468");
host.setAttr("scale.inmin", 1.);
host.setAttr("scale.inmax", 10.);
host.setAttr("scale.outmin", 0.);
host.setAttr("scale.outmax", 10.);
host.setAttr("scale.func", "log");
host.setAttr("scale.base", 10.);
host.setAttr("onseg.duration", 1.);
host.setAttr("onseg.min", 0.);
host.setAttr("onseg.max", 1.);
host.setAttr("onseg.mean", 0.);
host.setAttr("onseg.stddev", 0.);
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 : ";
std::cout << host.getEnumAttr("fft.mode") << std::endl;
std::cout << "param names : " << std::endl;
std::vector<std::string> attrs = host.getAttrNames();
for (int i = 0; i < attrs.size(); ++i)
{
std::cout << "- " << attrs[i] << std::endl;
}
//*/
//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;
// set another chain :
// pipoHost.setChain("chroma");
WHEN("file is processed")
{
rapidmix::signalAttributes sa;
sa.hasTimeTags = true;
sa.rate = 44100;
sa.offset = 0;
sa.width = 1;
sa.height = 1;
sa.labels = std::vector<std::string>();
sa.hasVarSize = false;
sa.domain = 0;
sa.maxFrames = 1;
host.setInputSignalAttributes(sa);
float value;
for (unsigned int i = 0; i < buffer.length; ++i) {
value = buffer.play();
host.frames((double)i, 0.0, &value, 1, 1);
}
THEN("compare results of actual processing and same file processed in another envrironment")
{
// compare the results of the processing
REQUIRE(true);
}
}
}
}
#ifndef CATCH_CONFIG_MAIN
#define CATCH_CONFIG_MAIN
#endif
#include "catch.hpp"
#include "machineLearning.h"
//================================== GMM =====================================//
SCENARIO("Test GMM", "[machineLearning]")
{
GIVEN("GMM static classification object and training dataset")
{
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]);
}
}
WHEN("GMM model is deserialized from JSON stream")
{
rapidmix::xmmStaticClassification myGmmFromString;
myGmmFromString.putJSON(myGmm.getJSON());
THEN("compare results of original and deserialized models")
{
REQUIRE(myGmm.run(myXmmInput)[0] == myGmmFromString.run(myXmmInput)[0]);
}
}
}
}
//================================== GMR =====================================//
SCENARIO("Test GMR", "[machineLearning]")
{
GIVEN("GMR static regression object and training dataset")
{
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;
double origOut = myGmr.run(myXmmInput)[0];
double fileOut = myGmrFromFile.run(myXmmInput)[0];
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;
double origOut = myGmr.run(myXmmInput)[0];
double stringOut = myGmrFromString.run(myXmmInput)[0];
REQUIRE(std::abs(origOut - stringOut) < epsilon);
}
}
}
}
//================================== HMM =====================================//
SCENARIO("Test HMM", "[machineLearning]")
{
GIVEN("HMM temporal classification object and training dataset")
{
rapidmix::xmmConfig xcfg;
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 },
{ 0.0, 0.0 },
{ 0.0, 0.0 },
{ 0.0, 0.0 },
{ 0.1, 1.1 },
{ 0.2, 1.2 },
{ 0.3, 1.3 },
{ 0.4, 1.4 },
{ 0.5, 1.5 },
{ 0.6, 1.6 },
{ 0.7, 1.7 },
{ 0.8, 1.8 },
{ 0.9, 1.9 },
{ 1.0, 2.0 },
{ 1.1, 2.1 },
{ 1.2, 2.2 },
{ 1.3, 2.3 },
{ 1.4, 2.4 },
{ 1.5, 2.5 },
{ 1.6, 2.6 }
};
for (int i = 0; i < myXmmPhrase.size(); ++i) {
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")
{
std::vector<double> progress(myXmmPhrase.size());
for (int i = 0; i < myXmmPhrase.size(); ++i) {
// we take the second value because run() returns
// [ likelihood_1, timeProgression_1, .... likelihood_n, timeProgression_n ]
progress[i] = myHmm.run(myXmmPhrase[i])[1];
}
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")
{
REQUIRE(myHmm.run(myXmmPhrase[i]) == myHmmFromFile.run(myXmmPhrase[i]));
}
}
}
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]));
}
}
}
}
}
//================================== HMR =====================================//
////////// here we compute RMS error and validate if it stays under some epsilon
SCENARIO("Test HMR", "[machineLearning]")
{
GIVEN("HMR temporal regression object and training dataset")
{
rapidmix::xmmConfig xcfg;
xcfg.relativeRegularization = 0.001;
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 } },
{ { 0.0, 0.0 }, { 2.0 } },
{ { 0.0, 0.0 }, { 3.0 } },
{ { 0.0, 0.0 }, { 4.0 } },
{ { 0.1, 1.1 }, { 5.0 } },
{ { 0.2, 1.2 }, { 6.0 } },
{ { 0.3, 1.3 }, { 7.0 } },
{ { 0.4, 1.4 }, { 8.0 } },
{ { 0.5, 1.5 }, { 9.0 } },
{ { 0.6, 1.6 }, { 10.0 } },
{ { 0.7, 1.7 }, { 11.0 } },
{ { 0.8, 1.8 }, { 12.0 } },
{ { 0.9, 1.9 }, { 13.0 } },
{ { 1.0, 2.0 }, { 14.0 } },
{ { 1.1, 2.1 }, { 15.0 } },
{ { 1.2, 2.2 }, { 16.0 } },
{ { 1.3, 2.3 }, { 17.0 } },
{ { 1.4, 2.4 }, { 18.0 } },
{ { 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;
double sum = 0;
for (int i = 0; i < myXmmPhrase.size(); ++i) {
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 :
double epsilon = 0.1;
REQUIRE(sum <= epsilon);
}
}
}
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);
}
}
}
}
}
#define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one cpp file
#include "catch.hpp"
#include <vector>
#include <iostream>
#include <cassert>
#include <random>
#include <algorithm>
#include "json.h"
#include "rapidmix.h"
SCENARIO("Test facade for RapidLib classification", "[machineLearning]")
{
GIVEN("a static classification object")
{
rapidmix::staticClassification myKnn;
rapidmix::trainingData myData;
WHEN("column names are set") {
THEN("verify them") {
std::vector<std::string> columnNames = { "X", "Y" };
myData.setColumnNames(columnNames);
REQUIRE(myData.getColumnNames() == columnNames);
}
}
std::vector<double> input = { 0.2, 0.7 };
std::vector<double> output = { 3.0 };
int testVar = myData.addElement(input, output);
input = { 2.0, 44.2 };
output = { 20.14 };
int testVar2 = myData.addElement(input, output);
WHEN("data are added") {
THEN("check id") {
REQUIRE(testVar == 1);
REQUIRE(testVar2 == 2);
}
}
bool trainTest = myKnn.train(myData);
WHEN ("training happens") {
THEN("check") {
REQUIRE(trainTest == true);
}
}
REQUIRE(myKnn.getK()[0] == 1);
WHEN ("k is set") {
myKnn.setK(0, 2);
THEN("check that it has changed") {
REQUIRE(myKnn.getK()[0] == 2);
}
}
std::vector<double> inputVec = { 2.0, 44.2 };
WHEN("models are serialized and deserialized") {
std::string filepath2 = "/var/tmp/modelSetDescription_knn.json";
myKnn.writeJSON(filepath2);
rapidmix::staticClassification myKnnFromString;
myKnnFromString.putJSON(myKnn.getJSON());
rapidmix::staticClassification myKnnFromFile;
myKnnFromFile.readJSON(filepath2);
//std::cout << "knn before: " << myKnn.run(inputVec)[0] << std::endl;
//std::cout << "knn from string: " << myKnnFromString.run(inputVec)[0] << std::endl;
//std::cout << "knn from file: " << myKnnFromFile.run(inputVec)[0] << std::endl;
THEN("check that results are the same") {
REQUIRE(myKnn.run(inputVec)[0] == myKnnFromString.run(inputVec)[0]);
REQUIRE(myKnn.run(inputVec)[0] == myKnnFromFile.run(inputVec)[0]);
}
}
std::string trainingPath = "/var/tmp/testTrainingData.json";
myData.writeJSON(trainingPath);
rapidmix::trainingData myStoredData;
bool msdTest = myStoredData.readJSON(trainingPath);
rapidmix::staticClassification myStoredKnn;
bool msdTrain = myStoredKnn.train(myStoredData);
WHEN("data are saved as a JSON") {
THEN("check that the file reads and parses") {
REQUIRE(msdTest == true);
}
THEN("check that the new model is the same as the old model") {
REQUIRE(msdTrain == true);
REQUIRE(myKnn.run(inputVec)[0] == myStoredKnn.run(inputVec)[0]);
}
}
}
}
SCENARIO("Test facade for RapidLib svm classification", "[machineLearning]")
{
GIVEN("an svm classification object")
{
rapidmix::staticClassification mySVM(classification::svm);
rapidmix::trainingData myData;
std::vector<double> input = { 0.2, 0.7 };
std::vector<double> output = { 3.0 };
int testVar = myData.addElement(input, output);
input = { 2.0, 44.2 };
output = { 20.14 };
int testVar2 = myData.addElement(input, output);
mySVM.train(myData);
}
}
SCENARIO("Test facade for RapidLib regression", "[machineLearning]")
{
GIVEN("an regression object")
{
rapidmix::staticRegression myNN;
rapidmix::trainingData myData;
std::vector<double> input = { 0.2, 0.7 };
std::vector<double> output = { 3.0 };
int testVar = myData.addElement(input, output);
input = { 2.0, 44.2 };
output = { 20.14 };
int testVar2 = myData.addElement(input, output);
WHEN("data are added") {
THEN("check id") {
REQUIRE(testVar == 1);
REQUIRE(testVar2 == 2);
}
}
bool trainTest = myNN.train(myData);
WHEN ("training happens") {
THEN("check") {
REQUIRE(trainTest == true);
}
}
std::vector<double> inputVec = { 2.0, 44.2 };
WHEN("models are serialized and deserialized") {
std::string filepath = "/var/tmp/modelSetDescription.json";
myNN.writeJSON(filepath);
rapidmix::staticRegression myNNfromString;
myNNfromString.putJSON(myNN.getJSON());
rapidmix::staticRegression myNNfromFile;
myNNfromFile.readJSON(filepath);
//std::cout << "before: " << myNN.run(inputVec)[0] << std::endl;
//std::cout << "from string: " << myNNfromString.run(inputVec)[0] << std::endl;
//std::cout << myNNfromString.getJSON() << std::endl;
//std::cout << "from file: " << myNNfromFile.run(inputVec)[0] << std::endl;
THEN("check that results are the same") {
REQUIRE(myNN.run(inputVec)[0] == myNNfromString.run(inputVec)[0]);
REQUIRE(myNN.run(inputVec)[0] == myNNfromFile.run(inputVec)[0]);
}
}
}
}
SCENARIO("Test RapidLib regression with a bigger vector", "[machineLearning]")
{
GIVEN("a static regeression object")
{
rapidmix::staticRegression bigVector;
rapidmix::trainingData trainingSet2;
std::default_random_engine generator;
std::uniform_real_distribution<double> distribution(-0.5,0.5);
int vecLength = 64;
for (int j = 0; j < vecLength; ++j) {
std::vector<double> input;
std::vector<double> output;
for (int i = 0; i < vecLength; ++i) {
input.push_back(distribution(generator));
}
output = { distribution(generator) };
trainingSet2.addElement(input, output);
}
bigVector.train(trainingSet2);
std::vector<double> inputVec2;
for (int i=0; i < vecLength; ++i) {
inputVec2.push_back(distribution(generator));
}
REQUIRE(isfinite(bigVector.process(inputVec2)[0]));
}
}
SCENARIO("Test facade around XMM", "[machineLearning]")
{
GIVEN("some XMM")
{
//====================== rapidXmmTools test ==============================//
rapidmix::trainingData myXmmData;
std::vector<double> myXmmInput;
std::vector<double> myXmmOutput;
xmmToolConfig xcfg;
//////////////////// testing GMM :
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();
xcfg.relativeRegularization = 0.1;
rapidmix::xmmStaticClassification myGmm(xcfg);
if (myGmm.train(myXmmData)) {
std::cout << "GMM training successful !" << std::endl;
std::vector<double> res;
std::vector<double> input = { 0.2, 0.7 };
res = myGmm.run(input);
for (auto &elt : res) std::cout << elt << " ";
std::cout << std::endl;
input = { 0.8, 0.1 };
res = myGmm.run(input);
for (auto &elt : res) std::cout << elt << " ";
std::cout << std::endl; } else {
std::cout << "GMM training impossible !" << std::endl;
}
//mz label test
WHEN("rapidLib classifier trains on the same data") {
rapidmix::staticClassification labelKnn;
labelKnn.train(myXmmData);
THEN("verify it returns the same label") {
REQUIRE(myXmmData.getLabel(labelKnn.run({ 0.2, 0.7 })[0]) == "lab1");
}
}
//////////////////// testing HMM :
// phrases seem to need a minimum length related to the number of states
// otherwise sometimes we get stuck into NaN values
xcfg.states = 6;
// we don't really need this here as we only have 1 label ...
xcfg.likelihoodWindow = 10;
rapidmix::xmmTemporalClassification myHmm(xcfg);
myXmmData = rapidmix::trainingData(); // reset the whole set
myXmmData.startRecording("lab1");
std::vector<std::vector<double>> myXmmPhrase = {
{ 0.0, 0.0 },
{ 0.0, 0.0 },
{ 0.0, 0.0 },
{ 0.0, 0.0 },
{ 0.1, 1.1 },
{ 0.2, 1.2 },
{ 0.3, 1.3 },
{ 0.4, 1.4 },
{ 0.5, 1.5 },
{ 0.6, 1.6 },
{ 0.7, 1.7 },
{ 0.8, 1.8 },
{ 0.9, 1.9 },
{ 1.0, 2.0 },
{ 1.1, 2.1 },
{ 1.2, 2.2 },
{ 1.3, 2.3 },
{ 1.4, 2.4 },
{ 1.5, 2.5 },
{ 1.6, 2.6 }
};
for (int i = 0; i < myXmmPhrase.size(); ++i) {
myXmmData.addElement(myXmmPhrase[i], myXmmOutput);
}
myXmmData.stopRecording();
if (myHmm.train(myXmmData)) {
std::cout << "HMM training successful !" << std::endl;
std::vector<double> res;
for (int i = 0; i < myXmmPhrase.size(); ++i) {
res = myHmm.run(myXmmPhrase[i]);
for (auto &elt : res) std::cout << elt << " ";
std::cout << std::endl;
}
} else {
std::cout << "HMM training impossible !" << std::endl;
}
}
}
#define CATCH_CONFIG_MAIN
#include "catch.hpp"
#include <math.h>
#include "rapidmix.h"
SCENARIO("Test rapidStream processing", "[signalProcessing]")
{
GIVEN("rapidStream object with default window size")
{
rapidmix::rapidStream defaultProcessor; //create a processor with no argument
WHEN("feeding in positions") {
THEN("check velocity") {
defaultProcessor.pushToWindow(1);
defaultProcessor.pushToWindow(2);
REQUIRE(defaultProcessor.velocity() == 1); //aka First-order difference
}
THEN("check acceleration") {
defaultProcessor.clear();
defaultProcessor.pushToWindow(1);
defaultProcessor.pushToWindow(2);
defaultProcessor.pushToWindow(10);
REQUIRE(defaultProcessor.acceleration() == 7); //aka Second-order difference
}
}
GIVEN("rapidStream object with a window size of 5")
{
rapidmix::rapidStream myProcessor(5); //create a processor with a window size of 5
WHEN("feeding in some arbitrary numbers") {
myProcessor.pushToWindow(0.246); //append? or push?
myProcessor.pushToWindow(0.44);
myProcessor.pushToWindow(-0.228);
myProcessor.pushToWindow(0.402);
myProcessor.pushToWindow(-0.382);
THEN("check min and max") {
REQUIRE(myProcessor.maximum() == 0.44);
REQUIRE(myProcessor.minimum() == -0.382);
}
THEN("check sum, mean and std dev") {
REQUIRE(myProcessor.sum() == 0.478);
REQUIRE(myProcessor.mean() == 0.09559999999999999);
REQUIRE(myProcessor.standardDeviation() == 0.33702557766436664);
REQUIRE(myProcessor.rms() == 0.3503221374677884);
}
}
myProcessor.clear(); //forget any stored vaules
REQUIRE(myProcessor.sum() == 0);
WHEN("putting positions in a window") {
myProcessor.pushToWindow(1.);
myProcessor.pushToWindow(2.);
myProcessor.pushToWindow(2.);
myProcessor.pushToWindow(4.);
myProcessor.pushToWindow(5.);
THEN("check min and max velocity") {
REQUIRE(myProcessor.maxVelocity() == 2.0);
REQUIRE(myProcessor.minVelocity() == 0.);
}
THEN("check min and max acceleration") {
REQUIRE(myProcessor.maxAcceleration() == 2.0);
REQUIRE(myProcessor.minAcceleration() == -1.0);
}
}
}
}
}
SCENARIO("Test maximilian feature extraction", "[signalProcessing]")
{
GIVEN("an fft object") {
rapidmix::FFT myFFT;
myFFT.setup(1024, 512, 265);
for (int i = 0; i < 1024; ++i) {
float input = (i % 256/256.0);
myFFT.process(input);
}
WHEN("phasor is the input") {
THEN("check centroid") {
REQUIRE(myFFT.spectralCentroid() == 3520.84277f);
}
float foo = myFFT.spectralFlatness();
THEN("check flatness") {
//REQUIRE(myFFT.spectralFlatness() == 0.43209f); // or 0.432094097 Why doesn't this work? -mz
}
}
rapidmix::MFCC myMFCC;
int sampleRate = 44100;
myMFCC.setup(512, 42, 13, 20, 20000, sampleRate);
double *mfccs = (double*) malloc(sizeof(double) * 13);
myMFCC.mfcc(myFFT.magnitudes, mfccs); //MZ: This runs the thing.
for (int i = 2; i < 42; ++i) {
REQUIRE(myMFCC.melBands[i] < 0);
}
for (int i = 0; i < 13; ++i) {
REQUIRE(mfccs[i] > 0.);
}
}
}
\ No newline at end of file
#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")
{
}
}
}
}
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
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 */; };
311BA3011EDC6FD000244DAC /* xmmHmmParameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 311BA2CF1EDC6ECE00244DAC /* xmmHmmParameters.cpp */; };
311BA3021EDC6FD000244DAC /* xmmHmmSingleClass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 311BA2D21EDC6ECE00244DAC /* xmmHmmSingleClass.cpp */; };
311BA3031EDC6FD000244DAC /* xmmGmm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 311BA2D71EDC6EDB00244DAC /* xmmGmm.cpp */; };
311BA3041EDC6FD000244DAC /* xmmGmmParameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 311BA2D91EDC6EDB00244DAC /* xmmGmmParameters.cpp */; };
311BA3051EDC6FD000244DAC /* xmmGmmSingleClass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 311BA2DB1EDC6EDB00244DAC /* xmmGmmSingleClass.cpp */; };
311BA3061EDC6FD000244DAC /* xmmPhrase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 311BA2E01EDC6EEA00244DAC /* xmmPhrase.cpp */; };
311BA3071EDC6FD000244DAC /* xmmTrainingSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 311BA2E21EDC6EEA00244DAC /* xmmTrainingSet.cpp */; };
311BA3081EDC6FD000244DAC /* xmmModelSharedParameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 311BA2EA1EDC6EF800244DAC /* xmmModelSharedParameters.cpp */; };
311BA3091EDC6FD000244DAC /* xmmModelSingleClass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 311BA2EC1EDC6EF800244DAC /* xmmModelSingleClass.cpp */; };
311BA30A1EDC6FD000244DAC /* xmmGaussianDistribution.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 311BA2F01EDC6F0400244DAC /* xmmGaussianDistribution.cpp */; };
311BA30B1EDC6FD000244DAC /* xmmAttribute.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 311BA2F31EDC6F0F00244DAC /* xmmAttribute.cpp */; };
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_rapidPiPo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5EE11ED8480D00E9FAFA /* test_rapidPiPo.cpp */; };
311BA3111EDC747A00244DAC /* rapidPiPoHost.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 311BA2AC1EDC6AED00244DAC /* rapidPiPoHost.cpp */; };
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 */; };
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 */; };
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 */; };
BEA7B7151EDD7B6E0003E84B /* neuralNetwork.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2C5DF71ED8450E00E9FAFA /* neuralNetwork.cpp */; };
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 */
0BFFEF191E56082700EF19A5 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = /usr/share/man/man1/;
dstSubfolderSpec = 0;
files = (
);
runOnlyForDeploymentPostprocessing = 1;
};
0BFFEF241E56083C00EF19A5 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = /usr/share/man/man1/;
dstSubfolderSpec = 0;
files = (
);
runOnlyForDeploymentPostprocessing = 1;
};
0BFFEF2F1E56085C00EF19A5 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = /usr/share/man/man1/;
dstSubfolderSpec = 0;
files = (
);
runOnlyForDeploymentPostprocessing = 1;
};
0BFFEF3D1E5608C000EF19A5 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = /usr/share/man/man1/;
dstSubfolderSpec = 0;
files = (
);
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 = (
);
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_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; };
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>"; };
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>"; };
311BA2C81EDC6EC100244DAC /* xmmKMeansParameters.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = xmmKMeansParameters.cpp; path = xmm/src/models/kmeans/xmmKMeansParameters.cpp; sourceTree = "<group>"; };
311BA2C91EDC6EC100244DAC /* xmmKMeansParameters.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmKMeansParameters.hpp; path = xmm/src/models/kmeans/xmmKMeansParameters.hpp; sourceTree = "<group>"; };
311BA2CA1EDC6EC100244DAC /* xmmKMeansResults.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmKMeansResults.hpp; path = xmm/src/models/kmeans/xmmKMeansResults.hpp; sourceTree = "<group>"; };
311BA2CD1EDC6ECE00244DAC /* xmmHierarchicalHmm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = xmmHierarchicalHmm.cpp; path = xmm/src/models/hmm/xmmHierarchicalHmm.cpp; sourceTree = "<group>"; };
311BA2CE1EDC6ECE00244DAC /* xmmHierarchicalHmm.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmHierarchicalHmm.hpp; path = xmm/src/models/hmm/xmmHierarchicalHmm.hpp; sourceTree = "<group>"; };
311BA2CF1EDC6ECE00244DAC /* xmmHmmParameters.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = xmmHmmParameters.cpp; path = xmm/src/models/hmm/xmmHmmParameters.cpp; sourceTree = "<group>"; };
311BA2D01EDC6ECE00244DAC /* xmmHmmParameters.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmHmmParameters.hpp; path = xmm/src/models/hmm/xmmHmmParameters.hpp; sourceTree = "<group>"; };
311BA2D11EDC6ECE00244DAC /* xmmHmmResults.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmHmmResults.hpp; path = xmm/src/models/hmm/xmmHmmResults.hpp; sourceTree = "<group>"; };
311BA2D21EDC6ECE00244DAC /* xmmHmmSingleClass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = xmmHmmSingleClass.cpp; path = xmm/src/models/hmm/xmmHmmSingleClass.cpp; sourceTree = "<group>"; };
311BA2D31EDC6ECE00244DAC /* xmmHmmSingleClass.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmHmmSingleClass.hpp; path = xmm/src/models/hmm/xmmHmmSingleClass.hpp; sourceTree = "<group>"; };
311BA2D71EDC6EDB00244DAC /* xmmGmm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = xmmGmm.cpp; path = xmm/src/models/gmm/xmmGmm.cpp; sourceTree = "<group>"; };
311BA2D81EDC6EDB00244DAC /* xmmGmm.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmGmm.hpp; path = xmm/src/models/gmm/xmmGmm.hpp; sourceTree = "<group>"; };
311BA2D91EDC6EDB00244DAC /* xmmGmmParameters.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = xmmGmmParameters.cpp; path = xmm/src/models/gmm/xmmGmmParameters.cpp; sourceTree = "<group>"; };
311BA2DA1EDC6EDB00244DAC /* xmmGmmParameters.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmGmmParameters.hpp; path = xmm/src/models/gmm/xmmGmmParameters.hpp; sourceTree = "<group>"; };
311BA2DB1EDC6EDB00244DAC /* xmmGmmSingleClass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = xmmGmmSingleClass.cpp; path = xmm/src/models/gmm/xmmGmmSingleClass.cpp; sourceTree = "<group>"; };
311BA2DC1EDC6EDB00244DAC /* xmmGmmSingleClass.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmGmmSingleClass.hpp; path = xmm/src/models/gmm/xmmGmmSingleClass.hpp; sourceTree = "<group>"; };
311BA2E01EDC6EEA00244DAC /* xmmPhrase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = xmmPhrase.cpp; path = xmm/src/core/trainingset/xmmPhrase.cpp; sourceTree = "<group>"; };
311BA2E11EDC6EEA00244DAC /* xmmPhrase.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmPhrase.hpp; path = xmm/src/core/trainingset/xmmPhrase.hpp; sourceTree = "<group>"; };
311BA2E21EDC6EEA00244DAC /* xmmTrainingSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = xmmTrainingSet.cpp; path = xmm/src/core/trainingset/xmmTrainingSet.cpp; sourceTree = "<group>"; };
311BA2E31EDC6EEA00244DAC /* xmmTrainingSet.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmTrainingSet.hpp; path = xmm/src/core/trainingset/xmmTrainingSet.hpp; sourceTree = "<group>"; };
311BA2E61EDC6EF800244DAC /* xmmModel.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmModel.hpp; path = xmm/src/core/model/xmmModel.hpp; sourceTree = "<group>"; };
311BA2E71EDC6EF800244DAC /* xmmModelConfiguration.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmModelConfiguration.hpp; path = xmm/src/core/model/xmmModelConfiguration.hpp; sourceTree = "<group>"; };
311BA2E81EDC6EF800244DAC /* xmmModelParameters.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmModelParameters.hpp; path = xmm/src/core/model/xmmModelParameters.hpp; sourceTree = "<group>"; };
311BA2E91EDC6EF800244DAC /* xmmModelResults.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmModelResults.hpp; path = xmm/src/core/model/xmmModelResults.hpp; sourceTree = "<group>"; };
311BA2EA1EDC6EF800244DAC /* xmmModelSharedParameters.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = xmmModelSharedParameters.cpp; path = xmm/src/core/model/xmmModelSharedParameters.cpp; sourceTree = "<group>"; };
311BA2EB1EDC6EF800244DAC /* xmmModelSharedParameters.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmModelSharedParameters.hpp; path = xmm/src/core/model/xmmModelSharedParameters.hpp; sourceTree = "<group>"; };
311BA2EC1EDC6EF800244DAC /* xmmModelSingleClass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = xmmModelSingleClass.cpp; path = xmm/src/core/model/xmmModelSingleClass.cpp; sourceTree = "<group>"; };
311BA2ED1EDC6EF800244DAC /* xmmModelSingleClass.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmModelSingleClass.hpp; path = xmm/src/core/model/xmmModelSingleClass.hpp; sourceTree = "<group>"; };
311BA2F01EDC6F0400244DAC /* xmmGaussianDistribution.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = xmmGaussianDistribution.cpp; path = xmm/src/core/distributions/xmmGaussianDistribution.cpp; sourceTree = "<group>"; };
311BA2F11EDC6F0400244DAC /* xmmGaussianDistribution.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmGaussianDistribution.hpp; path = xmm/src/core/distributions/xmmGaussianDistribution.hpp; sourceTree = "<group>"; };
311BA2F31EDC6F0F00244DAC /* xmmAttribute.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = xmmAttribute.cpp; path = xmm/src/core/common/xmmAttribute.cpp; sourceTree = "<group>"; };
311BA2F41EDC6F0F00244DAC /* xmmAttribute.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmAttribute.hpp; path = xmm/src/core/common/xmmAttribute.hpp; sourceTree = "<group>"; };
311BA2F51EDC6F0F00244DAC /* xmmCircularbuffer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmCircularbuffer.hpp; path = xmm/src/core/common/xmmCircularbuffer.hpp; sourceTree = "<group>"; };
311BA2F61EDC6F0F00244DAC /* xmmEvents.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = xmmEvents.hpp; path = xmm/src/core/common/xmmEvents.hpp; sourceTree = "<group>"; };
311BA2F71EDC6F0F00244DAC /* xmmJson.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = xmmJson.cpp; path = xmm/src/core/common/xmmJson.cpp; sourceTree = "<group>"; };
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>"; };
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>"; };
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>"; };
BE2C5A0E1ED8450C00E9FAFA /* fft.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fft.cpp; sourceTree = "<group>"; };
BE2C5A0F1ED8450C00E9FAFA /* fft.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fft.h; sourceTree = "<group>"; };
BE2C5A101ED8450C00E9FAFA /* maxiAtoms.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = maxiAtoms.cpp; sourceTree = "<group>"; };
BE2C5A111ED8450C00E9FAFA /* maxiAtoms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = maxiAtoms.h; sourceTree = "<group>"; };
BE2C5A121ED8450C00E9FAFA /* maxiBark.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = maxiBark.cpp; sourceTree = "<group>"; };
BE2C5A131ED8450C00E9FAFA /* maxiBark.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = maxiBark.h; sourceTree = "<group>"; };
BE2C5A141ED8450C00E9FAFA /* maxiFFT.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = maxiFFT.cpp; sourceTree = "<group>"; };
BE2C5A151ED8450C00E9FAFA /* maxiFFT.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = maxiFFT.h; sourceTree = "<group>"; };
BE2C5A161ED8450C00E9FAFA /* maxiGrains.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = maxiGrains.cpp; sourceTree = "<group>"; };
BE2C5A171ED8450C00E9FAFA /* maxiGrains.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = maxiGrains.h; sourceTree = "<group>"; };
BE2C5A181ED8450C00E9FAFA /* maxim.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = maxim.h; sourceTree = "<group>"; };
BE2C5A191ED8450C00E9FAFA /* maxiMFCC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = maxiMFCC.cpp; sourceTree = "<group>"; };
BE2C5A1A1ED8450C00E9FAFA /* maxiMFCC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = maxiMFCC.h; sourceTree = "<group>"; };
BE2C5A1D1ED8450C00E9FAFA /* sineTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sineTable.h; sourceTree = "<group>"; };
BE2C5A1E1ED8450C00E9FAFA /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = "<group>"; };
BE2C5A1F1ED8450C00E9FAFA /* maximilian.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = maximilian.cpp; sourceTree = "<group>"; };
BE2C5A201ED8450C00E9FAFA /* maximilian.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = maximilian.h; sourceTree = "<group>"; };
BE2C5BB41ED8450D00E9FAFA /* player.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = player.cpp; sourceTree = "<group>"; };
BE2C5BB51ED8450D00E9FAFA /* player.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = player.h; sourceTree = "<group>"; };
BE2C5BB61ED8450D00E9FAFA /* portaudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = portaudio.h; sourceTree = "<group>"; };
BE2C5BB71ED8450D00E9FAFA /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
BE2C5BB81ED8450D00E9FAFA /* RtAudio.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RtAudio.cpp; sourceTree = "<group>"; };
BE2C5BB91ED8450D00E9FAFA /* RtAudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RtAudio.h; sourceTree = "<group>"; };
BE2C5BBA1ED8450D00E9FAFA /* RtError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RtError.h; sourceTree = "<group>"; };
BE2C5BBB1ED8450D00E9FAFA /* snare.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = snare.wav; sourceTree = "<group>"; };
BE2C5BBC1ED8450D00E9FAFA /* stb_vorbis.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stb_vorbis.c; sourceTree = "<group>"; };
BE2C5BBD1ED8450D00E9FAFA /* stb_vorbis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stb_vorbis.h; sourceTree = "<group>"; };
BE2C5DE91ED8450E00E9FAFA /* baseModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = baseModel.h; sourceTree = "<group>"; };
BE2C5DEA1ED8450E00E9FAFA /* classification.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = classification.cpp; sourceTree = "<group>"; };
BE2C5DEB1ED8450E00E9FAFA /* classification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = classification.h; sourceTree = "<group>"; };
BE2C5DF31ED8450E00E9FAFA /* knnClassification.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = knnClassification.cpp; sourceTree = "<group>"; };
BE2C5DF41ED8450E00E9FAFA /* knnClassification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = knnClassification.h; sourceTree = "<group>"; };
BE2C5DF51ED8450E00E9FAFA /* modelSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = modelSet.cpp; sourceTree = "<group>"; };
BE2C5DF61ED8450E00E9FAFA /* modelSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = modelSet.h; sourceTree = "<group>"; };
BE2C5DF71ED8450E00E9FAFA /* neuralNetwork.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = neuralNetwork.cpp; sourceTree = "<group>"; };
BE2C5DF81ED8450E00E9FAFA /* neuralNetwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = neuralNetwork.h; sourceTree = "<group>"; };
BE2C5DF91ED8450E00E9FAFA /* regression.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = regression.cpp; sourceTree = "<group>"; };
BE2C5DFA1ED8450E00E9FAFA /* regression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = regression.h; sourceTree = "<group>"; };
BE2C5DFB1ED8450E00E9FAFA /* trainingExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = trainingExample.h; sourceTree = "<group>"; };
BE2C5E061ED8450E00E9FAFA /* json-forwards.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "json-forwards.h"; sourceTree = "<group>"; };
BE2C5E071ED8450E00E9FAFA /* json.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = json.h; sourceTree = "<group>"; };
BE2C5E081ED8450E00E9FAFA /* jsoncpp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = jsoncpp.cpp; sourceTree = "<group>"; };
BE2C5EBC1ED8459300E9FAFA /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = "<group>"; };
BE2C5EBE1ED8459300E9FAFA /* machineLearning.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = machineLearning.cpp; sourceTree = "<group>"; };
BE2C5EBF1ED8459300E9FAFA /* machineLearning.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = machineLearning.h; sourceTree = "<group>"; };
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>"; };
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_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>"; };
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>"; };
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 */
0BFFEF181E56082700EF19A5 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
0BFFEF231E56083C00EF19A5 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
0BFFEF2E1E56085C00EF19A5 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
0BFFEF3C1E5608C000EF19A5 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
BEA7B7201EDD96AC0003E84B /* Accelerate.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
312C61CE1FE95A680085E283 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
31D7B7271E6B048100917757 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
311BA3211EDC7B2400244DAC /* Accelerate.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
0BE2E72E1EE56E6D00722712 /* GVF */ = {
isa = PBXGroup;
children = (
0BE2E72F1EE56E6D00722712 /* GVF.cpp */,
0BE2E7301EE56E6D00722712 /* GVF.h */,
0BE2E7311EE56E6D00722712 /* GVFGesture.h */,
0BE2E7321EE56E6D00722712 /* GVFUtils.h */,
0BE2E7331EE56E6D00722712 /* LICENSE */,
);
path = GVF;
sourceTree = "<group>";
};
0BE2E7341EE56F4F00722712 /* rapidGVF */ = {
isa = PBXGroup;
children = (
0BE2E7351EE56F4F00722712 /* rapidGVF.cpp */,
0BE2E7361EE56F4F00722712 /* rapidGVF.h */,
);
path = rapidGVF;
sourceTree = "<group>";
};
311BA2A51EDC698D00244DAC /* xmm */ = {
isa = PBXGroup;
children = (
311BA2FC1EDC6F1900244DAC /* xmm.h */,
311BA2BE1EDC6E7100244DAC /* models */,
311BA2BD1EDC6E6700244DAC /* core */,
);
name = xmm;
sourceTree = "<group>";
};
311BA2A81EDC6ACC00244DAC /* rapidPiPoTools */ = {
isa = PBXGroup;
children = (
311BA2BC1EDC6DB900244DAC /* rapidPiPoTools.h */,
311BA2AC1EDC6AED00244DAC /* rapidPiPoHost.cpp */,
311BA2AD1EDC6AED00244DAC /* rapidPiPoHost.h */,
);
name = rapidPiPoTools;
sourceTree = "<group>";
};
311BA2BD1EDC6E6700244DAC /* core */ = {
isa = PBXGroup;
children = (
311BA2C21EDC6E9C00244DAC /* trainingset */,
311BA2C11EDC6E9700244DAC /* model */,
311BA2C01EDC6E8F00244DAC /* distributions */,
311BA2BF1EDC6E8B00244DAC /* common */,
);
name = core;
sourceTree = "<group>";
};
311BA2BE1EDC6E7100244DAC /* models */ = {
isa = PBXGroup;
children = (
311BA2C51EDC6EB100244DAC /* kmeans */,
311BA2C41EDC6EAC00244DAC /* hmm */,
311BA2C31EDC6EA300244DAC /* gmm */,
);
name = models;
sourceTree = "<group>";
};
311BA2BF1EDC6E8B00244DAC /* common */ = {
isa = PBXGroup;
children = (
311BA2F31EDC6F0F00244DAC /* xmmAttribute.cpp */,
311BA2F41EDC6F0F00244DAC /* xmmAttribute.hpp */,
311BA2F51EDC6F0F00244DAC /* xmmCircularbuffer.hpp */,
311BA2F61EDC6F0F00244DAC /* xmmEvents.hpp */,
311BA2F71EDC6F0F00244DAC /* xmmJson.cpp */,
311BA2F81EDC6F0F00244DAC /* xmmJson.hpp */,
311BA2F91EDC6F0F00244DAC /* xmmMatrix.hpp */,
);
name = common;
sourceTree = "<group>";
};
311BA2C01EDC6E8F00244DAC /* distributions */ = {
isa = PBXGroup;
children = (
311BA2F01EDC6F0400244DAC /* xmmGaussianDistribution.cpp */,
311BA2F11EDC6F0400244DAC /* xmmGaussianDistribution.hpp */,
);
name = distributions;
sourceTree = "<group>";
};
311BA2C11EDC6E9700244DAC /* model */ = {
isa = PBXGroup;
children = (
311BA2E61EDC6EF800244DAC /* xmmModel.hpp */,
311BA2E71EDC6EF800244DAC /* xmmModelConfiguration.hpp */,
311BA2E81EDC6EF800244DAC /* xmmModelParameters.hpp */,
311BA2E91EDC6EF800244DAC /* xmmModelResults.hpp */,
311BA2EA1EDC6EF800244DAC /* xmmModelSharedParameters.cpp */,
311BA2EB1EDC6EF800244DAC /* xmmModelSharedParameters.hpp */,
311BA2EC1EDC6EF800244DAC /* xmmModelSingleClass.cpp */,
311BA2ED1EDC6EF800244DAC /* xmmModelSingleClass.hpp */,
);
name = model;
sourceTree = "<group>";
};
311BA2C21EDC6E9C00244DAC /* trainingset */ = {
isa = PBXGroup;
children = (
311BA2E01EDC6EEA00244DAC /* xmmPhrase.cpp */,
311BA2E11EDC6EEA00244DAC /* xmmPhrase.hpp */,
311BA2E21EDC6EEA00244DAC /* xmmTrainingSet.cpp */,
311BA2E31EDC6EEA00244DAC /* xmmTrainingSet.hpp */,
);
name = trainingset;
sourceTree = "<group>";
};
311BA2C31EDC6EA300244DAC /* gmm */ = {
isa = PBXGroup;
children = (
311BA2D71EDC6EDB00244DAC /* xmmGmm.cpp */,
311BA2D81EDC6EDB00244DAC /* xmmGmm.hpp */,
311BA2D91EDC6EDB00244DAC /* xmmGmmParameters.cpp */,
311BA2DA1EDC6EDB00244DAC /* xmmGmmParameters.hpp */,
311BA2DB1EDC6EDB00244DAC /* xmmGmmSingleClass.cpp */,
311BA2DC1EDC6EDB00244DAC /* xmmGmmSingleClass.hpp */,
);
name = gmm;
sourceTree = "<group>";
};
311BA2C41EDC6EAC00244DAC /* hmm */ = {
isa = PBXGroup;
children = (
311BA2CD1EDC6ECE00244DAC /* xmmHierarchicalHmm.cpp */,
311BA2CE1EDC6ECE00244DAC /* xmmHierarchicalHmm.hpp */,
311BA2CF1EDC6ECE00244DAC /* xmmHmmParameters.cpp */,
311BA2D01EDC6ECE00244DAC /* xmmHmmParameters.hpp */,
311BA2D11EDC6ECE00244DAC /* xmmHmmResults.hpp */,
311BA2D21EDC6ECE00244DAC /* xmmHmmSingleClass.cpp */,
311BA2D31EDC6ECE00244DAC /* xmmHmmSingleClass.hpp */,
);
name = hmm;
sourceTree = "<group>";
};
311BA2C51EDC6EB100244DAC /* kmeans */ = {
isa = PBXGroup;
children = (
311BA2C61EDC6EC100244DAC /* xmmKMeans.cpp */,
311BA2C71EDC6EC100244DAC /* xmmKMeans.hpp */,
311BA2C81EDC6EC100244DAC /* xmmKMeansParameters.cpp */,
311BA2C91EDC6EC100244DAC /* xmmKMeansParameters.hpp */,
311BA2CA1EDC6EC100244DAC /* xmmKMeansResults.hpp */,
);
name = kmeans;
sourceTree = "<group>";
};
311BA31F1EDC7B2400244DAC /* Frameworks */ = {
isa = PBXGroup;
children = (
311BA3201EDC7B2400244DAC /* Accelerate.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
311BA3221EDC7B9A00244DAC /* data */ = {
isa = PBXGroup;
children = (
318E7A361FD748D900FEEB7E /* pipo.json */,
311BA3231EDC7BA400244DAC /* DnB-loop-175BPM.wav */,
);
name = data;
sourceTree = "<group>";
};
319C93E91FC49B270055BE40 /* pipo */ = {
isa = PBXGroup;
children = (
319C93EB1FC49B350055BE40 /* modules */,
319C93EA1FC49B300055BE40 /* sdk */,
);
name = pipo;
sourceTree = "<group>";
};
319C93EA1FC49B300055BE40 /* sdk */ = {
isa = PBXGroup;
children = (
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 = 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 */,
BE2C5A091ED8450C00E9FAFA /* Maximilian */,
BE2C5BBE1ED8450D00E9FAFA /* RapidLib */,
BE2C5E041ED8450E00E9FAFA /* third_party */,
);
name = dependencies;
path = ../dependencies;
sourceTree = "<group>";
};
BE2C5A091ED8450C00E9FAFA /* Maximilian */ = {
isa = PBXGroup;
children = (
BE2C5A0A1ED8450C00E9FAFA /* .gitignore */,
BE2C5A0B1ED8450C00E9FAFA /* beat2.wav */,
BE2C5A0C1ED8450C00E9FAFA /* blip.wav */,
BE2C5A0D1ED8450C00E9FAFA /* libs */,
BE2C5A1E1ED8450C00E9FAFA /* main.cpp */,
BE2C5A1F1ED8450C00E9FAFA /* maximilian.cpp */,
BE2C5A201ED8450C00E9FAFA /* maximilian.h */,
BE2C5BB41ED8450D00E9FAFA /* player.cpp */,
BE2C5BB51ED8450D00E9FAFA /* player.h */,
BE2C5BB61ED8450D00E9FAFA /* portaudio.h */,
BE2C5BB71ED8450D00E9FAFA /* README */,
BE2C5BB81ED8450D00E9FAFA /* RtAudio.cpp */,
BE2C5BB91ED8450D00E9FAFA /* RtAudio.h */,
BE2C5BBA1ED8450D00E9FAFA /* RtError.h */,
BE2C5BBB1ED8450D00E9FAFA /* snare.wav */,
BE2C5BBC1ED8450D00E9FAFA /* stb_vorbis.c */,
BE2C5BBD1ED8450D00E9FAFA /* stb_vorbis.h */,
);
path = Maximilian;
sourceTree = "<group>";
};
BE2C5A0D1ED8450C00E9FAFA /* libs */ = {
isa = PBXGroup;
children = (
BE2C5A0E1ED8450C00E9FAFA /* fft.cpp */,
BE2C5A0F1ED8450C00E9FAFA /* fft.h */,
BE2C5A101ED8450C00E9FAFA /* maxiAtoms.cpp */,
BE2C5A111ED8450C00E9FAFA /* maxiAtoms.h */,
BE2C5A121ED8450C00E9FAFA /* maxiBark.cpp */,
BE2C5A131ED8450C00E9FAFA /* maxiBark.h */,
BE2C5A141ED8450C00E9FAFA /* maxiFFT.cpp */,
BE2C5A151ED8450C00E9FAFA /* maxiFFT.h */,
BE2C5A161ED8450C00E9FAFA /* maxiGrains.cpp */,
BE2C5A171ED8450C00E9FAFA /* maxiGrains.h */,
BE2C5A181ED8450C00E9FAFA /* maxim.h */,
BE2C5A191ED8450C00E9FAFA /* maxiMFCC.cpp */,
BE2C5A1A1ED8450C00E9FAFA /* maxiMFCC.h */,
BE2C5A1D1ED8450C00E9FAFA /* sineTable.h */,
);
path = libs;
sourceTree = "<group>";
};
BE2C5BBE1ED8450D00E9FAFA /* RapidLib */ = {
isa = PBXGroup;
children = (
BE2C5DE81ED8450E00E9FAFA /* src */,
);
path = RapidLib;
sourceTree = "<group>";
};
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 */,
BE2C5DEA1ED8450E00E9FAFA /* classification.cpp */,
BE2C5DEB1ED8450E00E9FAFA /* classification.h */,
BE2C5DF31ED8450E00E9FAFA /* knnClassification.cpp */,
BE2C5DF41ED8450E00E9FAFA /* knnClassification.h */,
BE2C5DF51ED8450E00E9FAFA /* modelSet.cpp */,
BE2C5DF61ED8450E00E9FAFA /* modelSet.h */,
BE2C5DF71ED8450E00E9FAFA /* neuralNetwork.cpp */,
BE2C5DF81ED8450E00E9FAFA /* neuralNetwork.h */,
BE2C5DF91ED8450E00E9FAFA /* regression.cpp */,
BE2C5DFA1ED8450E00E9FAFA /* regression.h */,
BE2C5DFB1ED8450E00E9FAFA /* trainingExample.h */,
);
path = src;
sourceTree = "<group>";
};
BE2C5E041ED8450E00E9FAFA /* third_party */ = {
isa = PBXGroup;
children = (
BE2C5F0E1EDD74BC00E9FAFA /* libsvm */,
BE2C5ED91ED8471F00E9FAFA /* catch */,
BE2C5E051ED8450E00E9FAFA /* json */,
BE2C5E081ED8450E00E9FAFA /* jsoncpp.cpp */,
);
path = third_party;
sourceTree = "<group>";
};
BE2C5E051ED8450E00E9FAFA /* json */ = {
isa = PBXGroup;
children = (
BE2C5E061ED8450E00E9FAFA /* json-forwards.h */,
BE2C5E071ED8450E00E9FAFA /* json.h */,
);
path = json;
sourceTree = "<group>";
};
BE2C5EBB1ED8459300E9FAFA /* src */ = {
isa = PBXGroup;
children = (
BE2C5EBC1ED8459300E9FAFA /* LICENSE */,
BE2C5EBD1ED8459300E9FAFA /* machineLearning */,
BE2C5EC21ED8459300E9FAFA /* rapidmix.h */,
BE2C5EC31ED8459300E9FAFA /* signalProcessing */,
);
name = src;
path = ../src;
sourceTree = "<group>";
};
BE2C5EBD1ED8459300E9FAFA /* machineLearning */ = {
isa = PBXGroup;
children = (
31A8F1931F4ECD0500CA8CEC /* rapidXMM */,
0BE2E7341EE56F4F00722712 /* rapidGVF */,
BE2C5EBE1ED8459300E9FAFA /* machineLearning.cpp */,
BE2C5EBF1ED8459300E9FAFA /* machineLearning.h */,
BE2C5EC01ED8459300E9FAFA /* trainingData.cpp */,
BE2C5EC11ED8459300E9FAFA /* trainingData.h */,
);
path = machineLearning;
sourceTree = "<group>";
};
BE2C5EC31ED8459300E9FAFA /* signalProcessing */ = {
isa = PBXGroup;
children = (
311BA2A81EDC6ACC00244DAC /* rapidPiPoTools */,
BE2C5EC71ED8459300E9FAFA /* signalProcessing.h */,
);
path = signalProcessing;
sourceTree = "<group>";
};
BE2C5ED91ED8471F00E9FAFA /* catch */ = {
isa = PBXGroup;
children = (
BE2C5EDA1ED8471F00E9FAFA /* catch.hpp */,
BE2C5EDB1ED8471F00E9FAFA /* LICENSE_1_0.txt */,
);
path = catch;
sourceTree = "<group>";
};
BE2C5EDC1ED8480D00E9FAFA /* tests */ = {
isa = PBXGroup;
children = (
311BA3221EDC7B9A00244DAC /* data */,
BE2C5EDD1ED8480D00E9FAFA /* src */,
);
name = tests;
sourceTree = "<group>";
};
BE2C5EDD1ED8480D00E9FAFA /* src */ = {
isa = PBXGroup;
children = (
BE2C5EE01ED8480D00E9FAFA /* test_rapidmix-api.cpp */,
BE2C5EDE1ED8480D00E9FAFA /* test_gvf.cpp */,
BE2C5EDF1ED8480D00E9FAFA /* test_RapidLib.cpp */,
BE2C5EE11ED8480D00E9FAFA /* test_rapidPiPo.cpp */,
BE2C5EE21ED8480D00E9FAFA /* test_rapidXMM.cpp */,
BE2C5EE31ED8480D00E9FAFA /* test_signalProcessing.cpp */,
312C61B71FE958CB0085E283 /* test_trainingData.cpp */,
);
path = src;
sourceTree = "<group>";
};
BE2C5F0E1EDD74BC00E9FAFA /* libsvm */ = {
isa = PBXGroup;
children = (
BE2C5F0F1EDD74BC00E9FAFA /* libsvm.cpp */,
BE2C5F101EDD74BC00E9FAFA /* libsvm.h */,
BE2C5F111EDD74BC00E9FAFA /* LICENSE */,
);
path = libsvm;
sourceTree = "<group>";
};
BE325F281DB50BE100F199A8 = {
isa = PBXGroup;
children = (
BE2C5EDC1ED8480D00E9FAFA /* tests */,
BE2C5EBB1ED8459300E9FAFA /* src */,
BE2C5A081ED8450C00E9FAFA /* dependencies */,
BE325F321DB50BE100F199A8 /* Products */,
311BA31F1EDC7B2400244DAC /* Frameworks */,
);
sourceTree = "<group>";
};
BE325F321DB50BE100F199A8 /* Products */ = {
isa = PBXGroup;
children = (
0BFFEF1B1E56082700EF19A5 /* test_GVF */,
0BFFEF261E56083C00EF19A5 /* test_RapidLib */,
0BFFEF311E56085C00EF19A5 /* test_rapidXMM */,
0BFFEF3F1E5608C000EF19A5 /* test_signalProcessing */,
31D7B72C1E6B048100917757 /* test_rapidPiPo */,
312C61D31FE95A680085E283 /* test_trainingData */,
);
name = Products;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
0BFFEF1A1E56082700EF19A5 /* test_GVF */ = {
isa = PBXNativeTarget;
buildConfigurationList = 0BFFEF1F1E56082700EF19A5 /* Build configuration list for PBXNativeTarget "test_GVF" */;
buildPhases = (
0BFFEF171E56082700EF19A5 /* Sources */,
0BFFEF181E56082700EF19A5 /* Frameworks */,
0BFFEF191E56082700EF19A5 /* CopyFiles */,
);
buildRules = (
);
dependencies = (
);
name = test_GVF;
productName = test_GVF;
productReference = 0BFFEF1B1E56082700EF19A5 /* test_GVF */;
productType = "com.apple.product-type.tool";
};
0BFFEF251E56083C00EF19A5 /* test_RapidLib */ = {
isa = PBXNativeTarget;
buildConfigurationList = 0BFFEF2A1E56083D00EF19A5 /* Build configuration list for PBXNativeTarget "test_RapidLib" */;
buildPhases = (
0BFFEF221E56083C00EF19A5 /* Sources */,
0BFFEF231E56083C00EF19A5 /* Frameworks */,
0BFFEF241E56083C00EF19A5 /* CopyFiles */,
);
buildRules = (
);
dependencies = (
);
name = test_RapidLib;
productName = test_RapidLib;
productReference = 0BFFEF261E56083C00EF19A5 /* test_RapidLib */;
productType = "com.apple.product-type.tool";
};
0BFFEF301E56085C00EF19A5 /* test_rapidXMM */ = {
isa = PBXNativeTarget;
buildConfigurationList = 0BFFEF351E56085C00EF19A5 /* Build configuration list for PBXNativeTarget "test_rapidXMM" */;
buildPhases = (
0BFFEF2D1E56085C00EF19A5 /* Sources */,
0BFFEF2E1E56085C00EF19A5 /* Frameworks */,
0BFFEF2F1E56085C00EF19A5 /* CopyFiles */,
);
buildRules = (
);
dependencies = (
);
name = test_rapidXMM;
productName = test_XMM;
productReference = 0BFFEF311E56085C00EF19A5 /* test_rapidXMM */;
productType = "com.apple.product-type.tool";
};
0BFFEF3E1E5608C000EF19A5 /* test_signalProcessing */ = {
isa = PBXNativeTarget;
buildConfigurationList = 0BFFEF431E5608C000EF19A5 /* Build configuration list for PBXNativeTarget "test_signalProcessing" */;
buildPhases = (
0BFFEF3B1E5608C000EF19A5 /* Sources */,
0BFFEF3C1E5608C000EF19A5 /* Frameworks */,
0BFFEF3D1E5608C000EF19A5 /* CopyFiles */,
);
buildRules = (
);
dependencies = (
);
name = test_signalProcessing;
productName = test_FeatureExtraction;
productReference = 0BFFEF3F1E5608C000EF19A5 /* test_signalProcessing */;
productType = "com.apple.product-type.tool";
};
312C61B91FE95A680085E283 /* test_trainingData */ = {
isa = PBXNativeTarget;
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 */,
31D7B7281E6B048100917757 /* CopyFiles */,
);
buildRules = (
);
dependencies = (
);
name = test_rapidPiPo;
productName = test_XMM;
productReference = 31D7B72C1E6B048100917757 /* test_rapidPiPo */;
productType = "com.apple.product-type.tool";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
BE325F291DB50BE100F199A8 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0910;
ORGANIZATIONNAME = Goldsmiths;
TargetAttributes = {
0BFFEF1A1E56082700EF19A5 = {
CreatedOnToolsVersion = 7.3.1;
};
0BFFEF251E56083C00EF19A5 = {
CreatedOnToolsVersion = 7.3.1;
};
0BFFEF301E56085C00EF19A5 = {
CreatedOnToolsVersion = 7.3.1;
};
0BFFEF3E1E5608C000EF19A5 = {
CreatedOnToolsVersion = 7.3.1;
};
};
};
buildConfigurationList = BE325F2C1DB50BE100F199A8 /* Build configuration list for PBXProject "test_project" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
);
mainGroup = BE325F281DB50BE100F199A8;
productRefGroup = BE325F321DB50BE100F199A8 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
0BFFEF1A1E56082700EF19A5 /* test_GVF */,
0BFFEF251E56083C00EF19A5 /* test_RapidLib */,
31D7B7121E6B048100917757 /* test_rapidPiPo */,
0BFFEF301E56085C00EF19A5 /* test_rapidXMM */,
0BFFEF3E1E5608C000EF19A5 /* test_signalProcessing */,
312C61B91FE95A680085E283 /* test_trainingData */,
);
};
/* End PBXProject section */
/* Begin PBXSourcesBuildPhase section */
0BFFEF171E56082700EF19A5 /* Sources */ = {
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;
};
0BFFEF221E56083C00EF19A5 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
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 */,
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;
};
0BFFEF2D1E56085C00EF19A5 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
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 */,
311BA3001EDC6FD000244DAC /* xmmHierarchicalHmm.cpp in Sources */,
311BA3011EDC6FD000244DAC /* xmmHmmParameters.cpp in Sources */,
311BA3021EDC6FD000244DAC /* xmmHmmSingleClass.cpp in Sources */,
311BA3031EDC6FD000244DAC /* xmmGmm.cpp in Sources */,
311BA3041EDC6FD000244DAC /* xmmGmmParameters.cpp in Sources */,
311BA3051EDC6FD000244DAC /* xmmGmmSingleClass.cpp in Sources */,
311BA3061EDC6FD000244DAC /* xmmPhrase.cpp in Sources */,
311BA3071EDC6FD000244DAC /* xmmTrainingSet.cpp in Sources */,
311BA3081EDC6FD000244DAC /* xmmModelSharedParameters.cpp in Sources */,
311BA3091EDC6FD000244DAC /* xmmModelSingleClass.cpp in Sources */,
311BA30A1EDC6FD000244DAC /* xmmGaussianDistribution.cpp in Sources */,
311BA30B1EDC6FD000244DAC /* xmmAttribute.cpp in Sources */,
311BA30C1EDC6FD000244DAC /* xmmJson.cpp in Sources */,
311BA30D1EDC709900244DAC /* jsoncpp.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
0BFFEF3B1E5608C000EF19A5 /* Sources */ = {
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;
};
31D7B7131E6B048100917757 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
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 */,
311BA31C1EDC7ADE00244DAC /* maxiFFT.cpp in Sources */,
311BA31D1EDC7ADE00244DAC /* maxiMFCC.cpp in Sources */,
311BA31E1EDC7ADE00244DAC /* maximilian.cpp in Sources */,
311BA3251EDCE80B00244DAC /* jsoncpp.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
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;
};
name = Debug;
};
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;
};
name = Release;
};
0BFFEF2B1E56083D00EF19A5 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
GCC_C_LANGUAGE_STANDARD = c11;
MACOSX_DEPLOYMENT_TARGET = 10.11;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
0BFFEF2C1E56083D00EF19A5 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
GCC_C_LANGUAGE_STANDARD = c11;
MACOSX_DEPLOYMENT_TARGET = 10.11;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
0BFFEF361E56085C00EF19A5 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
MACOSX_DEPLOYMENT_TARGET = 10.11;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
0BFFEF371E56085C00EF19A5 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
MACOSX_DEPLOYMENT_TARGET = 10.11;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
0BFFEF441E5608C000EF19A5 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
MACOSX_DEPLOYMENT_TARGET = 10.11;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
0BFFEF451E5608C000EF19A5 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
MACOSX_DEPLOYMENT_TARGET = 10.11;
PRODUCT_NAME = "$(TARGET_NAME)";
};
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 = {
MACOSX_DEPLOYMENT_TARGET = 10.11;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
31D7B72B1E6B048100917757 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
MACOSX_DEPLOYMENT_TARGET = 10.11;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
BE325F361DB50BE100F199A8 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
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 = "-";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
};
name = Debug;
};
BE325F371DB50BE100F199A8 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
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 = "-";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_ENABLE_DEBUG_INFO = NO;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
0BFFEF1F1E56082700EF19A5 /* Build configuration list for PBXNativeTarget "test_GVF" */ = {
isa = XCConfigurationList;
buildConfigurations = (
0BFFEF201E56082700EF19A5 /* Debug */,
0BFFEF211E56082700EF19A5 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
0BFFEF2A1E56083D00EF19A5 /* Build configuration list for PBXNativeTarget "test_RapidLib" */ = {
isa = XCConfigurationList;
buildConfigurations = (
0BFFEF2B1E56083D00EF19A5 /* Debug */,
0BFFEF2C1E56083D00EF19A5 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
0BFFEF351E56085C00EF19A5 /* Build configuration list for PBXNativeTarget "test_rapidXMM" */ = {
isa = XCConfigurationList;
buildConfigurations = (
0BFFEF361E56085C00EF19A5 /* Debug */,
0BFFEF371E56085C00EF19A5 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
0BFFEF431E5608C000EF19A5 /* Build configuration list for PBXNativeTarget "test_signalProcessing" */ = {
isa = XCConfigurationList;
buildConfigurations = (
0BFFEF441E5608C000EF19A5 /* Debug */,
0BFFEF451E5608C000EF19A5 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
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 */,
31D7B72B1E6B048100917757 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
BE325F2C1DB50BE100F199A8 /* Build configuration list for PBXProject "test_project" */ = {
isa = XCConfigurationList;
buildConfigurations = (
BE325F361DB50BE100F199A8 /* Debug */,
BE325F371DB50BE100F199A8 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = BE325F291DB50BE100F199A8 /* Project object */;
}