Comping
This commit is contained in:
@@ -43,9 +43,15 @@ def validate_pages(document, pages):
|
||||
def timing(document):
|
||||
times = boundaries(document)
|
||||
measures = document['staves'][0]['measures']
|
||||
# Metronome accents follow each actual measure, including meter changes.
|
||||
ending = [i for i, m in enumerate(measures) if m.get('ending_sustain')]
|
||||
if ending and ending != list(range(ending[0], len(measures))):
|
||||
raise ValueError('held ending must be a contiguous terminal section')
|
||||
sustain_start = times[ending[0]] if ending else times[-1]
|
||||
# The written held ending participates in page time, not metronome time.
|
||||
clicks = []
|
||||
for start, measure in zip(times, measures):
|
||||
if start >= sustain_start:
|
||||
break
|
||||
duration = generator.model.fraction(measure['duration'])
|
||||
beat = fractions.Fraction()
|
||||
while beat < duration:
|
||||
@@ -53,7 +59,7 @@ def timing(document):
|
||||
beat += 1
|
||||
return dict(song_id=document['metadata'].get('song_id', ''),
|
||||
duration=generator.model.rational(times[-1]),
|
||||
count_in_beats=4, clicks=clicks)
|
||||
sustain_start=generator.model.rational(sustain_start), count_in_beats=4, clicks=clicks)
|
||||
|
||||
def describe_wav(path, root, *, song_id='', bpm=0):
|
||||
if path.is_symlink() or not path.is_file() or not path.resolve().is_relative_to(root.resolve()):
|
||||
|
||||
Reference in New Issue
Block a user