@@ -75,11 +75,15 @@ def compile_timeline(document: dict) -> dict:
|
||||
raise PlaybackUnavailable('grace group must steal between zero and 100 percent')
|
||||
lengths = [fraction(donor['duration']) * amount / 100 for amount in percentages]
|
||||
total = sum(lengths, Fraction())
|
||||
delay, extension = adjustments.get(donor['id'], (Fraction(), Fraction()))
|
||||
if mode == 'steal-time-previous':
|
||||
cursor -= total
|
||||
adjustments[donor['id']] = (Fraction(), -total)
|
||||
else:
|
||||
adjustments[donor['id']] = (total, -total)
|
||||
delay += total
|
||||
extension -= total
|
||||
if fraction(donor['duration']) + extension <= 0 or any(fraction(p['duration']) + extension <= 0 for p in donor['pitches']):
|
||||
raise PlaybackUnavailable(f'{donor["id"]}: grace timing consumes a donor or chord tone')
|
||||
adjustments[donor['id']] = (delay, extension)
|
||||
for item, length in zip(pending, lengths):
|
||||
value, _, pitch_state, lane_id = item
|
||||
adjustments[value['id']] = (cursor - item[1], length)
|
||||
|
||||
Reference in New Issue
Block a user