

> abjad.attach(abjad.Articulation(">"), container) > container = abjad.OnBeatGraceContainer("g'16 gs' a' as'") > container = abjad.GraceContainer("cs'16") Grace iteration is controlled by a ternary flag: NEW: completely cleaned up grace iteration. REMOVED: do_not_iterate_grace_containers=None keyword So what're your thoughts here? Can we get away with a simplification to GraceContainer, AfterGraceContainer? Or is there a convincing reason to replicate LilyPond quatrchotomy (+ 1) structure at the level of our classes?ĬHANGED: merged acciaccatura, appoggiatura to grace container.

Which makes me think we can probably get away with never bothering to model that particular difference. I think what I might have felt we would capture in the Abjad object model is my understanding of acciaccature and grace notes being played before the beat and contrasting with appoggiature being played on the beat.īut as things have evolved we have, in fact, never modeled this difference, not even a little bit. Thinking back historically, I think that when I added AcciaccaturaContainer, AppoggiaturaContainer I was thinking that we would (perhaps in the very distant future) model differences in grace displacement (which is very very little-know property you can find implemented on abjad.Offset). (Which also explains why AcciaccaturaContainer, AppoggiaturaContainer inherit from GraceContainer and also why no further classes inherit from AfterGraceContainer.) Rather, 100% of the cases of grace comparison / management in Abjad are between GraceContainer and AfterGraceContainer. Scanning the Abjad codebase, there's an important clue: there's not one instance in Abjad where AcciaccaturaContainer and AppoggiaturaContainer are being used contrastively. (By contrast, LilyPond definitely does model a clear difference in timing for after-grace notes.)īut before I do the work here to change the model in Abjad (ie, compressing to just GraceContainer and AfterGraceContainer) can I ask your opinion? Do you think it's worth continuing to model grace / slashed-grace / acciaccatura / appoggiatura as (four) separate things? Ie, LilyPond doesn't seem to model any differences in timing between those four classes of ornament.

The reason why is because LilyPond seems to treat grace / slashed-grace / acciaccatura / appoggiatura as merely typographic variants of each other. I'm pretty confident that this is what we want.

but which, importantly, can not be set to afterGrace.) (Then GraceContainer implements a command property that defaults to grace and can be set to acciaccatura, appoggiatura, slashedGrace. What that will do is leave two grace container classes in Abjad: GraceContainer and AfterGraceContainer. However, taking the opportunity to go back and read Lily's docs about grace notes makes me think that what we should really do in Abjad is collapse AcciaccaturaContainer, AppoggiaturaContainer (and the not-yet-implemented SlashedGraceContainer) back into just GraceContainer. Ok right I agree that as long as we keep AcciaccaturaContainer, AppoggiaturaContainer in the system then it we should add SlashedGraceContainer for reasons of parallelism.
