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