Interesting. So if the default property is set at the Staff level, for instance, then changed and \unset at the Voice level, it goes back to the default for the higher-level context. But if in the example \new Staff \with... is changed to \new Voice \with... the original problem arises where \unset reverts to the built-in default.
Didn't realize about the \tuplet syntax. That's quite useful. Thanks for the tip! Actually, I just used tupletSpannerDuration because it was convenient to write a tiny example. My practical use case is changing the default keepAliveInterfaces for certain staves. On Sun, Jul 1, 2018 at 1:00 AM David Kastrup <d...@gnu.org> wrote: > Saul Tobin <saul.james.to...@gmail.com> writes: > > > In both 2.18 and 2.19, \unset appears to set a context property to the > > built-in default, rather than the default set in the \with {} block: > > > > music = \relative c' { > > \tuplet 3/2 { > > c8 c c d d d e e e f f f | > > } > > \set Staff.tupletSpannerDuration = #(ly:make-moment 1/2) > > \tuplet 3/2 { > > c8 c c d d d e e e f f f | > > } > > \unset Staff.tupletSpannerDuration > > \tuplet 3/2 { > > c8 c c d d d e e e f f f | > > } > > } > > > > \new Staff \with { > > tupletSpannerDuration = #(ly:make-moment 1/4) > > } \music > > > > In cases like this, I would find it useful to reset the property to the > > custom default value without having to explicitly \set it every time. Is > > there a way to do this? Also, is this the most useful behavior of \unset? > > There are several approaches. The tupletSpannerDuration is actually > interpreted at Voice level, so if you set/unset the Voice level value, > it remains dominant while set and can be unset nicely: > > music = \relative c' { > \tuplet 3/2 { > c8 c c d d d e e e f f f | > } > \set tupletSpannerDuration = #(ly:make-moment 1/2) > \tuplet 3/2 { > c8 c c d d d e e e f f f | > } > \unset tupletSpannerDuration > \tuplet 3/2 { > c8 c c d d d e e e f f f | > } > } > > \new Staff \with { > tupletSpannerDuration = #(ly:make-moment 1/4) > } \music > > But of course for this functionality in particular, use the optional > tuplet spanner duration argument to the \tuplet music function: > > music = \relative c' { > \tuplet 3/2 { > c8 c c d d d e e e f f f | > } > \tuplet 3/2 2 { > c8 c c d d d e e e f f f | > } > \tuplet 3/2 { > c8 c c d d d e e e f f f | > } > } > > \new Staff \with { > tupletSpannerDuration = #(ly:make-moment 1/4) > } \music > > In fact, I'd lean towards using it always and not even bother setting > tupletSpannerDuration at all. So basically: > > music = \relative c' { > \tuplet 3/2 4 { > c8 c c d d d e e e f f f | > } > \tuplet 3/2 2 { > c8 c c d d d e e e f f f | > } > \tuplet 3/2 4 { > c8 c c d d d e e e f f f | > } > } > > \music > > It's minimal writing effort and keeps the information where it belongs. > > -- > David Kastrup >
_______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user