>>> for group in groups:
Selection([Note("f''4."), Note("gf''4."), Note("f''4.")])
Selection([Note("gf''4."), Note("f''4."), Note("c'''4.")])
Selection([Note("c'''4."), Note("a''4."), Note("fs''4.")])
>>> last_group = groups[-1]
>>> for note in last_group:
... abjad.attach(abjad.Marcato(), note)
3. REPLACED SPANNERS WITH FACTORY FUNCTIONS
LilyPond models beams, hairpins, slurs and other spanners with matching start- and stop-commands. This is now true in Abjad 3.1, too. The spanners.py module implements 12 factory functions to help you work with spanners. These new factory functions are implemented in terms of matching pairs of start and stop indicators: abjad.text_spanner() works by attaching instances of the new abjad.StartTextSpan and abjad.StopTextSpan indicators (which format as LilyPond \startTextSpan and \stopTextSpan). Closes #1033:
The interpreter representation of abjad.Offset has been changed to display grace offsets.
7. GRACE MUSIC
Abjad 3.1 improves the ways grace notes are created, inspected and iterated. The old abjad.GraceContainer class has been renamed abjad.BeforeGraceContainer; the old abjad.AcciaccaturaContainer and abjad.AppoggiaturaContainer classes have been removed; an entirely new abjad.OnBeatGraceContainer class has been added to model Ferneyhough-style on-beat runs of appoggiaturas.
The resulting collection of classes exhibits a 3-way symmetry:
This series of commits closes #1032, #1076, #1104, #1105, #1107, #1120, #1121.
The new on-beat grace container works like this:
>>> music_voice = abjad.Voice("c'4 d' e' f'", name="Music_Voice")
>>> string = "g'8 a' b' c'' d'' c'' b' a' b' c'' d''"
>>> result = abjad.on_beat_grace_container(
... string, music_voice[1:3], leaf_duration=(1, 30), do_not_slash=True
>>> staff = abjad.Staff([music_voice])
All three grace containers work together like this:
Abjad 3.1 adds support for tags. Abjad tags are user-defined strings you can add to the Abjad objects you create. Abjad tags appear as LilyPond comments following the special two-character string %!. Use Abjad tags to help debug complex LilyPond output. Set strict=None to an integer-valued column number to align Abjad tags in LilyPond output.
Tag indicators like this:
>>> note = abjad.Note("c'4")
>>> tag = abjad.Tag("this is a tag")
>>> abjad.attach(abjad.Staccato(), note, tag=tag)
>>> abjad.f(note, strict=20)
\staccato %! this is a tag
Abjad maillist? Re: Release notification: Abjad 3.1
First of all: thank you Trevor and Josiah for developing Abjad! A great tool!
I would like to know if there is a specific forum/mailist for Abjad (I'm not being allowed by google groups to access the one in http://groups.google.com/group/abjad-user that is linked in the github README.rst file).
Actually I have more questions, but would not like to flood lilypond maillist with them.