Mercurial > hg > syncopation-dataset
diff Syncopation models/syncopation.py @ 40:6371e8f21f7d
updating the syncopation functions to fix a few problems
author | christopherh <christopher.harte@eecs.qmul.ac.uk> |
---|---|
date | Thu, 23 Apr 2015 15:46:58 +0100 |
parents | cc38b3047ed9 |
children |
line wrap: on
line diff
--- a/Syncopation models/syncopation.py Mon Apr 13 23:06:49 2015 +0100 +++ b/Syncopation models/syncopation.py Thu Apr 23 15:46:58 2015 +0100 @@ -10,7 +10,7 @@ def sync_perbar_permodel (model, bar, parameters=None): return model.get_syncopation(bar, parameters) -def syncopation_barlist_permodel(model, source, parameters=None): +def calculate_syncopation(model, source, parameters=None): total = 0.0 barResults = [] numberOfNotes = 0 @@ -20,6 +20,9 @@ if isinstance(source, BarList): barlist = source sourceType = "bar list" + elif isinstance(source, Bar): + barlist = BarList().append(source) + sourceType = "single bar" elif isinstance(source, basestring): #treat source as a filename sourceType = source @@ -37,6 +40,8 @@ print "Error in syncopation_barlist_permodel(): unrecognised source type." barsDiscarded=0 + discardedlist = [] + includedlist = [] if barlist!=None: for bar in barlist: @@ -50,8 +55,10 @@ if barSyncopation != None: total += barSyncopation numberOfNotes += sum(bar.get_binary_sequence()) + includedlist.append(barlist.index(bar)) else: barsDiscarded += 1 + discardedlist.append(barlist.index(bar)) print 'Model could not measure bar %d, returning None.' % barlist.index(bar) import WNBD @@ -60,7 +67,16 @@ average = total / (len(barResults)-barsDiscarded) - return {"summed_syncopation":total, "average_syncopation_per_bar":average, "source":sourceType, "number_of_bars":len(barResults), "number_of_bars_not_measured":barsDiscarded, "syncopation_by_bar":barResults} + return { + "model_name":model.__name__ , + "summed_syncopation":total, + "mean_syncopation_per_bar":average, + "source":sourceType, + "number_of_bars":len(barResults), + "number_of_bars_not_measured":barsDiscarded, + "bars_with_valid_output":includedlist, + "syncopation_by_bar":barResults + }