TimespanCollection

digraph InheritanceGraph { graph [bgcolor=transparent, color=lightsteelblue2, fontname=Arial, fontsize=10, outputorder=edgesfirst, overlap=prism, penwidth=2, rankdir=LR, splines=spline, style="dashed, rounded", truecolor=true]; node [colorscheme=pastel19, fontname=Arial, fontsize=10, height=0, penwidth=2, shape=box, style="filled, rounded", width=0]; edge [color=lightslategrey, penwidth=1]; subgraph cluster_builtins { graph [label=builtins]; node [color=1]; "builtins.object" [URL="https://docs.python.org/3.7/library/functions.html#object", label=object, target=_top]; } subgraph "cluster_evans.consort" { graph [label="evans.consort"]; node [color=2]; "evans.consort.AbjadObject.AbjadObject" [URL="../api/evans/consort/AbjadObject.html#evans.consort.AbjadObject.AbjadObject", label="Abjad\nObject", target=_top]; "evans.consort.TimespanCollection.TimespanCollection" [URL="../api/evans/consort/TimespanCollection.html#evans.consort.TimespanCollection.TimespanCollection", color=black, fontcolor=white, label="Timespan\nCollection", target=_top]; "evans.consort.AbjadObject.AbjadObject" -> "evans.consort.TimespanCollection.TimespanCollection"; } "builtins.object" -> "evans.consort.AbjadObject.AbjadObject"; }

class evans.consort.TimespanCollection.TimespanCollection(timespans=None)[source]

A mutable always-sorted collection of timespans.

>>> timespans = (
...     abjad.Timespan(0, 3),
...     abjad.Timespan(1, 3),
...     abjad.Timespan(1, 2),
...     abjad.Timespan(2, 5),
...     abjad.Timespan(6, 9),
... )
>>> timespan_collection = evans.TimespanCollection(timespans)

Attributes Summary

__contains__

Is true if this timespan collection contains timespan.

__getitem__

Gets timespan at index i.

__iter__

Iterates timespans in this timespan collection.

__len__

Gets length of this timespan collection.

__setitem__

Sets timespans at index i to new.

__sub__

Delete material that intersects timespan:

all_offsets

all_start_offsets

all_stop_offsets

earliest_start_offset

earliest_stop_offset

find_timespans_intersecting_timespan

Finds timespans overlapping timespan.

find_timespans_overlapping_offset

Finds timespans overlapping offset.

find_timespans_starting_at

find_timespans_stopping_at

get_simultaneity_at

Gets simultaneity at offset.

get_start_offset_after

Gets start offst in this timespan collection after offset.

get_start_offset_before

Gets start offst in this timespan collection before offset.

index

insert

Inserts timespans into this timespan collection.

iterate_simultaneities

Iterates simultaneities in this timespan collection.

iterate_simultaneities_nwise

Iterates simultaneities in this timespan collection in groups of n.

latest_start_offset

latest_stop_offset

remove

Removes timespans from this timespan collection.

start_offset

stop_offset


Special methods

__contains__(timespan)[source]

Is true if this timespan collection contains timespan. Otherwise false.

>>> timespans = (
...     abjad.Timespan(0, 3),
...     abjad.Timespan(1, 3),
...     abjad.Timespan(1, 2),
...     abjad.Timespan(2, 5),
...     abjad.Timespan(6, 9),
... )
>>> timespan_collection = evans.TimespanCollection(timespans)
>>> timespans[0] in timespan_collection
True
>>> abjad.Timespan(-1, 100) in timespan_collection
False

Returns boolean.

(AbjadObject).__eq__(argument)

Is true when ID of argument equals ID of Abjad object. Otherwise false. Returns true or false.

(AbjadObject).__format__(format_specification='')

Formats Abjad object. Set format_specification to ‘’ or ‘storage’. Interprets ‘’ equal to ‘storage’. Returns string.

__getitem__(i)[source]

Gets timespan at index i.

>>> timespans = (
...     abjad.Timespan(0, 3),
...     abjad.Timespan(1, 3),
...     abjad.Timespan(1, 2),
...     abjad.Timespan(2, 5),
...     abjad.Timespan(6, 9),
... )
>>> timespan_collection = evans.TimespanCollection(timespans)
>>> timespan_collection[-1]
Timespan(Offset((6, 1)), Offset((9, 1)))
>>> for timespan in timespan_collection[:3]:
...     timespan
... 
Timespan(Offset((0, 1)), Offset((3, 1)))
Timespan(Offset((1, 1)), Offset((2, 1)))
Timespan(Offset((1, 1)), Offset((3, 1)))

Returns timespan or timespans.

(AbjadObject).__hash__()

Hashes Abjad object. Required to be explicitly redefined on Python 3 if __eq__ changes. Returns integer.

__iter__()[source]

Iterates timespans in this timespan collection.

>>> timespans = (
...     abjad.Timespan(0, 3),
...     abjad.Timespan(1, 3),
...     abjad.Timespan(1, 2),
...     abjad.Timespan(2, 5),
...     abjad.Timespan(6, 9),
... )
>>> timespan_collection = evans.TimespanCollection(timespans)
>>> for timespan in timespan_collection:
...     timespan
... 
Timespan(Offset((0, 1)), Offset((3, 1)))
Timespan(Offset((1, 1)), Offset((2, 1)))
Timespan(Offset((1, 1)), Offset((3, 1)))
Timespan(Offset((2, 1)), Offset((5, 1)))
Timespan(Offset((6, 1)), Offset((9, 1)))

Returns generator.

__len__()[source]

Gets length of this timespan collection.

>>> timespans = (
...     abjad.Timespan(0, 3),
...     abjad.Timespan(1, 3),
...     abjad.Timespan(1, 2),
...     abjad.Timespan(2, 5),
...     abjad.Timespan(6, 9),
... )
>>> timespan_collection = evans.TimespanCollection(timespans)
>>> len(timespan_collection)
5

Returns integer.

(AbjadObject).__ne__(argument)

Is true when Abjad object does not equal argument. Otherwise false. Returns true or false.

(AbjadObject).__repr__()

Gets interpreter representation of Abjad object. Returns string.

__setitem__(i, new)[source]

Sets timespans at index i to new.

>>> timespans = (
...     abjad.Timespan(0, 3),
...     abjad.Timespan(1, 3),
...     abjad.Timespan(1, 2),
...     abjad.Timespan(2, 5),
...     abjad.Timespan(6, 9),
... )
>>> timespan_collection = evans.TimespanCollection(timespans)
>>> timespan_collection[:3] = [abjad.Timespan(100, 200)]

Returns none.

(AbjadObject).__str__()

Return str(self).

__sub__(timespan)[source]

Delete material that intersects timespan:

>>> timespan_collection = evans.TimespanCollection(
...     [
...         abjad.Timespan(0, 16),
...         abjad.Timespan(5, 12),
...         abjad.Timespan(-2, 8),
...     ]
... )
>>> timespan = abjad.Timespan(5, 10)
>>> result = timespan_collection - timespan
>>> print(abjad.storage(timespan_collection))
evans.TimespanCollection(
    [
        abjad.Timespan(
            start_offset=abjad.Offset((-2, 1)),
            stop_offset=abjad.Offset((5, 1)),
            ),
        abjad.Timespan(
            start_offset=abjad.Offset((0, 1)),
            stop_offset=abjad.Offset((5, 1)),
            ),
        abjad.Timespan(
            start_offset=abjad.Offset((10, 1)),
            stop_offset=abjad.Offset((12, 1)),
            ),
        abjad.Timespan(
            start_offset=abjad.Offset((10, 1)),
            stop_offset=abjad.Offset((16, 1)),
            ),
        ]
    )

Operates in place and returns timespan collection.


Methods

find_timespans_intersecting_timespan(timespan)[source]

Finds timespans overlapping timespan.

>>> timespans = (
...     abjad.Timespan(0, 3),
...     abjad.Timespan(1, 3),
...     abjad.Timespan(1, 2),
...     abjad.Timespan(2, 5),
...     abjad.Timespan(6, 9),
... )
>>> timespan_collection = evans.TimespanCollection(timespans)
>>> timespan = abjad.Timespan(2, 4)
>>> for x in timespan_collection.find_timespans_intersecting_timespan(timespan):
...     x
... 
Timespan(Offset((0, 1)), Offset((3, 1)))
Timespan(Offset((1, 1)), Offset((3, 1)))
Timespan(Offset((2, 1)), Offset((5, 1)))

Returns tuple of 0 or more timespans.

find_timespans_overlapping_offset(offset)[source]

Finds timespans overlapping offset.

>>> timespans = (
...     abjad.Timespan(0, 3),
...     abjad.Timespan(1, 3),
...     abjad.Timespan(1, 2),
...     abjad.Timespan(2, 5),
...     abjad.Timespan(6, 9),
... )
>>> timespan_collection = evans.TimespanCollection(timespans)
>>> for x in timespan_collection.find_timespans_overlapping_offset(1.5):
...     x
... 
Timespan(Offset((0, 1)), Offset((3, 1)))
Timespan(Offset((1, 1)), Offset((2, 1)))
Timespan(Offset((1, 1)), Offset((3, 1)))

Returns tuple of 0 or more timespans.

find_timespans_starting_at(offset)[source]
find_timespans_stopping_at(offset)[source]
get_simultaneity_at(offset)[source]

Gets simultaneity at offset.

>>> timespans = (
...     abjad.Timespan(0, 3),
...     abjad.Timespan(1, 3),
...     abjad.Timespan(1, 2),
...     abjad.Timespan(2, 5),
...     abjad.Timespan(6, 9),
... )
>>> timespan_collection = evans.TimespanCollection(timespans)
>>> timespan_collection.get_simultaneity_at(1)
<TimespanSimultaneity(1 <<3>>)>
>>> timespan_collection.get_simultaneity_at(6.5)
<TimespanSimultaneity(6.5 <<1>>)>
get_start_offset_after(offset)[source]

Gets start offst in this timespan collection after offset.

>>> timespans = (
...     abjad.Timespan(0, 3),
...     abjad.Timespan(1, 3),
...     abjad.Timespan(1, 2),
...     abjad.Timespan(2, 5),
...     abjad.Timespan(6, 9),
... )
>>> timespan_collection = evans.TimespanCollection(timespans)
>>> timespan_collection.get_start_offset_after(-1)
Offset((0, 1))
>>> timespan_collection.get_start_offset_after(0)
Offset((1, 1))
>>> timespan_collection.get_start_offset_after(1)
Offset((2, 1))
>>> timespan_collection.get_start_offset_after(2)
Offset((6, 1))
>>> timespan_collection.get_start_offset_after(6) is None
True
get_start_offset_before(offset)[source]

Gets start offst in this timespan collection before offset.

>>> timespans = (
...     abjad.Timespan(0, 3),
...     abjad.Timespan(1, 3),
...     abjad.Timespan(1, 2),
...     abjad.Timespan(2, 5),
...     abjad.Timespan(6, 9),
... )
>>> timespan_collection = evans.TimespanCollection(timespans)
>>> timespan_collection.get_start_offset_before(7)
Offset((6, 1))
>>> timespan_collection.get_start_offset_before(6)
Offset((2, 1))
>>> timespan_collection.get_start_offset_before(2)
Offset((1, 1))
>>> timespan_collection.get_start_offset_before(1)
Offset((0, 1))
>>> timespan_collection.get_start_offset_before(0) is None
True
index(timespan)[source]
insert(timespans)[source]

Inserts timespans into this timespan collection.

>>> timespan_collection = evans.TimespanCollection()
>>> timespan_collection.insert(abjad.Timespan(1, 3))
>>> timespan_collection.insert(
...     (
...         abjad.Timespan(0, 4),
...         abjad.Timespan(2, 6),
...     )
... )
>>> for x in timespan_collection:
...     x
... 
Timespan(Offset((0, 1)), Offset((4, 1)))
Timespan(Offset((1, 1)), Offset((3, 1)))
Timespan(Offset((2, 1)), Offset((6, 1)))

timespans may be a single timespan or an iterable of timespans.

Returns none.

iterate_simultaneities(reverse=False)[source]

Iterates simultaneities in this timespan collection.

>>> timespans = (
...     abjad.Timespan(0, 3),
...     abjad.Timespan(1, 3),
...     abjad.Timespan(1, 2),
...     abjad.Timespan(2, 5),
...     abjad.Timespan(6, 9),
... )
>>> timespan_collection = evans.TimespanCollection(timespans)
>>> for x in timespan_collection.iterate_simultaneities():
...     x
... 
<TimespanSimultaneity(0 <<1>>)>
<TimespanSimultaneity(1 <<3>>)>
<TimespanSimultaneity(2 <<3>>)>
<TimespanSimultaneity(6 <<1>>)>
>>> for x in timespan_collection.iterate_simultaneities(reverse=True):
...     x
... 
<TimespanSimultaneity(6 <<1>>)>
<TimespanSimultaneity(2 <<3>>)>
<TimespanSimultaneity(1 <<3>>)>
<TimespanSimultaneity(0 <<1>>)>

Returns generator.

iterate_simultaneities_nwise(n=3, reverse=False)[source]

Iterates simultaneities in this timespan collection in groups of n.

>>> timespans = (
...     abjad.Timespan(0, 3),
...     abjad.Timespan(1, 3),
...     abjad.Timespan(1, 2),
...     abjad.Timespan(2, 5),
...     abjad.Timespan(6, 9),
... )
>>> timespan_collection = evans.TimespanCollection(timespans)
>>> for x in timespan_collection.iterate_simultaneities_nwise(n=2):
...     x
... 
(<TimespanSimultaneity(0 <<1>>)>, <TimespanSimultaneity(1 <<3>>)>)
(<TimespanSimultaneity(1 <<3>>)>, <TimespanSimultaneity(2 <<3>>)>)
(<TimespanSimultaneity(2 <<3>>)>, <TimespanSimultaneity(6 <<1>>)>)
>>> for x in timespan_collection.iterate_simultaneities_nwise(n=2, reverse=True):
...     x
... 
(<TimespanSimultaneity(2 <<3>>)>, <TimespanSimultaneity(6 <<1>>)>)
(<TimespanSimultaneity(1 <<3>>)>, <TimespanSimultaneity(2 <<3>>)>)
(<TimespanSimultaneity(0 <<1>>)>, <TimespanSimultaneity(1 <<3>>)>)

Returns generator.

remove(timespans)[source]

Removes timespans from this timespan collection.

>>> timespans = (
...     abjad.Timespan(0, 3),
...     abjad.Timespan(1, 3),
...     abjad.Timespan(1, 2),
...     abjad.Timespan(2, 5),
...     abjad.Timespan(6, 9),
... )
>>> timespan_collection = evans.TimespanCollection(timespans)
>>> timespan_collection.remove(timespans[1:-1])
>>> for timespan in timespan_collection:
...     timespan
... 
Timespan(Offset((0, 1)), Offset((3, 1)))
Timespan(Offset((6, 1)), Offset((9, 1)))

Read-only properties

all_offsets
all_start_offsets
all_stop_offsets
earliest_start_offset
earliest_stop_offset
latest_start_offset
latest_stop_offset
start_offset
stop_offset