2016-10-20 15:24 GMT+02:00 Kieren MacMillan <kieren_macmil...@sympatico.ca>: > 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 _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user