On 2019-01-09 2:19 pm, Ben wrote:
Thanks for the function! I'm still a little confused about the
value(s) that you use with the function. I see it looks like it takes
a duration value, right? Like 1, 4, 16? But I can't see how it would
work on the music. Maybe I just put the wrong example music code in
mine, but can you share an example where you input " % some music " to
show how the function works?
Do you always use one number or does the function also allow/need like
1 4 or 1 8, etc.
The function expects a ly:duration. That can be as simple as "1" for
whole or something more complex like "\longa*2/3".
See the following example usage:
%%%%
\version "2.19.82"
scaleToLength =
#(define-music-function (dur mus) (ly:duration? ly:music?)
(let* ((real-len (ly:music-length mus))
(mom (ly:duration-length dur))
(ratio-mom (ly:moment-div mom real-len))
(ratio (cons (ly:moment-main-numerator ratio-mom)
(ly:moment-main-denominator ratio-mom))))
#{ \scaleDurations #ratio #mus #}))
\paper { ragged-right = ##f }
\layout {
\context { \Score
\remove "Timing_translator"
\remove "Default_bar_line_engraver"
}
\context { \Staff
\consists "Timing_translator"
\consists "Default_bar_line_engraver"
}
}
<< \new Staff \scaleToLength \longa*1/2 \relative c'' {
r1*17/13\fermata \bar ".|:"
< d e f >1\> r1\!\fermata \bar ":|."
s2 \bar "||"
}
\new Staff \scaleToLength \breve \relative c'' {
\bar ".|:"
< d e f >1\> r1\!\fermata \bar ":|."
s2 \bar "||"
}
\new Staff \scaleToLength 1*2 \relative c'' {
r1*7/11\fermata \bar ".|:"
< d e f >1\> r1\!\fermata \bar ":|."
s2 \bar "||"
} >>
%%%%
What I've done is specify that each music section is to be two measures
via a few means: "1*2", "\breve", and "\longa*1/2". One system has no
rest leading it at all, and the other two are very unusual lengths
indeed. Each section has only a fixed half note spacer rest at the end,
so their lengths are all unique.
Note that since I removed \cadenzaOn, there will be a default bar line
every measure, which we can see in the output. But this proves that the
alignment of notes is correctly scaled by \scaleToLength.
-- Aaron Hill
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user