Beispiel #1
0
def test_selections_are_identical_14():
    container1 = abjad.Staff(r"c'4 d'4 e'4 f'4")
    container2 = abjad.Staff(r"c'4 d'4 e'4 f'4")
    abjad.piano_pedal(container1[:])
    abjad.piano_pedal(container2[:-2])
    selections = [container1[:], container2[:]]
    assert not abjad.inspect(selections).selections_are_identical()
Beispiel #2
0
def test_selections_are_identical_13():
    container1 = abjad.Staff(r"c'4 d'4 e'4 f'4")
    container2 = abjad.Staff(r"c'4 d'4 e'4 f'4")
    abjad.piano_pedal(container1[:])
    abjad.piano_pedal(container2[:])
    selections = [container1[:], container2[:]]
    assert auxjad.get.selections_are_identical(selections)
Beispiel #3
0
def test_piano_pedal_07():
    staff = abjad.Staff(r"c'4 d'4 e'4 f'4")
    abjad.piano_pedal(
        staff[:],
        until_the_end=True,
        omit_raise_pedal_glyph=True,
    )
    assert format(staff) == abjad.String.normalize(r"""
        \new Staff
        {
            \once \override Staff.SustainPedal.stencil =
                #(lambda (grob) (grob-interpret-markup grob
                    #{
                        \markup {
                            \concat {
                                \musicglyph "pedal.Ped"
                                \musicglyph "pedal.."
                            }
                            \raise #-0.3 "→"
                        }
                    #}))
            c'4
            \sustainOn
            d'4
            e'4
            \once \override Staff.SustainPedal.stencil = ##f
            f'4
            \sustainOff
        }
        """)
Beispiel #4
0
def test_piano_pedal_15():
    staff = abjad.Staff(r"c'4 d'4 e'4 f'4")
    abjad.piano_pedal(staff[:])
    assert abjad.lilypond(staff) == abjad.String.normalize(r"""
        \new Staff
        {
            c'4
            \sustainOn
            d'4
            e'4
            f'4
            \sustainOff
        }
        """)
Beispiel #5
0
def half_piano_pedal(
    argument: Union[abjad.Component, abjad.Selection],
    *,
    until_the_end: bool = False,
    omit_raise_pedal_glyph: bool = False,
    selector: abjad.Expression = abjad.select().leaves(),
    start_piano_pedal: abjad.StartPianoPedal = None,
    stop_piano_pedal: abjad.StopPianoPedal = None,
    tag: abjad.Tag = None,
) -> None:
    r"""Attaches half piano pedal indicators. Derived from Abjad's built-in
    |abjad.piano_pedal()|.

    Basic usage:
        Usage is very similar to |abjad.piano_pedal()|:

        >>> staff = abjad.Staff(r"c'4 d'4 e'4 f'4")
        >>> auxjad.half_piano_pedal(staff[:])
        >>> abjad.f(staff)
        \new Staff
        {
            \once \override Staff.SustainPedal.stencil =
                #(lambda (grob) (grob-interpret-markup grob
                    #{
                        \markup {
                            \larger "½"
                            \concat {
                                \musicglyph "pedal.Ped"
                                \musicglyph "pedal.."
                            }
                        }
                    #}))
            c'4
            \sustainOn
            d'4
            e'4
            f'4
            \sustainOff
        }

        .. figure:: ../_images/half_piano_pedal-KaleXflNvL.png

    .. note::

        Auxjad automatically adds this function to the :mod:`abjad` namespace.
        Therefore it can be used either as :func:`auxjad.half_piano_pedal()` or
        |abjad.half_piano_pedal()|, as shown below:

        >>> staff1 = abjad.Staff(r"c'4 d'4 e'4 f'4")
        >>> staff2 = abjad.Staff(r"c'4 d'4 e'4 f'4")
        >>> auxjad.half_piano_pedal(staff1[:])
        >>> abjad.half_piano_pedal(staff2[:])
        >>> selections = [staff1[:], staff2[:]]
        >>> auxjad.inspect(selections).selections_are_identical()
        True

    ``until_the_end``:
        Call the function with ``until_the_end`` set to ``True`` to add an
        arrow to the initial pedal glyph:

        >>> staff = abjad.Staff(r"c'4 d'4 e'4 f'4")
        >>> auxjad.half_piano_pedal(staff[:],
        ...                         until_the_end=True,
        ...                         )
        >>> abjad.f(staff)
        \new Staff
        {
            \once \override Staff.SustainPedal.stencil =
                #(lambda (grob) (grob-interpret-markup grob
                    #{
                        \markup {
                            \larger "½"
                            \concat {
                                \musicglyph "pedal.Ped"
                                \musicglyph "pedal.."
                            }
                            \raise #-0.3 "→"
                        }
                    #}))
            c'4
            \sustainOn
            d'4
            e'4
            f'4
            \sustainOff
        }

        .. figure:: ../_images/half_piano_pedal-rA7ZHeMrjf.png

    ``omit_raise_pedal_glyph``:
        Call the function with ``omit_raise_pedal_glyph`` set to ``False`` to
        remove the raise pedal glyph:

        >>> staff = abjad.Staff(r"c'4 d'4 e'4 f'4")
        >>> auxjad.half_piano_pedal(staff[:],
        ...                         omit_raise_pedal_glyph=True,
        ...                         )
        >>> abjad.f(staff)
        \new Staff
        {
            \once \override Staff.SustainPedal.stencil =
                #(lambda (grob) (grob-interpret-markup grob
                    #{
                        \markup {
                            \larger "½"
                            \concat {
                                \musicglyph "pedal.Ped"
                                \musicglyph "pedal.."
                            }
                        }
                    #}))
            c'4
            \sustainOn
            d'4
            e'4
            \once \override Staff.SustainPedal.stencil = ##f
            f'4
            \sustainOff
        }

        .. figure:: ../_images/half_piano_pedal-p8S1KwHLIx.png

        Combined with ``until_the_end=True``:

        >>> staff = abjad.Staff(r"c'4 d'4 e'4 f'4")
        >>> auxjad.half_piano_pedal(staff[:],
        ...                         until_the_end=True,
        ...                         omit_raise_pedal_glyph=True,
        ...                         )
        >>> abjad.f(staff)
        \new Staff
        {
            \once \override Staff.SustainPedal.stencil =
                #(lambda (grob) (grob-interpret-markup grob
                    #{
                        \markup {
                            \larger "½"
                            \concat {
                                \musicglyph "pedal.Ped"
                                \musicglyph "pedal.."
                            }
                            \raise #-0.3 "→"
                        }
                    #}))
            c'4
            \sustainOn
            d'4
            e'4
            \once \override Staff.SustainPedal.stencil = ##f
            f'4
            \sustainOff
        }

        .. figure:: ../_images/half_piano_pedal-Fb5rE6QB1f.png

    Pedal style:
        The style of the sustain pedal can be tweaked using |abjad.setting()|
        as shown below:

        >>> staff = abjad.Staff(r"c'4 d'4 e'4 f'4")
        >>> auxjad.half_piano_pedal(staff[:])
        >>> abjad.setting(staff).pedal_sustain_style = "#'mixed"
        >>> abjad.f(staff)
        \new Staff
        \with
        {
            pedalSustainStyle = #'mixed
        }
        {
            \once \override Staff.SustainPedal.stencil =
                #(lambda (grob) (grob-interpret-markup grob
                    #{
                        \markup {
                            \larger "½"
                            \concat {
                                \musicglyph "pedal.Ped"
                                \musicglyph "pedal.."
                            }
                        }
                    #}))
            c'4
            \sustainOn
            d'4
            e'4
            f'4
            \sustainOff
        }

        .. figure:: ../_images/half_piano_pedal-6q9Swb2elq.png

        This tweak also works with ``until_the_end=True`` if desired:

        >>> staff = abjad.Staff(r"c'4 d'4 e'4 f'4")
        >>> auxjad.half_piano_pedal(staff[:],
        ...                         until_the_end=True,
        ...                         )
        >>> abjad.setting(staff).pedal_sustain_style = "#'mixed"
        >>> abjad.f(staff)
        \new Staff
        \with
        {
            pedalSustainStyle = #'mixed
        }
        {
            \new Staff
            {
                \once \override Staff.SustainPedal.stencil =
                    #(lambda (grob) (grob-interpret-markup grob
                        #{
                            \markup {
                                \larger "½"
                                \concat {
                                    \musicglyph "pedal.Ped"
                                    \musicglyph "pedal.."
                                }
                                \raise #-0.3 "→"
                            }
                        #}))
            c'4
            \sustainOn
            d'4
            e'4
            f'4
            \sustainOff
        }

        .. figure:: ../_images/half_piano_pedal-cYyRwFvnFH.png
    """
    assert isinstance(selector, abjad.Expression)
    argument = selector(argument)
    leaves = abjad.Selection(argument).leaves()
    start_leaf = leaves[0]
    stop_leaf = leaves[-1]
    if not until_the_end:
        string = r"""
            \once \override Staff.SustainPedal.stencil =
                #(lambda (grob) (grob-interpret-markup grob
                    #{
                        \markup {
                            \larger "½"
                            \concat {
                                \musicglyph "pedal.Ped"
                                \musicglyph "pedal.."
                            }
                        }
                    #}))
            """
    else:
        string = r"""
            \once \override Staff.SustainPedal.stencil =
                #(lambda (grob) (grob-interpret-markup grob
                    #{
                        \markup {
                            \larger "½"
                            \concat {
                                \musicglyph "pedal.Ped"
                                \musicglyph "pedal.."
                            }
                            \raise #-0.3 "→"
                        }
                    #}))
            """
    string = dedent(string).strip()
    half_pedal_tweak = abjad.LilyPondLiteral(string)
    abjad.attach(half_pedal_tweak, start_leaf)
    if omit_raise_pedal_glyph:
        omit_raise_pedal_glyph_tweak = abjad.LilyPondLiteral(
            r"\once \override Staff.SustainPedal.stencil = ##f")
        abjad.attach(omit_raise_pedal_glyph_tweak, stop_leaf)
    abjad.piano_pedal(
        argument=argument,
        selector=selector,
        start_piano_pedal=start_piano_pedal,
        stop_piano_pedal=stop_piano_pedal,
        tag=tag,
    )