diff options
Diffstat (limited to 'rotord/src/nodes_audio_analysis.h')
| -rw-r--r-- | rotord/src/nodes_audio_analysis.h | 72 |
1 files changed, 49 insertions, 23 deletions
diff --git a/rotord/src/nodes_audio_analysis.h b/rotord/src/nodes_audio_analysis.h index d192d26..ee98c3b 100644 --- a/rotord/src/nodes_audio_analysis.h +++ b/rotord/src/nodes_audio_analysis.h @@ -9,31 +9,11 @@ namespace Rotor { #define VAMPHOST_Timesteps 2 #define VAMPHOST_Valueline 3 #define VAMPHOST_Values 4 - class Audio_analysis: public Audio_processor { + class Vamp_node: public Audio_processor { + //base class for vamp plugin hosts public: - Audio_analysis(){ - //create_attribute("soname","Plugin library to use","Plugin library","vamp-example-plugins",{"horiz","vert","horizR","vertR"}); - //create_attribute("id","ID of Plugin to use","Plugin ID","percussiononsets",{"horiz","vert","horizR","vertR"}); - create_attribute("analyser","Analyser Plugin to use","Analyser plugin","barbeattracker",{"barbeattracker","segmenter"}); - create_attribute("mode","Data output mode","Mode","timeline",{"timeline","timesteps","valueline","values"}); - create_parameter("outputNo","number","Plugin output to use","Output number",0.0f); - title="Audio analysis"; - description="Analyse audio and output"; - }; - Audio_analysis(map<string,string> &settings):Audio_analysis() { - base_settings(settings); - vector< pair< string, string>> sonames={ - {"qm-vamp-plugins","qm-barbeattracker"} - }; - soname=find_setting(settings,"soname"); - id=find_setting(settings,"id"); - outputNo=find_setting(settings,"outputNo",0); - }; - ~Audio_analysis(){}; - Audio_analysis* clone(map<string,string> &_settings) { return new Audio_analysis(_settings);}; bool init(int _channels,int _bits,int _samples,int _rate); void cleanup(); - void set_parameter(const std::string &key,const std::string &value){params[key]=ofToFloat(value);}; int process_frame(uint8_t *data,int samples_in_frame); const float output(const Time_spec &time) { if (analyser.features.size()) { @@ -67,12 +47,58 @@ namespace Rotor { void print_summary(){ cerr<<"vamp plugin "<<id<<" of library "<<soname<<" found "<<analyser.features.size()<<" features "<<endl; }; - private: + protected: string soname,id; int outputNo; + private: vampHost::Analyser analyser; map <string,float> params; }; + class Audio_analysis: public Vamp_node { + //vamp node that allows the user to choose a plugin + public: + Audio_analysis(){ + //create_attribute("soname","Plugin library to use","Plugin library","vamp-example-plugins",{"horiz","vert","horizR","vertR"}); + //create_attribute("id","ID of Plugin to use","Plugin ID","percussiononsets",{"horiz","vert","horizR","vertR"}); + create_attribute("analyser","Analyser Plugin to use","Analyser plugin","barbeattracker",{"barbeattracker","segmenter"}); + create_attribute("mode","Data output mode","Mode","timeline",{"timeline","timesteps","valueline","values"}); + create_parameter("outputNo","number","Plugin output to use","Output number",0.0f); + title="Audio analysis"; + description="Analyse audio and output"; + }; + Audio_analysis(map<string,string> &settings):Audio_analysis() { + base_settings(settings); + soname=find_setting(settings,"soname"); + id=find_setting(settings,"id"); + outputNo=find_setting(settings,"outputNo",0); + }; + ~Audio_analysis(){}; + Audio_analysis* clone(map<string,string> &_settings) { return new Audio_analysis(_settings);}; + private: + }; + class Act_segmenter: public Vamp_node { + //vamp node that applies a ruleset to manage a set of acts via a cycler + public: + Act_segmenter(){ + create_parameter("outputNo","number","Plugin output to use","Output number",0.0f); + create_parameter("acts","number","Number of acts defined","Acts",0.0f); + title="Act manager"; + description="Applies a ruleset to manage acts based on segments"; + }; + Act_segmenter(map<string,string> &settings):Act_segmenter() { + base_settings(settings); + soname="qm-vamp-plugins"; + id="qm-segmenter"; + outputNo=find_setting(settings,"outputNo",0); + }; + ~Act_segmenter(){}; + Act_segmenter* clone(map<string,string> &_settings) { return new Act_segmenter(_settings);}; + void cleanup(){ + Vamp_node::cleanup(); + cerr<<"act segmenter custom cleanup"<<endl; + } + private: + }; } #endif |
