def test_mutate__split_leaf_by_durations_07():
    """
    After grace notes are removed from first split leaf.
    """

    note = abjad.Note("c'4")
    after_grace = abjad.AfterGraceContainer([abjad.Note(0, (1, 32))])
    abjad.attach(after_grace, note)

    new_leaves = abjad.mutate._split_leaf_by_durations(note,
                                                       [abjad.Duration(1, 8)])
    staff = abjad.Staff(new_leaves)

    assert abjad.lilypond(staff) == abjad.String.normalize(r"""
        \new Staff
        {
            c'8
            ~
            \afterGrace
            c'8
            {
                c'32
            }
        }
        """), print(abjad.lilypond(staff))

    assert abjad.get.after_grace_container(new_leaves[0]) is None
    assert len(abjad.get.after_grace_container(new_leaves[1])) == 1
    abjad.wf.wellformed(staff)
def test_scoretools_GraceContainer___copy___01():

    grace_container_1 = abjad.AfterGraceContainer([abjad.Note("d'32")])
    grace_container_2 = copy.copy(grace_container_1)

    assert grace_container_1 is not grace_container_2
    assert isinstance(grace_container_2, abjad.AfterGraceContainer)
def test_Leaf__split_by_durations_14():
    """
    After grace notes are removed from first split leaf.
    """

    note = abjad.Note("c'4")
    grace = abjad.AfterGraceContainer([abjad.Note(0, (1, 32))])
    abjad.attach(grace, note)

    new_leaves = note._split_by_durations([abjad.Duration(5, 32)])
    staff = abjad.Staff(new_leaves)

    assert format(staff) == abjad.String.normalize(r"""
        \new Staff
        {
            c'8
            ~
            c'32
            ~
            \afterGrace
            c'16.
            {
                c'32
            }
        }
        """), print(format(staff))

    abjad.inspect(staff).wellformed()
Esempio n. 4
0
def test_Leaf__split_by_durations_07():
    """
    After grace notes are removed from first split leaf.
    """

    note = abjad.Note("c'4")
    after_grace = abjad.AfterGraceContainer([abjad.Note(0, (1, 32))])
    abjad.attach(after_grace, note)

    new_leaves = note._split_by_durations([abjad.Duration(1, 8)])
    staff = abjad.Staff(new_leaves)

    assert format(staff) == abjad.String.normalize(
        r"""
        \new Staff
        {
            c'8
            ~
            \afterGrace
            c'8
            {
                c'32
            }
        }
        """
    ), print(format(staff))

    assert abjad.inspect(new_leaves[0]).after_grace_container() is None
    assert len(abjad.inspect(new_leaves[1]).after_grace_container()) == 1
    abjad.inspect(staff).wellformed()
Esempio n. 5
0
def test_scoretools_Note___copy___04():
    r'''Copy note with grace container.
    '''

    note_1 = abjad.Note("c'4")
    grace_container_1 = abjad.AfterGraceContainer([abjad.Note("d'32")])
    abjad.attach(grace_container_1, note_1)

    assert format(note_1) == abjad.String.normalize(
        r'''
        \afterGrace
        c'4
        {
            d'32
        }
        '''
        )

    note_2 = copy.copy(note_1)
    grace_container_2 = abjad.inspect(note_2).get_after_grace_container()

    assert format(note_2) == abjad.String.normalize(
        r'''
        \afterGrace
        c'4
        {
            d'32
        }
        '''
        )

    assert note_1 is not note_2
    assert grace_container_1 is not grace_container_2
    assert isinstance(grace_container_1, abjad.AfterGraceContainer)
Esempio n. 6
0
def test_Note___copy___04():
    """
    Copy note with grace container.
    """

    note_1 = abjad.Note("c'4")
    grace_container_1 = abjad.AfterGraceContainer([abjad.Note("d'32")])
    abjad.attach(grace_container_1, note_1)

    assert abjad.lilypond(note_1) == abjad.String.normalize(r"""
        \afterGrace
        c'4
        {
            d'32
        }
        """)

    note_2 = copy.copy(note_1)
    grace_container_2 = abjad.get.after_grace_container(note_2)

    assert abjad.lilypond(note_2) == abjad.String.normalize(r"""
        \afterGrace
        c'4
        {
            d'32
        }
        """)

    assert note_1 is not note_2
    assert grace_container_1 is not grace_container_2
    assert isinstance(grace_container_1, abjad.AfterGraceContainer)
def test_GraceContainer_parentage_03():
    """
    Grace containers bound to leaf have their correct main leaf after
    assignment.
    """

    note = abjad.Note(1, (1, 4))
    after_grace = abjad.AfterGraceContainer([abjad.Note("e'16")])
    abjad.attach(after_grace, note)
    grace = abjad.GraceContainer([abjad.Note("e'16")])
    abjad.attach(grace, note)
    assert after_grace._main_leaf is note
    assert grace._main_leaf is note
    after_grace[:] = []
    notes = [abjad.Note("c'8"), abjad.Note("d'8")]
    after_grace.extend(notes)
    grace[:] = []
    notes = [abjad.Note("c'8"), abjad.Note("d'8")]
    grace.extend(notes)
    assert after_grace._main_leaf is note
    assert grace._main_leaf is note
    after_grace[:] = []
    grace[:] = []
    assert after_grace._main_leaf is note
    assert grace._main_leaf is note
Esempio n. 8
0
def test_Note_grace_06():
    """
    Attaches several after grace notes.
    """

    note = abjad.Note("c'4")
    grace_notes = [
        abjad.Note(0, (1, 16)),
        abjad.Note(2, (1, 16)),
        abjad.Note(4, (1, 16)),
    ]
    grace = abjad.AfterGraceContainer(grace_notes)
    abjad.attach(grace, note)

    assert format(note) == abjad.String.normalize(
        r"""
        \afterGrace
        c'4
        {
            c'16
            d'16
            e'16
        }
        """
    )
def test_mutate__split_leaf_by_durations_08():
    """
    After grace notes are removed from first split leaf.
    """

    note = abjad.Note("c'4")
    grace = abjad.AfterGraceContainer([abjad.Note(0, (1, 32))])
    abjad.attach(grace, note)

    new_leaves = abjad.mutate._split_leaf_by_durations(note,
                                                       [abjad.Duration(5, 32)])
    staff = abjad.Staff(new_leaves)

    assert abjad.lilypond(staff) == abjad.String.normalize(r"""
        \new Staff
        {
            c'8
            ~
            c'32
            ~
            \afterGrace
            c'16.
            {
                c'32
            }
        }
        """), print(abjad.lilypond(staff))

    abjad.wf.wellformed(staff)
def _notate_glissando(name: str) -> None:
    staff = abjad.Staff([
        abjad.Note("a'", 3 / 16),
        abjad.Note("a'", 1 / 16),
        abjad.Note("a'", 1 / 8),
        abjad.Note("a'", 1 / 8),
    ])

    abjad.attach(
        abjad.LilyPondLiteral("#(define afterGraceFraction (cons 15 16))"),
        staff[0])
    abjad.attach(
        abjad.LilyPondLiteral('\\override Flag.stroke-style = #"grace"'),
        staff[0],
    )

    for n in (0, 2):
        attachments._GlissandoAttachment._set_glissando_layout(
            staff[n + 1], minimum_length=3)
        abjad.attach(abjad.AfterGraceContainer([abjad.Note("f'", 1 / 8)]),
                     staff[n + 1])
        abjad.attach(abjad.Tie(), staff[n])
        abjad.attach(abjad.StartBeam(), staff[n])
        abjad.attach(abjad.StopBeam(), staff[n + 1])
        abjad.attach(abjad.GlissandoIndicator(), staff[n + 1])

    abjad.attach(lily.mk_no_time_signature(), staff[0])
    abjad.attach(abjad.TimeSignature((len(staff), 1)), staff[0])
    abjad.attach(abjad.Clef("treble"), staff[0])

    sco = abjad.Score([staff])
    lily.make_small_example(sco, name, ragged_last=True, ragged_right=True)
def test_scoretools_GraceContainer_05():

    grace_container = abjad.AfterGraceContainer("c'8 c'8 c'8")
    assert format(grace_container) == abjad.String.normalize(r'''
        {
            c'8
            c'8
            c'8
        }
        ''')
Esempio n. 12
0
def test_GraceContainer_05():

    grace_container = abjad.AfterGraceContainer("c'8 c'8 c'8")
    assert format(grace_container) == abjad.String.normalize(r"""
        {
            c'8
            c'8
            c'8
        }
        """)
Esempio n. 13
0
def test_scoretools_Leaf__split_by_durations_15():
    r'''After grace notes are removed from first split leaf.
    '''

    note = abjad.Note("c'4")
    after_grace = abjad.AfterGraceContainer([abjad.Note(0, (1, 32))])
    abjad.attach(after_grace, note)
    halves = note._split_by_durations([abjad.Duration(1, 8)])

    assert abjad.inspect(halves[0][0]).get_after_grace_container() is None
    assert len(abjad.inspect(halves[1][0]).get_after_grace_container()) == 1
Esempio n. 14
0
def test_scoretools_Leaf__split_by_durations_16():
    r'''After grace notes are removed from first split leaf.
    '''

    note = abjad.Note("c'4")
    grace = abjad.AfterGraceContainer([abjad.Note(0, (1, 32))])
    abjad.attach(grace, note)
    halves = note._split_by_durations([abjad.Duration(5, 32)])

    assert len(halves) == 2
    assert getattr(halves[0][0], 'after_grace', None) is None
    assert getattr(halves[0][1], 'after_grace', None) is None
    assert len(halves[1]) == 1
    after_grace = abjad.inspect(halves[1][0]).get_after_grace_container()
    assert len(after_grace) == 1
Esempio n. 15
0
def test_Note_grace_05():
    """
    Attaches one after grace note.
    """

    note = abjad.Note("c'4")
    grace = abjad.AfterGraceContainer([abjad.Note(2, (1, 16))])
    abjad.attach(grace, note)

    assert format(note) == abjad.String.normalize(r"""
        \afterGrace
        c'4
        {
            d'16
        }
        """)
def test_scoretools_Note_grace_05():
    r'''Attaches one after grace note.
    '''

    note = abjad.Note("c'4")
    grace = abjad.AfterGraceContainer([abjad.Note(2, (1, 16))])
    abjad.attach(grace, note)

    assert format(note) == abjad.String.normalize(
        r'''
        \afterGrace
        c'4
        {
            d'16
        }
        '''
        )
def test_scoretools_Note_grace_06():
    r'''Attaches several after grace notes.
    '''

    note = abjad.Note("c'4")
    grace_notes = [abjad.Note(0, (1, 16)), abjad.Note(2, (1, 16)), abjad.Note(4, (1, 16))]
    grace = abjad.AfterGraceContainer(grace_notes)
    abjad.attach(grace, note)

    assert format(note) == abjad.String.normalize(
        r'''
        \afterGrace
        c'4
        {
            c'16
            d'16
            e'16
        }
        '''
        )
Esempio n. 18
0
def test_scoretools_GraceContainer_parentage_03():
    r'''Grace containers bound to leaf have their correct carrier
    after assignment.
    '''

    note = abjad.Note(1, (1, 4))
    after_grace = abjad.AfterGraceContainer([abjad.Note("e'16")])
    abjad.attach(after_grace, note)
    grace = abjad.GraceContainer([abjad.Note("e'16")])
    abjad.attach(grace, note)
    assert after_grace._carrier is note
    assert grace._carrier is note
    after_grace[:] = []
    notes = [abjad.Note("c'8"), abjad.Note("d'8")]
    after_grace.extend(notes)
    grace[:] = []
    notes = [abjad.Note("c'8"), abjad.Note("d'8")]
    grace.extend(notes)
    assert after_grace._carrier is note
    assert grace._carrier is note
    after_grace[:] = []
    grace[:] = []
    assert after_grace._carrier is note
    assert grace._carrier is note
Esempio n. 19
0
    def handle_orphaned_q_event_proxies(self, last_leaf, q_event_proxies):
        r"""
        Embeds orphaned ``QEvents`` into an ``AfterGraceContainer`` and
        attaches it to the last leaf.

        ..  container:: example

            >>> durations = [1000, 1000, 1000, 400, 50, 50]
            >>> pitches = range(len(durations))
            >>> quantizer = nauert.Quantizer()
            >>> q_event_sequence = nauert.QEventSequence.from_millisecond_pitch_pairs(
            ...     tuple(zip(durations, pitches))
            ... )
            >>> search_tree = nauert.UnweightedSearchTree()
            >>> attack_point_optimizer = nauert.MeasurewiseAttackPointOptimizer()
            >>> q_schema = nauert.MeasurewiseQSchema(
            ...     search_tree=search_tree, time_signature=(7, 8), use_full_measure=True
            ... )
            >>> result = quantizer(
            ...     q_event_sequence,
            ...     q_schema=q_schema,
            ...     attach_tempos=True,
            ...     attack_point_optimizer=attack_point_optimizer,
            ... )
            >>> staff = abjad.Staff([result])
            >>> abjad.show(staff) # doctest: +SKIP

            ..  docs::

                >>> string = abjad.lilypond(staff)
                >>> print(string)
                \new Staff
                {
                    \new Voice
                    {
                        {
                            \tempo 4=60
                            \time 7/8
                            c'4
                            cs'8
                            ~
                            cs'8
                            d'8
                            ~
                            d'8
                            \afterGrace
                            ef'8
                            {
                                e'16
                                f'16
                            }
                        }
                    }
                }

        """
        grace_container = abjad.AfterGraceContainer() if q_event_proxies else None
        for proxy in q_event_proxies:
            q_event = proxy.q_event
            if isinstance(q_event, PitchedQEvent):
                if len(q_event.pitches) == 1:
                    leaf = abjad.Note(q_event.pitches[0], self.grace_duration)
                else:
                    leaf = abjad.Chord(q_event.pitches, self.grace_duration)
                abjad.annotate(leaf, "q_event_attachments", q_event.attachments)
                assert grace_container is not None
                grace_container.append(leaf)
        if grace_container:  # TODO: check if the grace_container is empty?
            abjad.attach(grace_container, last_leaf)