lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(de)cresendi syntax


From: Frédéric Bron
Subject: (de)cresendi syntax
Date: Sun, 1 Mar 2009 20:47:28 +0100

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 (address@hidden)
Villa des Quatre Chemins, Centre Hospitalier, BP 208
38506 VOIRON CEDEX
tél. : (33) 4 76 67 17 27




reply via email to

[Prev in Thread] Current Thread [Next in Thread]