summaryrefslogtreecommitdiff
path: root/rotord/src/nodes_audio_analysis.h
diff options
context:
space:
mode:
authorTim Redfern <tim@eclectronics.org>2013-09-05 17:55:35 +0100
committerTim Redfern <tim@eclectronics.org>2013-09-05 17:55:35 +0100
commit741fb4b9e135cfb161a749db88713229038577bb (patch)
tree08bc9925659cbcac45162bacf31dc6336d4f60b4 /rotord/src/nodes_audio_analysis.h
parenta2e1bf3495b7bfefdaedb8fc737e969ab06df079 (diff)
making act segmenter
Diffstat (limited to 'rotord/src/nodes_audio_analysis.h')
-rw-r--r--rotord/src/nodes_audio_analysis.h72
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