diff options
| author | Tim Redfern <tim@eclectronics.org> | 2013-12-13 16:46:43 +0000 |
|---|---|---|
| committer | Tim Redfern <tim@eclectronics.org> | 2013-12-13 16:46:43 +0000 |
| commit | e381a5cda15416c767804f7d875aae0d36230a4c (patch) | |
| tree | 7236cc8a7af506801ae1845009039a54475e68d2 /rotord/src/nodes_audio_analysis.cpp | |
| parent | d8856abdee23fb941e6dd5db671b87cd651e885c (diff) | |
intensity similarity segmenter
Diffstat (limited to 'rotord/src/nodes_audio_analysis.cpp')
| -rw-r--r-- | rotord/src/nodes_audio_analysis.cpp | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/rotord/src/nodes_audio_analysis.cpp b/rotord/src/nodes_audio_analysis.cpp index 7efb0f8..11598f4 100644 --- a/rotord/src/nodes_audio_analysis.cpp +++ b/rotord/src/nodes_audio_analysis.cpp @@ -160,6 +160,7 @@ namespace Rotor{ } i++; } + /* for (auto s:similarities) { string list=""; for (int j=0;j<s.second.size();j++){ @@ -168,6 +169,7 @@ namespace Rotor{ } cerr<<"group "<<s.first<<" ["<<list<<"]"<<endl; } + */ cerr<<analysers["segmenter"].features.size()<<" segments"<<endl; cerr<<analysers["tempo"].features.size()<<" tempo features"<<endl; @@ -216,7 +218,7 @@ namespace Rotor{ if (intensity<min_intensity) min_intensity=intensity; intensities.push_back(intensity); - cerr<<"segment "<<i<<": "<<f->first<<" to "<<g->first<<" average tempo: "<<tempo<<" ,intensity: "<<intensity<<" ,weighted: "<<(tempo*parameters["tempo_weight"]->value)+(intensity*parameters["intensity_weight"]->value)<<endl; + //cerr<<"segment "<<i<<": "<<f->first<<" to "<<g->first<<" average tempo: "<<tempo<<" ,intensity: "<<intensity<<" ,weighted: "<<(tempo*parameters["tempo_weight"]->value)+(intensity*parameters["intensity_weight"]->value)<<endl; } // // @@ -325,8 +327,9 @@ nned to retrieve total intensity by segment seggrps.push_back(oldgrps[s.second[0]]); } - cerr<<"similarities assigned, "<<(totalsmap.size()-seggrps.size())<<" segments merged"<<endl; + //cerr<<"similarities assigned, "<<(totalsmap.size()-seggrps.size())<<" segments merged"<<endl; + /* i=0; for (auto s:seggrps) { string list=""; @@ -337,11 +340,13 @@ nned to retrieve total intensity by segment cerr<<"segment "<<i<<" ["<<list<<"]"<<endl; i++; } + */ //sort the contents by intensity std::sort(seggrps.begin(),seggrps.end(),sortseggrps); - cerr<<"groups sorted by intensity:"<<endl; + //cerr<<"groups sorted by intensity:"<<endl; //possible mergers will be with groups with adjacent intensity i=0; + /* for (auto s:seggrps) { string list=""; for (int j=0;j<s.second.size();j++){ @@ -351,6 +356,7 @@ nned to retrieve total intensity by segment cerr<<"segment "<<i<<" ["<<list<<"]"<<endl; i++; } + */ if (((int)parameters["levels"]->value)>0) { if (seggrps.size()>(int)parameters["levels"]->value){ @@ -363,7 +369,7 @@ nned to retrieve total intensity by segment for (int j=1;j<diffs.size();j++) if (diffs[j]<diffs[smallest]) smallest=j; for (int j=0;j<seggrps[smallest].second.size();j++) { seggrps[smallest+1].second.push_back(seggrps[smallest].second[j]); - cerr<<"copied segment "<<(seggrps[smallest].second[j].second)<<" from group "<<smallest<<" to group "<<(smallest+1)<<endl; + //cerr<<"copied segment "<<(seggrps[smallest].second[j].second)<<" from group "<<smallest<<" to group "<<(smallest+1)<<endl; } //recalculate intensity average double avg=0.0f; @@ -372,7 +378,7 @@ nned to retrieve total intensity by segment seggrps[smallest+1].first=avg; seggrps.erase(seggrps.begin()+smallest); - cerr<<"removed group "<<smallest<<endl; + //cerr<<"removed group "<<smallest<<endl; } cerr<<"intensities merged, "<<seggrps.size()<<" levels remain"<<endl; } @@ -403,7 +409,7 @@ nned to retrieve total intensity by segment std::sort(seggrps[largest].second.begin(),seggrps[largest].second.end(),sortgroupmembers); //create a new group std::pair<double,vector<pair<double,int> > > newgroup; - cerr<<"splitting group "<<largest<<" with "<<seggrps[largest].second.size()<<" segments: new group will have "<<seggrps[largest].second.size()-(seggrps[largest].second.size()/2)<<" segments"<<endl; + //cerr<<"splitting group "<<largest<<" with "<<seggrps[largest].second.size()<<" segments: new group will have "<<seggrps[largest].second.size()-(seggrps[largest].second.size()/2)<<" segments"<<endl; for (int j=seggrps[largest].second.size()-1;j>(seggrps[largest].second.size()/2)-1;j--) { newgroup.second.push_back(seggrps[largest].second[j]); seggrps[largest].second.erase(seggrps[largest].second.begin()+j); @@ -422,7 +428,7 @@ nned to retrieve total intensity by segment //add the new group seggrps.push_back(newgroup); - cerr<<" added new group with "<<newgroup.second.size()<<" segments"<<endl; + //cerr<<" added new group with "<<newgroup.second.size()<<" segments"<<endl; } cerr<<"similaritity groups split, "<<seggrps.size()<<" levels total"<<endl; //seggrps are now out of order @@ -440,7 +446,7 @@ nned to retrieve total intensity by segment if (k>0) list+=","; list +=toString(seggrps[j].second[k].second); } - cerr<<"output value: "<<j<<" assigned to ["<<list<<"]"<<endl; + //cerr<<"output value: "<<j<<" assigned to ["<<list<<"]"<<endl; } |
