diff options
Diffstat (limited to 'gistanalysis/src/ofApp.h')
| -rw-r--r-- | gistanalysis/src/ofApp.h | 69 |
1 files changed, 39 insertions, 30 deletions
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; }; |
