def count_intervals_in_all_songs(songs): intervals_direction = utils.flatten([song.intervals_with_direction for song in songs]) intervals = utils.flatten([song.intervals for song in songs]) print "All Songs\n" print " With direction" utils.print_dic_perc(Counter(intervals_direction)) print " Without direction" utils.print_dic_perc(Counter(intervals))
def count_intervals_by_song(songs): for song in songs: print "\n" print song.title print " With direction" utils.print_dic_perc(Counter(song.intervals_with_direction)) print " Without direction" utils.print_dic_perc(Counter(song.intervals))
def pickup_and_mode(name, collection): print "\n# ", name mode_dic1 = defaultdict(int) ts_dic1 = defaultdict(int) mode_dic2 = defaultdict(int) ts_dic2 = defaultdict(int) for song in collection: if song.has_pickup: if song.first_interval > 0: mode_dic1[song.mode] += 1 ts_dic1[song.time_signature] += 1 else: mode_dic2[song.mode] += 1 ts_dic2[song.time_signature] += 1 print "-- Has pickup" utils.print_dic_perc(mode_dic1) utils.print_dic_perc(ts_dic1) print "-- Doesn't have pickup" utils.print_dic_perc(mode_dic2) utils.print_dic_perc(ts_dic2)
def count_sincopa(name, collection): print "\n# ", name dic1 = defaultdict(int) dic2 = defaultdict(int) dic3 = defaultdict(int) dic4 = defaultdict(int) for song in collection: pattern = list(utils.KnuthMorrisPratt(song.durations, [0.25, 0.5, 0.25])) if pattern: dic1[song.mode] += 1 dic2[song.has_pickup] += 1 dic3[song.time_signature] += 1 dic4["with sincopa"] += 1 else: dic4["without sincopa"] += 1 utils.print_dic_perc(dic4) utils.print_dic_perc(dic1) print "Pickup:" utils.print_dic_perc(dic2) utils.print_dic_perc(dic3)