diff options
| author | Tim Redfern <tim@getdrop.com> | 2018-05-29 23:38:41 +0100 |
|---|---|---|
| committer | Tim Redfern <tim@getdrop.com> | 2018-05-29 23:38:41 +0100 |
| commit | 347ff04d88cb01fb10eb26513031c03665e0068c (patch) | |
| tree | 67eaf2706c1fb1177b33a7129a0b259661ce5ab5 /gistanalysis/src | |
| parent | efd0d6840649caf02f7b242a505bcae3bc7aa986 (diff) | |
some chaos
Diffstat (limited to 'gistanalysis/src')
| -rw-r--r-- | gistanalysis/src/ofApp.cpp | 37 | ||||
| -rw-r--r-- | gistanalysis/src/ofApp.h | 69 |
2 files changed, 59 insertions, 47 deletions
diff --git a/gistanalysis/src/ofApp.cpp b/gistanalysis/src/ofApp.cpp index cf3240c..bc3ec34 100644 --- a/gistanalysis/src/ofApp.cpp +++ b/gistanalysis/src/ofApp.cpp @@ -45,22 +45,29 @@ void ofApp::setup(){ mfccPlots.push_back(graph); } - - gui.setup("panel"); // most of the time you don't need a name but don't forget to call setup + plotter.setup(5,true); + + gui.setup("transform"); // most of the time you don't need a name but don't forget to call setup gui.add(fft.set("fft",false)); - gui.add(joined.set("joined",true)); - gui.add(bars.set("bars",true)); - gui.add(capWidth.set("point width", 2, 1, 256)); - gui.add(numPoints.set("num points", 50, 1, 256)); - gui.add(numPlots.set("num plots", 5, 1, 100)); + gui.add(plotter.joined.set("joined",true)); + gui.add(plotter.bars.set("bars",true)); + gui.add(plotter.width.set("point width", 2, 1, 256)); + gui.add(plotter.num_points.set("num points", 50, 1, 256)); + gui.add(plotter.history_size.set("num plots", 5, 1, 100)); gui.add(scalePlot.set("scale plot", 0.1f, 0.0f, 1.0f )); gui.add(decayPlot.set("decay", 0.9f, 0.0f, 1.0f )); gui.add(xform.set("xform",ofVec2f(0,0),ofVec2f(-50,-50),ofVec2f(50,50))); gui.add(rotate.set("rotate", 0.0f, -30.0f, 30.0f )); gui.add(scale.set("scale",ofVec2f(1.0f,1.0f),ofVec2f(0.5f,0.5f),ofVec2f(2.0f,2.0f))); - gui.add(startColour.set("start",ofColor(255,255,255))); - gui.add(endColour.set("end",ofColor(0,0,0))); - + gui.add(plotter.startColour.set("start",ofColor(255,255,255))); + gui.add(plotter.endColour.set("end",ofColor(0,0,0))); + + + + chaosgui.setup("chaos","",230,10); // most of the time you don't need a name but don't forget to call setup + chaosgui.add(plotter.usechaos.set("use",false)); + chaosgui.add(plotter.chaosamount.set("amount", 0.5f, 0.0f, 1.0f)); + /* //add special crest graph ofxHistoryPlot*crest = addGraph("CREST_AVG",1.0,ofColor(ofRandom(100)+150,ofRandom(100)+150,ofRandom(100)+150)); @@ -88,7 +95,7 @@ void ofApp::setup(){ loadSong("passades/1 The Ninth Set-sector1:sector2pt.1.aiff"); //loadSong("assets/sounds/Coltrane_acc_VUIMM.wav"); - plotter=Audioplotter(5,true); + laser.set_pts(MAX_POINTS); laser.set_intensity(LASER_INTENSITY); @@ -124,12 +131,7 @@ void ofApp::updateOutput(ofEventArgs& e){ processAudio(&output[0], bufferSize, 2); fftSmoothed = player.getFFT(); - plotter.set_joined(joined); - plotter.set_size(numPlots); - plotter.set_width(capWidth); - plotter.set_bars(bars); - plotter.set_colours(startColour.get(),endColour.get()); - plotter.addpoints(fft?fftSmoothed:centre,numPoints); + plotter.addpoints(fft?fftSmoothed:centre); } } @@ -192,6 +194,7 @@ void ofApp::updateOutput(ofEventArgs& e){ void ofApp::draw(){ ofBackground(0); gui.draw(); + chaosgui.draw(); } //-------------------------------------------------------------- void ofApp::drawOutput(ofEventArgs & args){ diff --git a/gistanalysis/src/ofApp.h b/gistanalysis/src/ofApp.h index 7dd2245..350e53f 100644 --- a/gistanalysis/src/ofApp.h +++ b/gistanalysis/src/ofApp.h @@ -26,12 +26,16 @@ class Audioplotter{ //how best to handle length of history data - fixed number that can be set, or line budget? public: Audioplotter(int _size=1,bool _joined=true,bool _bars=false,int _width=2){ + setup(_size,_joined,_bars,_width); + } + void setup(int _size=1,bool _joined=true,bool _bars=false,int _width=2){ set_size(_size); set_joined(_joined); set_bars(_bars); set_width(_width); startColour=ofColor(255,255,255); endColour=ofColor(0,0,0); + attractor.setup(); } void set_size(int _size){ history_size=_size; @@ -49,11 +53,17 @@ public: startColour=_start; endColour=_end; } - ofPoint compute_chaos(const ofPoint input){ - REAL iv[6]={input.x,input.x,attractor.a,attractor.b,attractor.k,attractor.p}; - attractor.set(iv); - attractor.calc(); - return ofPoint(attractor.nx,attractor.ny); + colourPolyline compute_chaos(colourPolyline& poly,float colourFade=1.0f){ + colourPolyline tempPoly; + for (int i=0;i<poly.size();i++){ + REAL iv[6]={poly[i].x,poly[i].y,attractor.a,attractor.b,attractor.k,attractor.p}; + //ofLog() << i<<": calculating chaos with: "<<poly[i].x<<" "<<poly[i].y<<" "<<attractor.a<<" "<<attractor.b<<" "<<attractor.k<<" "<<attractor.p; + attractor.set(iv); + attractor.calc(); + //ofLog() << i<<": got points: "<<attractor.nx<<" "<<attractor.ny; + tempPoly.addVertex(ofPoint(attractor.nx,attractor.ny),poly.getColourAt(i)*colourFade); + } + return tempPoly; } vector <colourPolyline> output(const ofMatrix4x4 xform=ofMatrix4x4(1.0f,0.0f,0.0f,0.0f, 0.0f,1.0f,0.0f,0.0f, @@ -70,7 +80,14 @@ public: vector <colourPolyline> newdata; for (int j=0;j<data[i].size();j++){ colourPolyline line=lineTransformer::polyLineTransform(xform,data[i][j]); //,fadefactor); - line.setColour((line.getColourAt(0)*fadefactor)+(endColour*(1.0f-fadefactor))); + line.setColour((line.getColourAt(0)*fadefactor)+(((ofColor)endColour)*(1.0f-fadefactor))); + + if (usechaos) { + colourPolyline chaosline=compute_chaos(line); //,fadefactor); + line.mix(chaosline,chaosamount); + } + + //ofLog() << "set colour to "<<col; newdata.push_back(line); outdata.push_back(line); @@ -79,14 +96,11 @@ public: } return outdata; } - void addpoints(vector <float> &audio,int number){ - int num=min(number,(int)audio.size()); + void addpoints(vector <float> &audio){ + int num=min((int)num_points,(int)audio.size()); int step=audio.size()/(num+1); vector <colourPolyline> newdata; - if (chaos){ - - } - else if (joined){ + if (joined){ colourPolyline line; if (bars){ for (int i=0;i<num-1;i++){ @@ -122,21 +136,24 @@ public: } return num; } + ofParameter<bool> joined; + ofParameter<bool> bars; + ofParameter<int> width; + ofParameter<int> history_size; + ofParameter<int> num_points; + + ofParameter<ofColor> startColour; + ofParameter<ofColor> endColour; + + ofParameter<bool> usechaos; + ofParameter<float> chaosamount; + private: vector < vector<colourPolyline>> data; - bool joined; - bool bars; - int history_size; - int width; - ofColor startColour; - ofColor endColour; - AChaosIkeda attractor; - float chaos_amount; }; - class ofApp : public ofBaseApp, public ofxMidiListener{ public: @@ -214,20 +231,12 @@ class ofApp : public ofBaseApp, public ofxMidiListener{ ofxPanel gui; ofParameter<bool> fft; - ofParameter<bool> joined; - ofParameter<bool> bars; - ofParameter<int> capWidth; - ofParameter<int> numPoints; - ofParameter<int> numPlots; ofParameter<float> scalePlot; ofParameter<float> decayPlot; ofParameter<ofVec2f> xform; ofParameter<float> rotate; ofParameter<ofVec2f> scale; - ofParameter<ofColor> startColour; - ofParameter<ofColor> endColour; - ofxPanel chaospanel; - ofParameter<bool> bars; + ofxPanel chaosgui; }; |
