import fractions import generator.score import generator.model import generator.arrange.form def regions(document): result, first, start = {}, 0, fractions.Fraction() source = generator.score.source_staff(document)['measures'] for section in generator.arrange.form.full_arrangement_sections(source, 'acoustic'): length = sum((generator.model.fraction(m['duration']) for m in source[section.source_measure_index:section.source_measure_index + section.measure_count]), fractions.Fraction()) result[section.section_index] = (first, section.measure_count, start, length) first += section.measure_count start += length return result