On 1/9/2019 5:39 PM, Aaron Hill wrote:
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 that is....SO awesome! Thanks for explaining that. I'm going to be
using that function a lot for sure. :)
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user