summaryrefslogtreecommitdiff
path: root/futuregael/src/ofApp.h
blob: d656bf1cc6a56f52ae81b87a6437e89958da6e15 (plain)
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;
};