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
|
#pragma once
#include "ofMain.h"
#include "ofxCsv.h"
class scriptLine{
public:
scriptLine(string audiofile,string cols,string wrds){
if (audio.load(audiofile)){
//requires https://github.com/arturoc/openFrameworks/tree/feature-soundPlayerDuration
duration = ((float)audio.getDurationMS())/1000.0f;
vector<string> words=ofSplitString(wrds," ");
avgWordDuration = duration / words.size();
ofLog()<<"loaded "<<audiofile<<", duration "<<duration<<"s, avg "<<avgWordDuration;
}
else duration=0.0f;
text=wrds;
vector<string> colours=ofSplitString(cols,",");
for (auto c: colours){
palette.push_back(ofColor::fromHex(ofHexToInt(c)));
}
bisPlaying=false;
}
void play(){
if (audio.isLoaded()){
audio.play();
startTime=ofGetElapsedTimef();
}
}
bool isPlaying(){
return audio.isPlaying();
}
void stop(){
if (isPlaying()){
audio.stop();
}
}
void update(){
if (isPlaying()){
//if (ofGetElapsedTimef()){}
}
}
vector<ofColor> palette;
string text;
ofSoundPlayer audio;
float duration;
float avgWordDuration;
bool bisPlaying;
float startTime;
};
class ofApp : public ofBaseApp{
public:
void setup();
void update();
void draw();
void exit();
void keyPressed(ofKeyEventArgs &keyargs);
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 mouseEntered(int x, int y);
void mouseExited(int x, int y);
void windowResized(int w, int h);
void dragEvent(ofDragInfo dragInfo);
ofxCsv csv;
vector<scriptLine> script;
vector<scriptLine>::iterator playline;
};
|