Source code for evans.consort.TimespanSimultaneity

from .AbjadObject import AbjadObject


[docs]class TimespanSimultaneity(AbjadObject): r""" A simultaneity of timespans in a timespan collection. """ ### CLASS VARIABLES ### __slots__ = ( "_timespan_collection", "_overlap_timespans", "_start_timespans", "_start_offset", "_stop_timespans", ) ### INITIALIZER ### def __init__( self, timespan_collection=None, overlap_timespans=None, start_timespans=None, start_offset=None, stop_timespans=None, ): from .TimespanCollection import TimespanCollection if timespan_collection is not None: prototype = TimespanCollection assert isinstance(timespan_collection, prototype) self._timespan_collection = timespan_collection self._start_offset = start_offset assert isinstance(start_timespans, (tuple, type(None))) assert isinstance(stop_timespans, (tuple, type(None))) assert isinstance(overlap_timespans, (tuple, type(None))) self._start_timespans = start_timespans self._stop_timespans = stop_timespans self._overlap_timespans = overlap_timespans ### SPECIAL METHODS ###
[docs] def __repr__(self): r""" Gets the repr of this simultaneity. """ return "<{}({} <<{}>>)>".format( type(self).__name__, str(self.start_offset), len(self.start_timespans) + len(self.overlap_timespans), )
### PUBLIC PROPERTIES ### @property def next_simultaneity(self): r""" Gets the next simultaneity in this simultaneity's timespan collection. """ tree = self._timespan_collection if tree is None: return None start_offset = tree.get_start_offset_after(self.start_offset) if start_offset is None: return None return tree.get_simultaneity_at(start_offset) @property def next_start_offset(self): r""" Gets the next simultaneity start offset in this simultaneity's timespan collection. """ tree = self._timespan_collection if tree is None: return None start_offset = tree.get_start_offset_after(self.start_offset) return start_offset @property def overlap_timespans(self): r""" Gets the timespans in this simultaneity which overlap this simultaneity's start offset. """ return self._overlap_timespans @property def previous_simultaneity(self): r""" Gets the previous simultaneity in this simultaneity's timespan collection. """ tree = self._timespan_collection if tree is None: return None start_offset = tree.get_start_offset_before(self.start_offset) if start_offset is None: return None return tree.get_simultaneity_at(start_offset) @property def previous_start_offset(self): r""" Gets the previous simultaneity start offset in this simultaneity's timespan collection. """ tree = self._timespan_collection if tree is None: return None start_offset = tree.get_start_offset_before(self.start_offset) return start_offset @property def start_offset(self): r""" Gets this simultaneity's start offset. """ return self._start_offset @property def start_timespans(self): r""" Gets the timespans in this simultaneity which start at this simultaneity's start offset. """ return self._start_timespans @property def stop_timespans(self): r""" Gets the timespans in this simultaneity which stop at this simultaneity's start offset. """ return self._stop_timespans @property def timespan_collection(self): r""" Gets this simultaneity's timespan collection. """ return self._timespan_collection