Beispiel #1
0
def timespan_2_contains_timespan_1_improperly(
    timespan_1=None,
    timespan_2=None,
    hold=False,
    ):
    r"""
    Makes time relation indicating that ``timespan_2`` contains
    ``timespan_1`` improperly.

    ..  container:: example

        >>> relation = abjad.timespans.timespan_2_contains_timespan_1_improperly()
        >>> abjad.f(relation)
        abjad.timespans.TimespanTimespanTimeRelation(
            inequality=abjad.timespans.CompoundInequality(
                [
                    abjad.TimespanInequality('timespan_2.start_offset <= timespan_1.start_offset'),
                    abjad.TimespanInequality('timespan_1.stop_offset <= timespan_2.stop_offset'),
                    ],
                logical_operator='and',
                ),
            )

    ..  container:: example

        >>> staff = abjad.Staff(
        ...     r"c'8. \p \< fs'16 a'4 af'8 \f \> g'8 ~ g'16 f' e' ef' \p",
        ...     )
        >>> timespan_1 = abjad.Timespan((1, 4), (3, 8))
        >>> abjad.show(staff) # doctest: +SKIP

        >>> offset_lists = staff[:]._get_offset_lists()
        >>> time_relation = abjad.timespans.timespan_2_contains_timespan_1_improperly(timespan_1=timespan_1)
        >>> start_index, stop_index = time_relation.get_offset_indices(*offset_lists)
        >>> selected_notes = staff[start_index:stop_index]
        >>> selected_notes
        Selection([Note("a'4")])

        >>> abjad.label(selected_notes).color_leaves('red')
        >>> abjad.show(staff) # doctest: +SKIP

    Returns time relation or boolean.
    """
    from abjad import timespans

    inequality = timespans.CompoundInequality([
        'timespan_2.start_offset <= timespan_1.start_offset',
        'timespan_1.stop_offset <= timespan_2.stop_offset',
        ])

    time_relation = timespans.TimespanTimespanTimeRelation(
        inequality,
        timespan_1=timespan_1,
        timespan_2=timespan_2,
        )

    if time_relation.is_fully_loaded and not hold:
        return time_relation()
    else:
        return time_relation
def offset_happens_when_timespan_stops(timespan=None, offset=None, hold=False):
    """
    Makes time relation indicating that ``offset`` happens
    when ``timespan`` stops.

    ..  container:: example

        >>> relation = abjad.timespans.offset_happens_when_timespan_stops()
        >>> abjad.f(relation)
        abjad.timespans.OffsetTimespanTimeRelation(
            inequality=abjad.timespans.CompoundInequality(
                [
                    abjad.TimespanInequality('offset == timespan.stop'),
                    ],
                logical_operator='and',
                ),
            )

    Returns time relation or boolean.
    """
    from abjad import timespans

    inequality = timespans.CompoundInequality([
        'offset == timespan.stop',
    ])

    time_relation = timespans.OffsetTimespanTimeRelation(inequality,
                                                         timespan=timespan,
                                                         offset=offset)

    if time_relation.is_fully_loaded and not hold:
        return time_relation()
    else:
        return time_relation
Beispiel #3
0
 def __init__(self, inequality=None):
     from abjad import timespans
     if not inequality:
         inequality = timespans.CompoundInequality([
             'timespan_1.start_offset < timespan_2.start_offset',
             ])
     assert isinstance(
         inequality, timespans.CompoundInequality), repr(inequality)
     self._inequality = inequality
def timespan_2_happens_during_timespan_1(
    timespan_1=None,
    timespan_2=None,
    hold=False,
):
    """
    Makes time relation indicating that ``timespan_2`` happens during
    ``timespan_1``.

    ..  container:: example

        >>> relation = abjad.timespans.timespan_2_happens_during_timespan_1()
        >>> abjad.f(relation)
        abjad.timespans.TimespanTimespanTimeRelation(
            inequality=abjad.timespans.CompoundInequality(
                [
                    abjad.TimespanInequality('timespan_1.start_offset <= timespan_2.start_offset'),
                    abjad.TimespanInequality('timespan_2.stop_offset <= timespan_1.stop_offset'),
                    ],
                logical_operator='and',
                ),
            )

    ..  container:: example

        Evaluates whether timespan ``[7/8, 8/8)`` happens during timespan
        ``[1/2, 3/2)``:

        >>> timespan_1 = abjad.Timespan((1, 2), (3, 2))
        >>> timespan_2 = abjad.Timespan((7, 8), (8, 8))
        >>> abjad.timespans.timespan_2_happens_during_timespan_1(
        ...     timespan_1=timespan_1,
        ...     timespan_2=timespan_2,
        ...     )
        True

    Returns time relation or boolean.
    """
    from abjad import timespans

    inequality = timespans.CompoundInequality([
        'timespan_1.start_offset <= timespan_2.start_offset',
        'timespan_2.stop_offset <= timespan_1.stop_offset',
    ])

    time_relation = timespans.TimespanTimespanTimeRelation(
        inequality,
        timespan_1=timespan_1,
        timespan_2=timespan_2,
    )

    if time_relation.is_fully_loaded and not hold:
        return time_relation()
    else:
        return time_relation
Beispiel #5
0
def timespan_2_overlaps_only_stop_of_timespan_1(
    timespan_1=None,
    timespan_2=None,
    hold=False,
):
    """
    Makes time relation indicating that ``timespan_2`` overlaps
    only stop of  ``timespan_1``.

    ..  container:: example

        >>> relation = abjad.timespans.timespan_2_overlaps_only_stop_of_timespan_1()
        >>> abjad.f(relation)
        abjad.timespans.TimespanTimespanTimeRelation(
            inequality=abjad.timespans.CompoundInequality(
                [
                    abjad.TimespanInequality('timespan_1.start_offset <= timespan_2.start_offset'),
                    abjad.TimespanInequality('timespan_2.start_offset < timespan_1.stop_offset'),
                    abjad.TimespanInequality('timespan_1.stop_offset < timespan_2.stop_offset'),
                    ],
                logical_operator='and',
                ),
            )

    Returns time relation or boolean.
    """
    from abjad import timespans

    inequality = timespans.CompoundInequality([
        'timespan_1.start_offset <= timespan_2.start_offset',
        'timespan_2.start_offset < timespan_1.stop_offset',
        'timespan_1.stop_offset < timespan_2.stop_offset',
    ])

    time_relation = timespans.TimespanTimespanTimeRelation(
        inequality,
        timespan_1=timespan_1,
        timespan_2=timespan_2,
    )

    if time_relation.is_fully_loaded and not hold:
        return time_relation()
    else:
        return time_relation
def timespan_2_stops_when_timespan_1_stops(
    timespan_1=None,
    timespan_2=None,
    hold=False,
):
    """
    Makes time relation indicating that ``timespan_2`` happens
    during ``timespan_1``.

    ..  container:: example

        >>> inequality = abjad.timespans.timespan_2_stops_when_timespan_1_stops()
        >>> abjad.f(inequality)
        abjad.timespans.TimespanTimespanTimeRelation(
            inequality=abjad.timespans.CompoundInequality(
                [
                    abjad.TimespanInequality('timespan_2.stop_offset == timespan_1.stop_offset'),
                    ],
                logical_operator='and',
                ),
            )

    Returns time relation or boolean.
    """
    from abjad import timespans

    inequality = timespans.CompoundInequality([
        'timespan_2.stop_offset == timespan_1.stop_offset',
    ])

    time_relation = timespans.TimespanTimespanTimeRelation(
        inequality,
        timespan_1=timespan_1,
        timespan_2=timespan_2,
    )

    if time_relation.is_fully_loaded and not hold:
        return time_relation()
    else:
        return time_relation
Beispiel #7
0
def timespan_2_starts_during_timespan_1(
    timespan_1=None,
    timespan_2=None,
    hold=False,
):
    """
    Makes time relation indicating that ``timespan_2`` starts
    during ``timespan_1``.

    ..  container:: example

        >>> relation = abjad.timespans.timespan_2_starts_during_timespan_1()
        >>> abjad.f(relation)
        abjad.timespans.TimespanTimespanTimeRelation(
            inequality=abjad.timespans.CompoundInequality(
                [
                    abjad.TimespanInequality('timespan_1.start_offset <= timespan_2.start_offset'),
                    abjad.TimespanInequality('timespan_2.start_offset < timespan_1.stop_offset'),
                    ],
                logical_operator='and',
                ),
            )

    ..  container:: example

        >>> staff_1 = abjad.Staff("c'4 d'4 e'4 f'4 g'2 c''2")
        >>> staff_2 = abjad.Staff("c'2 b'2 a'2 g'2")
        >>> score = abjad.Score([staff_1, staff_2])
        >>> abjad.show(score) # doctest: +SKIP

        >>> start_offsets = [
        ...     abjad.inspect(note).timespan().start_offset
        ...     for note in staff_1
        ...     ]
        >>> stop_offsets = [
        ...     abjad.inspect(note).timespan().stop_offset
        ...     for note in staff_1
        ...     ]

        >>> timespan_1 = abjad.Timespan((1, 4), (5, 4))
        >>> time_relation = abjad.timespans.timespan_2_starts_during_timespan_1(
        ...     timespan_1=timespan_1)
        >>> start_index, stop_index = time_relation.get_offset_indices(
        ...     start_offsets, stop_offsets)

        >>> selected_notes = staff_1[start_index:stop_index]
        >>> selected_notes
        Selection([Note("d'4"), Note("e'4"), Note("f'4"), Note("g'2")])

        >>> abjad.label(selected_notes).color_leaves('red')

        >>> abjad.show(score) # doctest: +SKIP

    Returns time relation or boolean.
    """
    from abjad import timespans

    inequality = timespans.CompoundInequality([
        'timespan_1.start_offset <= timespan_2.start_offset',
        'timespan_2.start_offset < timespan_1.stop_offset',
    ])

    time_relation = timespans.TimespanTimespanTimeRelation(
        inequality,
        timespan_1=timespan_1,
        timespan_2=timespan_2,
    )

    if time_relation.is_fully_loaded and not hold:
        return time_relation()
    else:
        return time_relation
Beispiel #8
0
def offset_happens_before_timespan_starts(
    timespan=None,
    offset=None,
    hold=False,
):
    """
    Makes time relation indicating that ``offset`` happens before ``timespan``
    starts.

    ..  container:: example

        Makes time relation indicating that ``offset`` happens before ``timespan``
        starts:

        >>> relation = abjad.timespans.offset_happens_before_timespan_starts()
        >>> abjad.f(relation)
        abjad.timespans.OffsetTimespanTimeRelation(
            inequality=abjad.timespans.CompoundInequality(
                [
                    abjad.TimespanInequality('offset < timespan.start'),
                    ],
                logical_operator='and',
                ),
            )

    ..  container:: example

        Makes time relation indicating that offset ``1/2`` happens before
        ``timespan`` starts:

        >>> offset = abjad.Offset(1, 2)

        >>> relation = abjad.timespans.offset_happens_before_timespan_starts(
        ...     offset=offset)

        >>> abjad.f(relation)
        abjad.timespans.OffsetTimespanTimeRelation(
            inequality=abjad.timespans.CompoundInequality(
                [
                    abjad.TimespanInequality('offset < timespan.start'),
                    ],
                logical_operator='and',
                ),
            offset=abjad.Offset(1, 2),
            )

    ..  container:: example

        Makes time relation indicating that ``offset`` happens before timespan
        ``[2, 8)`` starts:

        >>> timespan = abjad.Timespan(2, 8)

        >>> relation = abjad.timespans.offset_happens_before_timespan_starts(
        ...     timespan=timespan)

        >>> abjad.f(relation)
        abjad.timespans.OffsetTimespanTimeRelation(
            inequality=abjad.timespans.CompoundInequality(
                [
                    abjad.TimespanInequality('offset < timespan.start'),
                    ],
                logical_operator='and',
                ),
            timespan=abjad.Timespan(
                start_offset=abjad.Offset(2, 1),
                stop_offset=abjad.Offset(8, 1),
                ),
            )

    ..  container:: example

        Makes time relation indicating that offset ``1/2`` happens before
        timespan ``[2, 8)`` starts:

        >>> relation = abjad.timespans.offset_happens_before_timespan_starts(
        ...     timespan=timespan,
        ...     offset=offset,
        ...     hold=True,
        ...     )

        >>> abjad.f(relation)
        abjad.timespans.OffsetTimespanTimeRelation(
            inequality=abjad.timespans.CompoundInequality(
                [
                    abjad.TimespanInequality('offset < timespan.start'),
                    ],
                logical_operator='and',
                ),
            timespan=abjad.Timespan(
                start_offset=abjad.Offset(2, 1),
                stop_offset=abjad.Offset(8, 1),
                ),
            offset=abjad.Offset(1, 2),
            )

    ..  container:: example

        Evaluates time relation indicating that offset ``1/2`` happens before
        timespan ``[2, 8)`` starts:

        >>> abjad.timespans.offset_happens_before_timespan_starts(
        ...     timespan=timespan,
        ...     offset=offset,
        ...     hold=False,
        ...     )
        True

    Returns time relation or boolean.
    """
    from abjad import timespans

    inequality = timespans.CompoundInequality([
        'offset < timespan.start',
    ])

    time_relation = timespans.OffsetTimespanTimeRelation(inequality,
                                                         timespan=timespan,
                                                         offset=offset)

    if time_relation.is_fully_loaded and not hold:
        return time_relation()
    else:
        return time_relation