summaryrefslogtreecommitdiff
path: root/rotord
diff options
context:
space:
mode:
authorTim Redfern <tim@eclectronics.org>2013-12-13 16:46:43 +0000
committerTim Redfern <tim@eclectronics.org>2013-12-13 16:46:43 +0000
commite381a5cda15416c767804f7d875aae0d36230a4c (patch)
tree7236cc8a7af506801ae1845009039a54475e68d2 /rotord
parentd8856abdee23fb941e6dd5db671b87cd651e885c (diff)
intensity similarity segmenter
Diffstat (limited to 'rotord')
-rw-r--r--rotord/src/nodes_audio_analysis.cpp22
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;
}