summaryrefslogtreecommitdiff
path: root/gistanalysis/src/ofApp.h
diff options
context:
space:
mode:
Diffstat (limited to 'gistanalysis/src/ofApp.h')
-rw-r--r--gistanalysis/src/ofApp.h69
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;
};