Mercurial > hg > syncopation-dataset
changeset 17:a5a26d2cff40
fixing merge further
author | csong |
---|---|
date | Fri, 03 Apr 2015 17:28:26 +0100 |
parents | f33394acc539 |
children | 43fa04812800 |
files | Syncopation models/syncopation.py.resolve Syncopation models/test.py |
diffstat | 2 files changed, 0 insertions(+), 104 deletions(-) [+] |
line wrap: on
line diff
--- a/Syncopation models/syncopation.py.resolve Fri Apr 03 17:27:31 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,103 +0,0 @@ -''' -Author: Chunyang Song -Institution: Centre for Digital Music, Queen Mary University of London - -''' - - -def sync_perbar_permodel(seq, model, timesig = None, subdivision_seq = None, weight_seq = None, L_max = 5, prebar_seq = None, postbar_seq = None, strong_beat_level = None): - syncopation = None - - if seq == None or model == None: - print 'Error: please indicate rhythm sequence and syncopation model.' - - elif timesig == None and subdivision_seq == None: - print 'Error: please indicate either time signature or subdivision sequence.' - - else: - while subdivision_seq == None: - from basic_functions import get_subdivision_seq - subdivision_seq = get_subdivision_seq(timesig, L_max) - - # The get_rhythm_category function is used to detect rhythm category: monorhythm or polyrhythm. - # For monorhythms, all prime factors of the length of minimum time-span representation of this sequence are - # elements of its subdivision_seq, otherwise it is polyrhythm; - # e.g. prime_factors of polyrhythm 100100101010 in 4/4 is [2,3] but subdivision_seq = [1,2,2] for 4/4 - def get_rhythm_category(): - rhythm_category = 'mono' - from basic_functions import get_min_timeSpan, find_prime_factors - for f in find_prime_factors(len(get_min_timeSpan(seq))): - if not (f in subdivision_seq): - rhythm_category = 'poly' - break - return rhythm_category - - rhythm_category = get_rhythm_category() - - if model == 'LHL': - import LHL - if weight_seq == None: - weight_seq = range(0,-L_max,-1) - syncopation = LHL.get_syncopation(seq, subdivision_seq, weight_seq, prebar_seq, rhythm_category) - elif model == 'PRS': - import PRS - syncopation = PRS.get_syncopation(seq, subdivision_seq, postbar_seq, rhythm_category) - elif model == 'TMC': - import TMC - if weight_seq == None: - weight_seq = range(L_max+1,0,-1) - syncopation = TMC.get_syncopation(seq, subdivision_seq, weight_seq, L_max, rhythm_category) - elif model == 'SG': - import SG - if weight_seq == None: - weight_seq = range(L_max+1) - syncopation = SG.get_syncopation(seq, subdivision_seq, weight_seq, L_max, rhythm_category) - elif model == 'KTH': - import KTH - syncopation = KTH.get_syncopation(seq, timesig, postbar_seq) - elif model == 'TOB': - import TOB - syncopation = TOB.get_syncopation(seq) - elif model == 'WNBD': - import WNBD - if strong_beat_level == None: - if timesig == '4/4': - strong_beat_level = 2 - else: - strong_beat_level = 1 - syncopation = WNBD.get_syncopation(seq, subdivision_seq, strong_beat_level, postbar_seq) - - else: - print 'Error: undefined syncopation model.' - - return syncopation - -# def syncopation_all(rhythm, model, timesig, subdivision_seq = None, weight_seq = None, L_max = 5, strong_beat_level = None): -# syncopation = 0 -# # Chope rhythm into seq -# # ... - -# for (seq_perbar in seq): -# sync_perbar = syncopation_perbar(seq_perbar,model, timesig, subdivision_seq, weight_seq, L_max, strong_beat_level) -# if sync_perbar != None: -# syncopation = syncopation + sync_perbar - -# return syncopation - - -### TESTING -# clave = [1,0,0,1,0,0,1,0,0,0,1,0,1,0,0,0] -# bf = [0,0,0,1,0,0,0,0,0,0,1,0] -# rhythm = [0,1,0,1,0,1,0,1] -# classic1 = [1,0,1,1]*3 + [1,0,0,0] -# classic2 = [1,0,0,1]*3 + [1,0,0,0] -# shiko = [1,0,1,1,0,1,1,0] -# rumba = [1,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0] -# soukous = [1,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0] -# gahu = [1,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0] -# bossanova = [1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0] - -# classic12 = [1,0,0,1,1,1,1,0,0,1,1,1] -# soli = [1,0,1,0,1,0,1,0,1,1,0,1] - -# print sync_perbar(seq = clave, model = 'WNBD', timesig = '4/4')