diff options
| author | Tim Redfern <tim@getdrop.com> | 2018-07-04 09:29:52 +0100 |
|---|---|---|
| committer | Tim Redfern <tim@getdrop.com> | 2018-07-04 09:29:52 +0100 |
| commit | b720d6d730a0d23425ca4c3ef7c156e1c7760ea1 (patch) | |
| tree | a3f60eef23a131ce53bf1f35fa9ce75beffa56cc /gui/src/AudioPlotter.h | |
| parent | efda4fd446da89ccd3909c988b6c1e932efa24bb (diff) | |
plugin architecture
Diffstat (limited to 'gui/src/AudioPlotter.h')
| -rw-r--r-- | gui/src/AudioPlotter.h | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/gui/src/AudioPlotter.h b/gui/src/AudioPlotter.h index 716a1dd..c5774ff 100644 --- a/gui/src/AudioPlotter.h +++ b/gui/src/AudioPlotter.h @@ -6,31 +6,45 @@ class AChaosplugin{ public: AChaosBase* plugin; - vector <REAL> params; + vector <ofParameter <float>> params; string name; AChaosplugin(AChaosBase* _plugin,string _name,vector <REAL> _params={0,0,0,0,0,0}){ plugin=_plugin; - params=_params; name=_name; + //plugin.setup(); + load_defaults(); + ofLog()<<"constructor "<<name; + } + void load_defaults(){ + params.clear(); + for (auto i:plugin->iv){ + ofLog()<<"iv: "<<i; + params.push_back(ofParameter <float>().set(ofToString(i),i,0,i*5)); + } } }; class Chaos{ public: - vector <AChaosplugin> plugins; + vector <AChaosplugin*> plugins; vector <vector <REAL>> params; int whichplugin; ofParameter <string> name; Chaos(){ - plugins.push_back(AChaosplugin(new AChaosBaker(),"Baker")); - plugins.push_back(AChaosplugin(new AChaosClifford(),"Clifford")); - plugins.push_back(AChaosplugin(new AChaosCollatz(),"Collatz")); - plugins.push_back(AChaosplugin(new AChaosDuffing(),"Duffing")); - plugins.push_back(AChaosplugin(new AChaosGinger(),"Ginger")); - plugins.push_back(AChaosplugin(new AChaosHenon(),"Henon")); + //can only use those that have 2 output params? + //or just make it 1 dimensional? only affect the x axis? + plugins.push_back(new AChaosplugin(new AChaosBaker(),"Baker")); + plugins.push_back(new AChaosplugin(new AChaosClifford(),"Clifford")); + plugins.push_back(new AChaosplugin(new AChaosCollatz(),"Collatz")); + plugins.push_back(new AChaosplugin(new AChaosDuffing(),"Duffing")); + plugins.push_back(new AChaosplugin(new AChaosGinger(),"Ginger")); + plugins.push_back(new AChaosplugin(new AChaosHenon(),"Henon")); whichplugin=0; update_name(); } + AChaosplugin &get(){ + return *plugins[whichplugin]; + } void next(){ whichplugin=(whichplugin+1)%plugins.size(); update_name(); @@ -43,10 +57,11 @@ class Chaos{ update_name(); } void update_name(){ - name=plugins[whichplugin].name; + name=plugins[whichplugin]->name; + //save old params & load new } std::string &get_name(){ - return plugins[whichplugin].name; + return plugins[whichplugin]->name; } }; |
