4

How to code the single measure/single chord decrescendo in lilypond?

|\> <ees' aes' c''>1  \!| 

the above code gives a warning in lilypond: unterminated decrescendo.

whole-note chord with decrescendo through measure

2
  • What version of LilyPond are you using? LilyPond requires decrescendo marks to be attached to a note, so I get an error to that effect when running your code.
    – Aaron
    Jun 18, 2021 at 3:15
  • @Aaron 2.20.0 version
    – Vinod
    Jun 18, 2021 at 4:25

2 Answers 2

7

Crescendo and decrescendo marks must be tied to a note (or rest); however, you can create a note with zero duration to get the effect you're looking for.

    | <ees' aes' c''>1\> c1*0\! |

Results in

Decrescendo terminating at end of measure

This will work in any measure, including the final measure of the piece.

Note that decrescendo marks that terminate at the downbeat of the following measure will be engraved to end at the bar line. So you can get the same effect in a more standard way just by notating the following measure and attaching the "!" to the downbeat.

1
  • 1
    I didn't know you could have a note of zero duration. Nice! Jun 18, 2021 at 3:52
3

Dynamic marks (including crescendo/decrescendo etc.) need to be typed after note they are acting on.

So:

    <ees' aes' c''>1\> | 
    <ees' aes' c''>1\! | 

will produce

decrescendo between two chords


But, because you want the decrescendo mark to end at the end of the last bar — (where you have no note to attach to), you will need to place the dynamics in a different voice with (invisible) spacers that specify where the dynamics are to be placed:

    <<
        { <ees' aes' c''>1 } \\ 
        { s4\> s4 s4 s4\! } 
    >> |

decrescendo over a single note

3
  • 1
    Bear in mind: each time the <<{}\\{}>> construct is used, it creates an additional Voice. If there were a lot of these, it could seriously slow down compilation time.
    – Neal
    Jun 18, 2021 at 16:43
  • @Neal Well, two voices, actually. And to this end it's possible to avoid \\. The following should work too: << { <ees' aes' c''>1 } { s4\> s4 s4 s4\! } >>
    – yo'
    Jun 18, 2021 at 16:48
  • @yo' - Thank you for correcting me. It is two Voices that are created.
    – Neal
    Jun 18, 2021 at 19:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.