lilypond-user
[Top][All Lists]
Advanced

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

Re: Aleatoric Elements with barlines


From: Aaron Hill
Subject: Re: Aleatoric Elements with barlines
Date: Wed, 09 Jan 2019 14:39:57 -0800
User-agent: Roundcube Webmail/1.3.8

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

Attachment: aleatoric.cropped.png
Description: PNG image


reply via email to

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