lilypond-user
[Top][All Lists]
Advanced

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

Re: [Spam] [Spam] Re: Spanner right-hand text may disappear when padded


From: Thomas Morley
Subject: Re: [Spam] [Spam] Re: Spanner right-hand text may disappear when padded
Date: Thu, 20 Oct 2016 20:52:04 +0200

2016-10-20 15:24 GMT+02:00 Kieren MacMillan <address@hidden>:
> Hi David,
>
>>> accel, rit, a tempo, etc in a close
>>> sequence, but obviously tied to their start times, and all at the same
>>> vertical offset. For individual, more time-compressed, parts (e.g. the
>>> woodwind parts that start out with rests!), I need to explicitly avoid
>>> the instructions getting partly on top of each other.
>>
>> Doesn't \tempo work?
>
> Not out of the box, and not without a pretty good knowledge of Lilypond 
> tweaking:
>
> %%%  SNIPPET ENDS
> \version "2.19"
> \language "english"
> pileup = {
>   \tempo "Start here" c''4
>   \tempo "accel." c''
>   \tempo "rit." c''
>   \tempo "a tempo" c'’
> }
> \score { \pileup }
> %%%  SNIPPET ENDS
>
> Even if the user knows how to force sufficient horizontal spacing, there’s 
> still the problem they won’t [with different notes] necessarily be “at the 
> same vertical offset” as the OP wants.
>
> And even if the user knows how to force the correct padding, there’s the 
> problem that Urs — a very experienced Lilypond user — ran into just 
> yesterday: "a tempo” (with a descender) will not be at the same vertical 
> position as the other markings (which have no descenders), because Lily 
> doesn’t baseline-align markups.
>
> So, the simple answer to your question is: \tempo may not work for the OP.
>
> Cheers,
> Kieren.



I made some experiments about baseline-aligning, postprocessing the
ready stencil, so far I don't see any disadvantage...

Though, please be aware it's an experiment, not a ready to use code!

\version "2.19.48"

#(define (lists-map function ls)
"Apply @var{function} to @var{ls} and all of it sublists.
First it recurses over the children, then the function is applied to
@var{ls}."
    (if (list? ls)
        (set! ls (map (lambda (y) (lists-map function y)) ls))
        ls)
    (function ls))

#(define test-proc
   (lambda (e)
     (if (and (list? e) (member 'glyph-string e))
         (begin
           (for-each
             (lambda (x)
                 (begin
                   (set-car! (cadr x) 0)
                   x))
             (cadr (last e)))
           e)
         e)))

#(define-markup-command (test layout props glyph-name)
  (markup?)
  (let* ((stil (interpret-markup layout props glyph-name))
         (new-stile-expr
           (lists-map
             test-proc
             (ly:stencil-expr stil))))

    (ly:make-stencil
      new-stile-expr
      (ly:stencil-extent stil X)
      ;(cons 0 (cdr (ly:stencil-extent stil Y)))
      (ly:stencil-extent stil Y)
      )))

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\markup \rounded-box \fill-line { "1. Test: line- and column-markups" }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

testMarkup =
\markup
  {
    "Ŏ" "o" "f" "g" "ofg"
    \draw-line #'(0 . -2)
    \fontsize #4 \musicglyph #"scripts.coda"
  }

\markup
  \fontsize #3
  \line {
    \column \test { "tweaked" \testMarkup \testMarkup }
    \column { "default" \testMarkup \testMarkup }
  }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\markup \rounded-box \fill-line { "2. Test: Kieren's example" }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


pileup = {
  \markLengthOn
  %\override Score.MetronomeMark.padding = 5
  \tempo \markup \test "Start here" c''4
  \tempo \markup \test "accel." c''
  \tempo \markup \test "rit." c''
  \tempo \markup \test "a tempo" c''
}
\score { \pileup }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\markup \rounded-box \fill-line { "3. Test: Kieren's example, with boxes" }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


pileupII = {
  \markLengthOn
  \tempo \markup \box \test "Start here" c''4
  \tempo \markup \box \test "accel." c''
  \tempo \markup \box \test "rit." c''
  \tempo \markup \box \test "a tempo" c''
}
\score { \pileupII }


Cheers,
  Harm



reply via email to

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