Regenerate tempo timings after adding markers
This commit is contained in:
19
timings.py
19
timings.py
@@ -11,6 +11,12 @@ class TimingError(Exception):
|
||||
def __str__(self):
|
||||
return f'{self.message} in string "{self.at}"'
|
||||
|
||||
def namespaced_key(x):
|
||||
if x is None:
|
||||
return (1, x)
|
||||
else:
|
||||
return (0, x)
|
||||
|
||||
class Timings:
|
||||
def __init__(self):
|
||||
self._timings = []
|
||||
@@ -92,18 +98,17 @@ class Timings:
|
||||
self._tempo_objects.append((tempo, beats, at))
|
||||
self._resolved = False
|
||||
|
||||
def resolve_tempo(self):
|
||||
self._tempo_objects.sort(key=lambda x: namespaced_key(x[2].evaluate()))
|
||||
self._tempo = [(t, b, a.evaluate()) for (t, b, a) in self._tempo_objects]
|
||||
|
||||
def resolve(self, final=False):
|
||||
try:
|
||||
def namespaced_key(x):
|
||||
if x is None:
|
||||
return (1, x)
|
||||
else:
|
||||
return (0, x)
|
||||
self._tempo_objects.sort(key=lambda x: namespaced_key(x[2].evaluate()))
|
||||
self._tempo = [(t, b, a.evaluate()) for (t, b, a) in self._tempo_objects]
|
||||
self.resolve_tempo()
|
||||
for name in self._marker_objects.keys():
|
||||
if self._marker_objects[name] is not None:
|
||||
self._markers[name] = self._marker_objects[name].evaluate()
|
||||
self.resolve_tempo()
|
||||
self._timings.sort(key=lambda x: namespaced_key(x.evaluate()))
|
||||
except Exception:
|
||||
if final:
|
||||
|
||||
Reference in New Issue
Block a user