def make_empty_measures(score): print('making empty measures ...') numerators, second_numerators = make_numerators() numerators = sequencetools.flatten_sequence(numerators) reading_lengths = get_measures_per_reading() #for staff in iterate.naive_forward_in(score, klass = Staff): for voice in score.music_voices: meter_tokens = [(numerator, 8) for numerator in numerators] measures = measuretools.make(meter_tokens) #staff.extend(measures) voice.extend(measures) return score
def ascribe_tilt(score): numerators, second_numerators = make_numerators() numerators = sequencetools.flatten_sequence(numerators) sublists = sequencetools.partition_by_weights_ratio(numerators, [2, 1, 1]) lengths = [len(sublist) for sublist in sublists] #print(lengths, sequencetools.cumulative_sums(lengths)) for staff in iterate.naive_forward_in(score, Staff): measures = list(iterate.measures_forward_in(staff)) measure_groups = sequencetools.partition_by_lengths(measures, lengths) for measure_group_index, measure_group in enumerate(measure_groups): for measure in measure_group: tilt = get_tilt(measure_group_index, measure) measure.history.tilt = tilt
def get_measures_per_reading(): first_numerators, second_numerators = make_numerators() return [len(reading) for reading in first_numerators]