Mercurial > hg > syncopation-dataset
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) |