comparison Syncopation models/LHL.py @ 19:9030967a05f8

Refactored parameter_setter, basic_functions. Halfway fixing parameter argument in LHL model.
author csong <csong@eecs.qmul.ac.uk>
date Fri, 03 Apr 2015 22:57:27 +0100
parents 4acddc008048
children b959c2acb927
comparison
equal deleted inserted replaced
18:43fa04812800 19:9030967a05f8
28 subBinarySequences = subdivide(binarySequence, subdivisionSequence[level+1]) 28 subBinarySequences = subdivide(binarySequence, subdivisionSequence[level+1])
29 subWeightSequences = concatenate([metricalWeight],repeat([weightSequence[level+1]],subdivisionSequence[level+1]-1)) 29 subWeightSequences = concatenate([metricalWeight],repeat([weightSequence[level+1]],subdivisionSequence[level+1]-1))
30 for a in range(len(subBinarySequences)): 30 for a in range(len(subBinarySequences)):
31 recursive_tree(subBinarySequences[a], subdivisionSequence, weightSequence, subWeightSequences[a], level+1) 31 recursive_tree(subBinarySequences[a], subdivisionSequence, weightSequence, subWeightSequences[a], level+1)
32 32
33 def get_syncopation(bar, weightSequence = None, LMax = None): 33 def are_parameters_valid(parameters):
34 areValid = False
35 if 'Lmax' not in parameters :
36
37 def get_syncopation(bar, parameters = None):
34 ''' 38 '''
35 The get_syncopation function calculates syncopation value . 39 The get_syncopation function calculates syncopation value .
36 ''' 40 '''
37 #def get_syncopation(seq, subdivision_seq, weight_seq, prebar_seq, rhythm_category): 41 #def get_syncopation(seq, subdivision_seq, weight_seq, prebar_seq, rhythm_category):
38 syncopation = None 42 syncopation = None
41 subdivisionSequence = bar.get_subdivision_sequence() 45 subdivisionSequence = bar.get_subdivision_sequence()
42 46
43 if get_rhythm_category(binarySequence, subdivisionSequence) == 'poly': 47 if get_rhythm_category(binarySequence, subdivisionSequence) == 'poly':
44 print 'Warning: LHL model detects polyrhythms so returning None.' 48 print 'Warning: LHL model detects polyrhythms so returning None.'
45 else: 49 else:
46 if weightSequence == None: 50 # If the parameters are not given, use the default settings
47 if LMax == None: 51 if parameters == None:
48 LMax = 5 52 Lmax = 5
49 weightSequence = range(0,-LMax,-1) 53 weightSequence = range(0,-Lmax,-1)
54 else:
55 if are_parameters_valid(parameters):
56 Lmax = parameters['Lmax']
57 weightSequence = parameters['W']
58 else:
59 pass
60 #raise InvalidParameterError
50 61
51 # If there is rhythm in previous bar, process its tree structure 62 # If there is rhythm in previous bar, process its tree structure
52 if bar.get_previous_bar() != None: 63 if bar.get_previous_bar() != None:
53 prebarBinarySequence = bar.get_previous_bar().get_binary_sequence() 64 prebarBinarySequence = bar.get_previous_bar().get_binary_sequence()
54 recursive_tree(ceiling(prebarBinarySequence), subdivisionSequence, weightSequence, weightSequence[0],0) 65 recursive_tree(ceiling(prebarBinarySequence), subdivisionSequence, weightSequence, weightSequence[0],0)