lilypond-user
[Top][All Lists]
Advanced

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

Re: shiftDurations and tempo


From: Jean Abou Samra
Subject: Re: shiftDurations and tempo
Date: Mon, 27 Jun 2022 20:37:12 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.10.0



Le 27/06/2022 à 20:10, Simon Albrecht a écrit :
Hello everyone,

I’m trying to encode a piece such that I can switch whether or not durations will be shifted (note values halved/doubled). Unfortunately \tempo isn’t affected by \shiftDurations (that would be a sensible feature request, right?),

Go open an issue.


so I tried this:
%%%%%%%%%%%%%%%%%%%%%%%%%%%
\version "2.23.9"

durationShiftOne = #-1
{
  \tempo #(ly:make-duration (+ 3 durationShiftOne)) = 152
  \shiftDurations \durationShiftOne #0 { 8 }
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

but unfortunately Lily won’t accept that Scheme expression instead of the normal duration.

Can I make that work some other way?

Should the parser be able to take that Scheme expression there?


\version "2.23.9"

durationShiftOne = #-1
{
  \tempo $(ly:make-duration (+ 3 durationShiftOne)) = 152
  \shiftDurations \durationShiftOne #0 { 8 }
}


You just need to use $ instead of #. See these pages about the difference:

https://lilypond.org/doc/v2.23/Documentation/extending/lilypond-scheme-syntax.html
https://extending-lilypond.readthedocs.io/en/latest/lily-and-scheme.html#hash-vs-dollar

The problem is that \tempo has multiple syntaxes (\tempo <markup>,
\tempo <duration> = <bpm> and \tempo <markup> <duration> = <bpm>),
which makes it impossible to accept # here because early evaluation
is needed to disambiguate, I think. I'm no expert of the parser
though.

Best,
Jean




reply via email to

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