1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
#ifndef _TEST_APP
#define _TEST_APP
#include "ofxOpenNI.h"
#include "ofMain.h"
#include "ofxXmlSettings.h"
#define MAX_DEVICES 2
struct record{
vector<string> data;
string audio;
};
//in order to play diffferent clips it seems necessary to have a player per clip
class syncOniPlayer{
public:
~syncOniPlayer(){
for (int i=0;i<players.size();i++) {
players[i]->stop();
delete players[i];
}
}
void addPlayer(string name){
//ofxOpenNI *o=new ofxOpenNI;
//o->setupFromONI(name,true);
//o->setPaused(true);
//players.push_back(o);
players.push_back(new ofxOpenNI);
players[players.size()-1]->setupFromONI(name,true);
players[players.size()-1]->setPaused(true);
//players[players.size()-1]->setSpeed(0.0f);
//players[players.size()-1]->setup(true);
//players[players.size()-1]->start();
//players[players.size()-1]->startPlayer(name);
}
void play(){
for (int i=0;i<players.size();i++) {
players[i]->setPaused(false);
//players[players.size()-1]->setSpeed(1.0f);
}
}
void update(){
for (int i=0;i<players.size();i++) {
players[i]->update();
}
}
void pause(){
for (int i=0;i<players.size();i++) {
//players[players.size()-1]->setSpeed(0.0f);
players[i]->setPaused(true);
}
}
void draw(){
for (int i=0;i<players.size();i++) {
ofTranslate(0, i * 400);
players[i]->drawDepth(50, 0,520,390);
players[i]->drawImage(600, 0,520,390);
}
}
string audio;
private:
vector<ofxOpenNI*> players;
};
//however creating losts of ofxOpenNI doesn't seem viable
//we know we want to play seperate clips
//however we know that when we stop and start a player it comes back single threaded
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);
void startPlayers(int which);
int numDevices;
ofxOpenNI openNIPlayers[MAX_DEVICES];
int playing;
ofTrueTypeFont verdana;
ofxXmlSettings XML;
vector<syncOniPlayer> players;
ofSoundPlayer soundplayer;
int offset;
};
#endif
|