New in version 2.0.
Yield vertical moments forward in governor:
abjad> from abjad.tools import verticalitytools
abjad> score = Score([])
abjad> score.append(Staff([tuplettools.FixedDurationTuplet(Duration(4, 8), notetools.make_repeated_notes(3))]))
abjad> piano_staff = scoretools.PianoStaff([])
abjad> piano_staff.append(Staff(notetools.make_repeated_notes(2, Duration(1, 4))))
abjad> piano_staff.append(Staff(notetools.make_repeated_notes(4)))
abjad> contexttools.ClefMark('bass')(piano_staff[1])
ClefMark('bass')(Staff{4})
abjad> score.append(piano_staff)
abjad> pitchtools.set_ascending_named_diatonic_pitches_on_nontied_pitched_components_in_expr(list(reversed(score.leaves)))
abjad> f(score)
\new Score <<
\new Staff {
\fraction \times 4/3 {
d''8
c''8
b'8
}
}
\new PianoStaff <<
\new Staff {
a'4
g'4
}
\new Staff {
\clef "bass"
f'8
e'8
d'8
c'8
}
>>
>>
abjad> for vertical_moment in verticalitytools.iterate_vertical_moments_backward_in_expr(score):
... vertical_moment.leaves
...
(Note("b'8"), Note("g'4"), Note("c'8"))
(Note("b'8"), Note("g'4"), Note("d'8"))
(Note("c''8"), Note("g'4"), Note("d'8"))
(Note("c''8"), Note("a'4"), Note("e'8"))
(Note("d''8"), Note("a'4"), Note("e'8"))
(Note("d''8"), Note("a'4"), Note("f'8"))
abjad> for vertical_moment in verticalitytools.iterate_vertical_moments_backward_in_expr(piano_staff):
... vertical_moment.leaves
...
(Note("g'4"), Note("c'8"))
(Note("g'4"), Note("d'8"))
(Note("a'4"), Note("e'8"))
(Note("a'4"), Note("f'8"))
Todo
optimize without multiple full-component traversal.
Changed in version 2.0: renamed iterate.vertical_moments_backward_in() to verticalitytools.iterate_vertical_moments_backward_in_expr().
Changed in version 2.0: renamed iterate.vertical_moments_backward_in_expr() to verticalitytools.iterate_vertical_moments_backward_in_expr().