Hello, I am in charge of the question of (de)crescendo syntax issue in 2.12.2. I have posted this on -user list but received little replies (only support) so it's time now to post on -devel.
Here is what lilypond 2.12.2 currently does (in ly/spanners-init.ly): - \< and \cr are equivalent: they start a crescendo event on the previous note: #(make-span-event 'CrescendoEvent START) - \> and \decr are equivalent: they start a decrescendo event on the previous note: #(make-span-event 'DecrescendoEvent START) - \!, \endcr and \enddecr are equivalent: they stop of (de)cresendo event on the previous note: #(make-span-event 'CrescendoEvent STOP), #(make-span-event 'DecrescendoEvent STOP) (is it really equivalent?) - the following commands set the (de)cresendo to be text with dashed line or hairpin forever (until changed to something else): . crescTextCresc -> text "cresc." . dimTextDecresc -> text "decresc." . dimTextDecr -> text "decr." . dimTextDim -> text "dim." . crescHairpin -> hairpin . dimHairpin -> hairpin - the following commands start a text (de)crescendo on the next note (affects only the next (de)crescendo): . cresc -> text "cresc." . dim -> text "dim." - the following commands stop a (de)crescendo on the next note: . enddim . endcresc Current syntax is not satisfactory because: - syntax is different between \<, \>, \! and \cresc, \dim, \enddim, \endcresc (undocumented): . \<, \>, \! apply to the previous note, . \cresc, \dim, \enddim, \endcresc apply to the next note . for example to have a crescendo after a forte we need write things reversed: \cresc c\ff ... c\! - there is no symmetry between \crescTextXXXX, \dimTextXXXX commands and \XXXX commands - some people just want cresc. to be printed without dashed line (spanner) - \endcresc does something different from \endcr which is confusing Here are my dreams: - \<, \>, \! are used to start/stop (de)crescendo spanner (hairpin or text), - crescTextXXX, dimTextXXX, crescHairpin, dimHairpin decide if \<, \>, \! produce text or hairpin (applies for ever until changed to something else), I would prefer simpler syntax: \crescCresc, \crescHairpin, \dimDim, \dimDecr, \dimDecresc, i.e. remove Text but these commands have to be typed only once so there is no real overhead in longer command names - \<"cresc.", \<"cresc. poco a poco", \>"dim."... produce a text spanner with corresponding text, the spanner is ended with \!, the text applies only once, i.e. next (de)crescendo produces hairpin if this is the current setting - \cresc, \dim, \decr, \decresc produce a text without spanner, applies only once to the previous note, no need to finish with \! or \endcresc, this could be implemented with a \markup command - remove unnecessary \cr, \endcr, \decr, \enddecr - remove unnecessary \enddim, \endcresc I know that it is not possible to implement this without rewrite of the parser... \<"cresc." syntax could be replaced by \dspan #"cresc." with a little overhead but compatible with current syntax (dspan for dynamic spanner for example). However, as far as I know, this syntax would still apply to the next note. Could you please comment on this. F. Bron ----------------------------------------------------------- Frédéric Bron (frederic.b...@m4x.org) Villa des Quatre Chemins, Centre Hospitalier, BP 208 38506 VOIRON CEDEX tél. : (33) 4 76 67 17 27 _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-devel