def set_line_breaks_by_line_duration_ge(
    expr,
    line_duration,
    line_break_class=None,
    add_empty_bars=False,
    ):
    r'''Iterate `line_break_class` instances in `expr` and 
    accumulate duration.

    Add line break after every total less than or equal to `line_duration`:

    ::

        >>> staff = Staff()
        >>> staff.append(Measure((2, 8), "c'8 d'8"))
        >>> staff.append(Measure((2, 8), "e'8 f'8"))
        >>> staff.append(Measure((2, 8), "g'8 a'8"))
        >>> staff.append(Measure((2, 8), "b'8 c''8"))
        >>> show(staff) # doctest: +SKIP

    ..  doctest::

        >>> print format(staff)
        \new Staff {
            {
                \time 2/8
                c'8
                d'8
            }
            {
                e'8
                f'8
            }
            {
                g'8
                a'8
            }
            {
                b'8
                c''8
            }
        }

    ::

        >>> layouttools.set_line_breaks_by_line_duration_ge(
        ...     staff, 
        ...     Duration(4, 8),
        ...     )
        >>> show(staff) # doctest: +SKIP

    ::

        >>> print format(staff)
        \new Staff {
            {
                \time 2/8
                c'8
                d'8
            }
            {
                e'8
                f'8
                \break
            }
            {
                g'8
                a'8
            }
            {
                b'8
                c''8
                \break
            }
        }

    When ``line_break_class=None`` set `line_break_class` to measure.
    '''
    from abjad.tools import layouttools

    if line_break_class is None:
        line_break_class = scoretools.Measure

    layouttools.set_line_breaks_by_line_duration(
        expr,
        line_duration,
        line_break_class,
        'prolated',
        add_empty_bars=add_empty_bars,
        )
Пример #2
0
def set_line_breaks_by_line_duration_ge(
    expr,
    line_duration,
    line_break_class=None,
    add_empty_bars=False,
):
    r'''Iterate `line_break_class` instances in `expr` and
    accumulate duration.

    Add line break after every total less than or equal to `line_duration`:

    ::

        >>> staff = Staff()
        >>> staff.append(Measure((2, 8), "c'8 d'8"))
        >>> staff.append(Measure((2, 8), "e'8 f'8"))
        >>> staff.append(Measure((2, 8), "g'8 a'8"))
        >>> staff.append(Measure((2, 8), "b'8 c''8"))
        >>> show(staff) # doctest: +SKIP

    ..  doctest::

        >>> print(format(staff))
        \new Staff {
            {
                \time 2/8
                c'8
                d'8
            }
            {
                e'8
                f'8
            }
            {
                g'8
                a'8
            }
            {
                b'8
                c''8
            }
        }

    ::

        >>> layouttools.set_line_breaks_by_line_duration_ge(
        ...     staff,
        ...     Duration(4, 8),
        ...     )
        >>> show(staff) # doctest: +SKIP

    ::

        >>> print(format(staff))
        \new Staff {
            {
                \time 2/8
                c'8
                d'8
            }
            {
                e'8
                f'8
                \break
            }
            {
                g'8
                a'8
            }
            {
                b'8
                c''8
                \break
            }
        }

    When ``line_break_class=None`` set `line_break_class` to measure.
    '''
    from abjad.tools import layouttools

    if line_break_class is None:
        line_break_class = scoretools.Measure

    layouttools.set_line_breaks_by_line_duration(
        expr,
        line_duration,
        line_break_class,
        'prolated',
        add_empty_bars=add_empty_bars,
    )
def set_line_breaks_cyclically_by_line_duration_ge(
    expr,
    line_duration,
    line_break_class=None,
    adjust_eol=False,
    add_empty_bars=False,
    ):
    r'''Iterate `line_break_class` instances in `expr` and 
    accumulate prolated duration.

    Add line break after every total less than or equal to `line_duration`:

    ::

        >>> staff = Staff()
        >>> staff.append(Measure((2, 8), "c'8 d'8"))
        >>> staff.append(Measure((2, 8), "e'8 f'8"))
        >>> staff.append(Measure((2, 8), "g'8 a'8"))
        >>> staff.append(Measure((2, 8), "b'8 c''8"))
        >>> show(staff) # doctest: +SKIP

    ..  doctest::

        >>> f(staff)
        \new Staff {
            {
                \time 2/8
                c'8
                d'8
            }
            {
                e'8
                f'8
            }
            {
                g'8
                a'8
            }
            {
                b'8
                c''8
            }
        }

    ::

        >>> layouttools.set_line_breaks_cyclically_by_line_duration_ge(
        ...     staff, 
        ...     Duration(4, 8),
        ...     )
        >>> show(staff) # doctest: +SKIP

    ::

        >>> f(staff)
        \new Staff {
            {
                \time 2/8
                c'8
                d'8
            }
            {
                e'8
                f'8
                \break
            }
            {
                g'8
                a'8
            }
            {
                b'8
                c''8
                \break
            }
        }

    When ``line_break_class=None`` set `line_break_class` to measure.

    Set `adjust_eol` to ``True`` to include a magic Scheme incantation
    to move end-of-line LilyPond TimeSignature and BarLine grobs to
    the right.
    '''
    from abjad.tools import layouttools

    if line_break_class is None:
        line_break_class = measuretools.Measure

    layouttools.set_line_breaks_by_line_duration(
        expr,
        line_duration,
        line_break_class,
        'prolated',
        adjust_eol=adjust_eol,
        add_empty_bars=add_empty_bars,
        )
def set_line_breaks_by_line_duration_in_seconds_ge(
    expr,
    line_duration,
    line_break_class=None,
    add_empty_bars=False,
    ):
    r'''Iterate `line_break_class` instances in `expr` and
    accumulate duration in seconds.

    Add line break after every total less than or equal to `line_duration`:

    ::

        >>> staff = Staff()
        >>> staff.append(Measure((2, 8), "c'8 d'8"))
        >>> staff.append(Measure((2, 8), "e'8 f'8"))
        >>> staff.append(Measure((2, 8), "g'8 a'8"))
        >>> staff.append(Measure((2, 8), "b'8 c''8"))
        >>> tempo = Tempo(Duration(1, 8), 44)
        >>> attach(tempo, staff, scope=Staff)
        >>> show(staff) # doctest: +SKIP

    ..  doctest::

        >>> print(format(staff))
        \new Staff {
            \tempo 8=44
            {
                \time 2/8
                c'8
                d'8
            }
            {
                e'8
                f'8
            }
            {
                g'8
                a'8
            }
            {
                b'8
                c''8
            }
        }

    ::

        >>> layouttools.set_line_breaks_by_line_duration_in_seconds_ge(
        ...     staff, Duration(6))
        >>> show(staff) # doctest: +SKIP

    ::

        >>> print(format(staff))
        \new Staff {
            \tempo 8=44
            {
                \time 2/8
                c'8
                d'8
            }
            {
                e'8
                f'8
                \break
            }
            {
                g'8
                a'8
            }
            {
                b'8
                c''8
            }
        }

    When ``line_break_class=None`` set `line_break_class` to measure.
    '''
    from abjad.tools import layouttools

    if line_break_class is None:
        line_break_class = scoretools.Measure

    layouttools.set_line_breaks_by_line_duration(
        expr,
        line_duration,
        line_break_class,
        'seconds',
        add_empty_bars=add_empty_bars,
        )