2016-10-20 15:24 GMT+02:00 Kieren MacMillan <[email protected]>:
> 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
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user