Regenerate tempo timings after adding markers

This commit is contained in:
2026-09-07 21:16:02 +01:00
parent 02db65fcc8
commit c176ff15cd

View File

@@ -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(self, final=False):
try:
def namespaced_key(x):
if x is None:
return (1, x)
else:
return (0, x)
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:
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: