From 63971c9b5e2dcfa1b7e254cac9cac5629c776835 Mon Sep 17 00:00:00 2001 From: Tim Redfern Date: Thu, 23 May 2013 18:19:13 +0100 Subject: rearrange folders: working vamp host --- 02_rec/Makefile | 2 + 02_rec/addons.make | 5 ++ 02_rec/bin/data/verdana.ttf | Bin 0 -> 171792 bytes 02_rec/config.make | 56 ++++++++++++ 02_rec/src/main.cpp | 17 ++++ 02_rec/src/testApp.cpp | 199 +++++++++++++++++++++++++++++++++++++++++++ 02_rec/src/testApp.h | 42 +++++++++ 03_play/src/testApp.h | 2 + vamphost/src/ofxVamphost.cpp | 10 +++ vamphost/src/ofxVamphost.h | 5 ++ vamphost/src/testApp.cpp | 11 ++- vamphost/vamphost.cbp | 6 ++ 12 files changed, 352 insertions(+), 3 deletions(-) create mode 100755 02_rec/Makefile create mode 100644 02_rec/addons.make create mode 100644 02_rec/bin/data/verdana.ttf create mode 100755 02_rec/config.make create mode 100644 02_rec/src/main.cpp create mode 100644 02_rec/src/testApp.cpp create mode 100644 02_rec/src/testApp.h diff --git a/02_rec/Makefile b/02_rec/Makefile new file mode 100755 index 0000000..2d83a77 --- /dev/null +++ b/02_rec/Makefile @@ -0,0 +1,2 @@ +include config.make +include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/Makefile.examples diff --git a/02_rec/addons.make b/02_rec/addons.make new file mode 100644 index 0000000..0b4df47 --- /dev/null +++ b/02_rec/addons.make @@ -0,0 +1,5 @@ +ofxOpenNI +ofxFenster +ofxGui +ofxXmlSettings +ofxMayaCam diff --git a/02_rec/bin/data/verdana.ttf b/02_rec/bin/data/verdana.ttf new file mode 100644 index 0000000..8f25a64 Binary files /dev/null and b/02_rec/bin/data/verdana.ttf differ diff --git a/02_rec/config.make b/02_rec/config.make new file mode 100755 index 0000000..821a73a --- /dev/null +++ b/02_rec/config.make @@ -0,0 +1,56 @@ +# add custom variables to this file + +# OF_ROOT allows to move projects outside apps/* just set this variable to the +# absoulte path to the OF root folder + +OF_ROOT = ../../openFrameworks + + +# USER_CFLAGS allows to pass custom flags to the compiler +# for example search paths like: +# USER_CFLAGS = -I src/objects + +USER_CFLAGS = -I $(OF_ROOT)/addons/ofxOpenNI/include/openni -I $(OF_ROOT)/addons/ofxOpenNI/include/nite -I $(OF_ROOT)/addons/ofxOpenNI/src + + +# USER_LDFLAGS allows to pass custom flags to the linker +# for example libraries like: +# USER_LDFLAGS = libs/libawesomelib.a + +USER_LDFLAGS = -lOpenNI + + +EXCLUDE_FROM_SOURCE="bin,.xcodeproj,obj" + +# change this to add different compiler optimizations to your project + +USER_COMPILER_OPTIMIZATION = -march=native -mtune=native -Os + + +# android specific, in case you want to use different optimizations +USER_LIBS_ARM = +USER_LIBS_ARM7 = +USER_LIBS_NEON = + +# android optimizations + +ANDROID_COMPILER_OPTIMIZATION = -Os + +NDK_PLATFORM = android-8 + +# uncomment this for custom application name (if the folder name is different than the application name) +#APPNAME = folderName + +# uncomment this for custom package name, must be the same as the java package that contains OFActivity +#PKGNAME = cc.openframeworks.$(APPNAME) + + + + + +# linux arm flags + +LINUX_ARM7_COMPILER_OPTIMIZATIONS = -march=armv7-a -mtune=cortex-a8 -finline-functions -funroll-all-loops -O3 -funsafe-math-optimizations -mfpu=neon -ftree-vectorize -mfloat-abi=hard -mfpu=vfp + + + diff --git a/02_rec/src/main.cpp b/02_rec/src/main.cpp new file mode 100644 index 0000000..87dc35f --- /dev/null +++ b/02_rec/src/main.cpp @@ -0,0 +1,17 @@ + +#include "testApp.h" +#include "ofMain.h" +#include "ofAppGlutWindow.h" + +//======================================================================== +int main( ){ + + ofAppGlutWindow window; + ofSetupOpenGL(&window, 1600,900, OF_FULLSCREEN); // <-------- setup the GL context + + // this kicks off the running of my app + // can be OF_WINDOW or OF_FULLSCREEN + // pass in width and height too: + ofRunApp( new testApp()); + +} diff --git a/02_rec/src/testApp.cpp b/02_rec/src/testApp.cpp new file mode 100644 index 0000000..376d357 --- /dev/null +++ b/02_rec/src/testApp.cpp @@ -0,0 +1,199 @@ +#include "testApp.h" + +//-------------------------------------------------------------- +void testApp::setup() { + + ofSetLogLevel(OF_LOG_NOTICE); + + numDevices = openNIRecorders[0].getNumDevices(); + + for (int deviceID = 0; deviceID < numDevices; deviceID++){ + //openNIRecorders[deviceID].setLogLevel(OF_LOG_VERBOSE); + openNIRecorders[deviceID].setup(false); + openNIRecorders[deviceID].addDepthGenerator(); + openNIRecorders[deviceID].addImageGenerator(); + openNIRecorders[deviceID].setRegister(true); // this registers all the image pixels to the depth pixels + openNIRecorders[deviceID].setMirror(true); // flips the image and depth sensors + openNIRecorders[deviceID].start(); + + openNIPlayers[deviceID].setup(false); + openNIPlayers[deviceID].start(); + + filenames[deviceID]=""; + } + + isLive=true; + isRecording=false; + + verdana.loadFont(ofToDataPath("verdana.ttf"), 10); + + startSound.loadSound("tone1.wav"); + stopSound.loadSound("tone0.wav");; +} + + +string testApp::generateFileName(int cam) { + + string _root = "kinectRecord_"; + + string _timestamp = ofToString(ofGetDay()) + + ofToString(ofGetMonth()) + + ofToString(ofGetYear()) + + ofToString(ofGetHours()) + + ofToString(ofGetMinutes()) + + ofToString(ofGetSeconds()); + + string _filename = (_root + ofToString(cam)+"_"+_timestamp + ".oni"); + + return _filename; + +} + +//-------------------------------------------------------------- +void testApp::update(){ + for (int deviceID = 0; deviceID < numDevices; deviceID++){ + if (isLive) { + openNIRecorders[deviceID].update(); + if (isRecording){ + recorded++; + } + } + else { + openNIPlayers[deviceID].update(); + } + } +} + +//-------------------------------------------------------------- +void testApp::draw(){ + ofBackground(0, 0, 0); + ofSetColor(255, 255, 255); + + ofPushMatrix(); + + for (int deviceID = 0; deviceID < numDevices; deviceID++){ + ofTranslate(0, deviceID * 450); + if (isLive) { + //openNIRecorders[deviceID].drawDebug(); // draws all generators + openNIRecorders[deviceID].drawDepth(200, 0,600,450); + openNIRecorders[deviceID].drawImage(800, 0,600,450); + } + else { + //openNIPlayers[deviceID].drawDebug(); + openNIPlayers[deviceID].drawDepth(200, 0,600,450); + openNIPlayers[deviceID].drawImage(800, 0,600,450); + } + } + + ofPopMatrix(); + + ofSetColor(255, 255, 255); + string msg = "MILLIS: " + ofToString(ofGetElapsedTimeMillis()) + "\nFPS: " + ofToString(ofGetFrameRate()); + if (isRecording) { + msg +="\nrecorded "+ofToString(recorded); + } + if (!isLive) { + msg +="\n"+filenames[0]; + } + verdana.drawString(msg, 10, 10); +} + +//-------------------------------------------------------------- +void testApp::exit(){ + for (int deviceID = 0; deviceID < numDevices; deviceID++){ + openNIRecorders[deviceID].stop(); + openNIPlayers[deviceID].stop(); + } +} + +//-------------------------------------------------------------- +void testApp::keyPressed(int key){ + switch (key) { + case 's': + case 'S': + if (isRecording) { + for (int deviceID = 0; deviceID < numDevices; deviceID++){ + openNIRecorders[deviceID].stopRecording(); + stopSound.play(); + } + isRecording = false; + break; + } else { + for (int deviceID = 0; deviceID < numDevices; deviceID++){ + filenames[deviceID]=generateFileName(deviceID); + openNIRecorders[deviceID].startRecording(generateFileName(deviceID)); + startSound.play(); + } + isRecording = true; + recorded=0; + break; + } + break; + case 'p': + case 'P': + if (filenames[0] != "" && !isRecording && isLive) { + for (int deviceID = 0; deviceID < numDevices; deviceID++){ + openNIRecorders[deviceID].stopRecording(); + } + for (int deviceID = 0; deviceID < numDevices; deviceID++){ + openNIPlayers[deviceID].startPlayer(filenames[deviceID]); + } + isLive = false; + //whichUser=&playUser; + //whichImage=&playImage; + } else { + isLive = true; + //whichUser=&recordUser; + //whichImage=&recordImage; + } + break; + } + + /* why do this? + switch (key) { + case 't': + for (int deviceID = 0; deviceID < numDevices; deviceID++){ + openNIRecorders[deviceID].toggleRegister(); + } + break; + case 'x': + for (int deviceID = 0; deviceID < numDevices; deviceID++){ + openNIRecorders[deviceID].stop(); + } + break; + default: + break; + } + */ +} + +//-------------------------------------------------------------- +void testApp::keyReleased(int key){ + +} + +//-------------------------------------------------------------- +void testApp::mouseMoved(int x, int y ){ + +} + +//-------------------------------------------------------------- +void testApp::mouseDragged(int x, int y, int button){ + +} + +//-------------------------------------------------------------- +void testApp::mousePressed(int x, int y, int button){ + +} + +//-------------------------------------------------------------- +void testApp::mouseReleased(int x, int y, int button){ + +} + +//-------------------------------------------------------------- +void testApp::windowResized(int w, int h){ + +} + diff --git a/02_rec/src/testApp.h b/02_rec/src/testApp.h new file mode 100644 index 0000000..ffb92e9 --- /dev/null +++ b/02_rec/src/testApp.h @@ -0,0 +1,42 @@ +#ifndef _TEST_APP +#define _TEST_APP + +#include "ofxOpenNI.h" +#include "ofMain.h" + +#define MAX_DEVICES 2 + +class testApp : public ofBaseApp{ + +public: + void setup(); + void update(); + void draw(); + void exit(); + + void keyPressed (int key); + void keyReleased(int key); + void mouseMoved(int x, int y ); + void mouseDragged(int x, int y, int button); + void mousePressed(int x, int y, int button); + void mouseReleased(int x, int y, int button); + void windowResized(int w, int h); + string generateFileName(int cam); + + int numDevices; + ofxOpenNI openNIRecorders[MAX_DEVICES]; + ofxOpenNI openNIPlayers[MAX_DEVICES]; + string filenames[MAX_DEVICES]; + + bool isLive, isRecording; + + ofTrueTypeFont verdana; + + ofSoundPlayer startSound; + ofSoundPlayer stopSound; + + int recorded; + +}; + +#endif diff --git a/03_play/src/testApp.h b/03_play/src/testApp.h index b0ca2c3..db29f0c 100644 --- a/03_play/src/testApp.h +++ b/03_play/src/testApp.h @@ -33,6 +33,8 @@ public: vector > recs; ofxXmlSettings XML; + + vector > filenames; }; diff --git a/vamphost/src/ofxVamphost.cpp b/vamphost/src/ofxVamphost.cpp index 1ba2b4e..3844c60 100644 --- a/vamphost/src/ofxVamphost.cpp +++ b/vamphost/src/ofxVamphost.cpp @@ -127,6 +127,11 @@ int Vamphost::init(const string &soname,const string &id,const int &_channels,co featureNo=1; + + avg=0.0f; + num=0; + numFeat=0; + return blockSize; } void Vamphost::process_frame(float *data,int samples_in_frame){ @@ -145,6 +150,8 @@ void Vamphost::process_frame(float *data,int samples_in_frame){ while(sampleprocess(plugbuf, rt); + if (feat[outputNo].size()>0) cerr<<"BEAT"< //this is the best way to store features: because map allows to search for the key below and above the present time int getRT(); + + float avg; + int num; + int numFeat; private: PluginLoader *loader; @@ -45,6 +49,7 @@ class Vamphost{ int featureNo; + }; #endif diff --git a/vamphost/src/testApp.cpp b/vamphost/src/testApp.cpp index b431fce..659ed35 100644 --- a/vamphost/src/testApp.cpp +++ b/vamphost/src/testApp.cpp @@ -22,8 +22,12 @@ void testApp::setup() { int channels=1; int outputNo=0; - string soname="qm-vamp-plugins"; - string id="qm-tempotracker"; + //string soname="qm-vamp-plugins"; + //string id="qm-tempotracker"; + //string id="qm-barbeattracker"; + + string soname="vamp-example-plugins.so"; + string id="percussiononsets"; int bufferSize = vamphost.init(soname,id,channels,rate,outputNo); @@ -149,7 +153,7 @@ ofSetColor(225); ofSetColor(225); string reportString = "buffers received: "+ofToString(bufferCounter)+"\ndraw routines called: "+ofToString(drawCounter)+"\nticks: " + ofToString(soundStream.getTickCount()); - reportString +="\nfeatures found: "+ofToString(vamphost.features.size()); + reportString +="\nfeatures found: "+ofToString(vamphost.numFeat)+" average signal: "+ofToString(vamphost.avg)+" samples: "+ofToString(vamphost.num); ofDrawBitmapString(reportString, 32, 589); } @@ -183,6 +187,7 @@ void testApp::audioIn(float * input, int bufferSize, int nChannels){ bufferCounter++; + //input would seem to be in the range 0..1 vamphost.process_frame(input,bufferSize); diff --git a/vamphost/vamphost.cbp b/vamphost/vamphost.cbp index 4137986..6a22a01 100755 --- a/vamphost/vamphost.cbp +++ b/vamphost/vamphost.cbp @@ -36,6 +36,12 @@ + + + + -- cgit v1.2.3