summaryrefslogtreecommitdiff
path: root/gui/src
diff options
context:
space:
mode:
Diffstat (limited to 'gui/src')
-rw-r--r--gui/src/AudioPlotter.cpp7
-rw-r--r--gui/src/AudioPlotter.h1
-rw-r--r--gui/src/ofApp.cpp93
-rw-r--r--gui/src/ofApp.h10
4 files changed, 81 insertions, 30 deletions
diff --git a/gui/src/AudioPlotter.cpp b/gui/src/AudioPlotter.cpp
index ec53bf4..22eb757 100644
--- a/gui/src/AudioPlotter.cpp
+++ b/gui/src/AudioPlotter.cpp
@@ -86,6 +86,13 @@ void Audioplotter::addpoints(vector <float> &audio){
data.pop_back();
}
}
+void Audioplotter::blankframe(){
+ vector <colourPolyline> newdata;
+ data.insert(data.begin(),newdata);
+ while (data.size()>history_size) {
+ data.pop_back();
+ }
+}
int Audioplotter::numpoints(){
int num=0;
for (auto d=data.begin();d!=data.end();d++){
diff --git a/gui/src/AudioPlotter.h b/gui/src/AudioPlotter.h
index fba5516..1a5aa4e 100644
--- a/gui/src/AudioPlotter.h
+++ b/gui/src/AudioPlotter.h
@@ -23,6 +23,7 @@ public:
colourPolyline compute_chaos(colourPolyline& poly,float colourFade=1.0f);
vector <colourPolyline> output(float scale=1.0f,float decay=-1.0f);
void addpoints(vector <float> &audio);
+ void blankframe();
int numpoints();
ofParameter<bool> random;
diff --git a/gui/src/ofApp.cpp b/gui/src/ofApp.cpp
index 44939cc..367fdd2 100644
--- a/gui/src/ofApp.cpp
+++ b/gui/src/ofApp.cpp
@@ -65,6 +65,13 @@ void ofApp::setup(){
lasergui.add(laser_blank_num.set("blank points", 8, 0, 32));
lasergui.add(laser_max_angle.set("max angle", 15.0f, 1.0f, 90.0f));
+ responsegui.setup("audio response","",230,970);
+ responsegui.add(onset_threshold.set("onset threshold", 0.05f, 0.0f, 1.0f ));
+ responsegui.add(use_onset.set("trigger onset",false));
+ responsegui.add(onset_duration.set("duration", 10, 1, 100));
+
+ onset_frame=0;
+
chaosgui.setup("chaos","",460,820);
chaosgui.add(plotter.usechaos.set("use",false));
chaosgui.add(plotter.chaosamount.set("amount", 0.0f, -0.1f, 0.1f));
@@ -76,7 +83,7 @@ void ofApp::setup(){
drawgui.setup("drawing","",10,0);
drawgui.add(contour_threshold.setup("threshold", 140, 0, 255));
- drawgui.add(contour_simplify.setup("simplify", 0.8, 0.0, 1.0));
+ drawgui.add(contour_simplify.setup("simplify", 0.8, 0.0, 10.0));
drawgui.add(contour_useColour.setup("use colour", true));
drawgui.add(laser_R.setup("red", 140, 0, 255));
drawgui.add(laser_G.setup("green", 140, 0, 255));
@@ -186,13 +193,16 @@ void ofApp::loadSong(string str){
}
void ofApp::onNoteOn(GistEvent &e){
-
+ //ofLog() << "<<NOTE ON>>";
+ onset_frame=0;
+ onset_number++;
//noteOnRadius = 100;
};
void ofApp::onNoteOff(GistEvent &e){
-
+ //ofLog() << "<<NOTE OFF>>";
+ //turn off?
//noteOnRadius = 0;
};
@@ -352,7 +362,12 @@ void ofApp::updateOutput(ofEventArgs & args){
plotter.addpoints(fftSmoothed);
}
else {
- plotter.addpoints(centre);
+ if (!use_onset||onset_frame<onset_duration){
+ plotter.addpoints(centre);
+ }
+ else {
+ plotter.blankframe();
+ }
}
}
}
@@ -456,6 +471,9 @@ void ofApp::update(){
movie.update();
}
+ gist.setThreshold(GIST_PEAK_ENERGY,onset_threshold);
+
+ onset_frame++;
}
const ofPoint previewframesize=ofPoint(320,240);
@@ -503,6 +521,7 @@ void ofApp::draw(){
drawgui.draw();
audiogui.draw();
chaosgui.draw();
+ responsegui.draw();
//================================== NDI
/*
@@ -620,6 +639,10 @@ void ofApp::draw(){
}
+ ofSetColor(255);
+
+ ofDrawBitmapString(ofToString(onset_number)+":"+(onset_frame==0?"BEAT":ofToString(onset_frame)),10,ofGetHeight()-15);
+
}
void ofApp::drawOutput(ofEventArgs & args){
@@ -706,25 +729,27 @@ void ofApp::drawOutput(ofEventArgs & args){
}
*/
case Player:{
- if (movie.isLoaded()){
- ofPoint scale=ofPoint(outputWindowSize.x/movie.getWidth(),outputWindowSize.y/movie.getHeight());
- colorImg.setFromPixels(movie.getPixels());
- if (grayImage.getWidth()!=colorImg.getWidth()||grayImage.getHeight()!=colorImg.getHeight()){
- grayImage.clear();
- }
- grayImage=colorImg;
- grayImage.threshold(contour_threshold);
- contourFinder.findContours(grayImage, 20, (340*240)/3, 10, true);
- for (int i = 0; i < contourFinder.nBlobs; i++){
- colourPolyline shape;
- for (auto& point:contourFinder.blobs[i].pts){
- ofVec3f p=point*scale;
- ofColor c=colorImg.getPixels().getColor(point.x,point.y);
- shape.addVertex(p,contour_useColour?c:ofColor(laser_R,laser_G,laser_B));
+ if (!use_onset||onset_frame<onset_duration){
+ if (movie.isLoaded()){
+ ofPoint scale=ofPoint(outputWindowSize.x/movie.getWidth(),outputWindowSize.y/movie.getHeight());
+ colorImg.setFromPixels(movie.getPixels());
+ if (grayImage.getWidth()!=colorImg.getWidth()||grayImage.getHeight()!=colorImg.getHeight()){
+ grayImage.clear();
}
- shape.simplify(contour_simplify);
- polyOutput.push_back(shape);
- }
+ grayImage=colorImg;
+ grayImage.threshold(contour_threshold);
+ contourFinder.findContours(grayImage, 20, (340*240)/3, 10, true);
+ for (int i = 0; i < contourFinder.nBlobs; i++){
+ colourPolyline shape;
+ for (auto& point:contourFinder.blobs[i].pts){
+ ofVec3f p=point*scale;
+ ofColor c=colorImg.getPixels().getColor(point.x,point.y);
+ shape.addVertex(p,contour_useColour?c:ofColor(laser_R,laser_G,laser_B));
+ }
+ shape.simplify(contour_simplify);
+ polyOutput.push_back(shape);
+ }
+ }
}
break;
}
@@ -853,15 +878,22 @@ void ofApp::drawOutput(ofEventArgs & args){
int num = 0;
int pnum=0;
- if (polyOutput.size()){
- if (laser_power) {
- num=laser.draw(scaledWarpedOutput);
- }
- for (auto& shape:warpedOutput){
- shape.draw();
- pnum+=shape.size();
+
+ if (laser_power&&polyOutput.size()) {
+ num=laser.draw(scaledWarpedOutput);
+ }
+ else {
+ colourPolyline blank;
+ for (int i=0;i<100;i++){
+ blank.addVertex(ofGetWidth()/2,ofGetHeight()/2,0,0,0);
}
+ laser.draw(blank);
}
+ for (auto& shape:warpedOutput){
+ shape.draw();
+ pnum+=shape.size();
+ }
+
if (bDrawFrame){
lineTransformer::drawWarpFrame(warpframe);
@@ -1058,7 +1090,8 @@ void ofApp::dragEvent(ofDragInfo dragInfo){
if (movie.load(filename)){
cout << "loaded "<< filename<<std::endl;
movie.setLoopState(OF_LOOP_NORMAL);
- movie.play();
+ movie.setVolume(0.0f);
+ movie.play();
}
else {
cout << "failed to load"<<std::endl;
diff --git a/gui/src/ofApp.h b/gui/src/ofApp.h
index 39c3493..24ab46e 100644
--- a/gui/src/ofApp.h
+++ b/gui/src/ofApp.h
@@ -117,6 +117,16 @@ class ofApp: public ofBaseApp, public ofxMidiListener {
void useMicChanged();
+ //======= audio response gui
+
+ ofxPanel responsegui;
+ ofParameter<float> onset_threshold;
+ ofParameter<bool> use_onset;
+ ofParameter<int> onset_duration;
+
+ int onset_frame;
+ int onset_number;
+
//======== chaos gui
ofxPanel chaosgui;