lilypond-user
[Top][All Lists]
Advanced

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

Re: completing a bar automatically with rests


From: Stefan Thomas
Subject: Re: completing a bar automatically with rests
Date: Wed, 5 Sep 2012 17:18:54 +0200

Dear David,
I'm always astonished what can be done with scheme and lilypond!
But I think this snippet (which You must have been written quite fast) is not 100% perfect.
For example
\makerests 4/4 c4
should produce  c4 r4 r2
and
\makerests 6/8 { c4. }
should produce
c4. r4 r8
In case of 6/8 the base moment I think is (at least in most cases a dotted quarter, not a eigth note). Filling up bars with rests isn't maybee as trivial as I thought.


2012/9/5 David Kastrup <address@hidden>
Stefan Thomas <address@hidden> writes:

>     What is it supposed to do?
> Dear David,
> I would like to do something like this:
> %%%snippet %%%%%%
> % fully written out example
> \relative c' {
> \time 4/4
> c8 r8 r4 r2
> r2 fis8 r8 r4
> \time 3/4
> c8 r8 r4 r4
> r8 e r4 r
> }
> %% desired form of how to input code
> \relative c' {
> \time 4/4
> \makerests 4/4 c8
> \makerests 4/4 {r8 fis }
> \time 3/4
> \makerests 3/4 c8
> \makerests 3/4 { r8 e}
> }
> %%%%%
> Off course, one should have a shortcut for makerhythm (eventually
> defined in frescobaldi or selsewhere). This could save a lot of
> typesetting and it would be harder to write too many or less rests.

It does not make much sense to call this with \makerests 4/4 unless your
unit of completion is supposed to be 1/4.  So I'd just go with something
like


makerests =
#(define-music-function (parser location frac mus) (fraction? ly:music?)
   (cond ((<= (/ (car frac) (cdr frac))
              (ly:moment-main (ly:music-length mus)))
          mus)
         ((>= (/ (1- (car frac)) (cdr frac))
              (ly:moment-main (ly:music-length mus)))
          #{ \makerests #(cons (1- (car frac)) (cdr frac))
             #mus r$(ly:make-duration (ly:intlog2 (cdr frac)) 0) #})
         (else
          #{ \makerests #(cons (* 2 (car frac)) (* 2 (cdr frac))) #mus #})))

\new Voice { \time 3/4 \makerests 3/4 { c4. }
             \makerests 6/8 { c4. }
             \makerests 6/4 { c4. }
             \time 4/4
             \makerests 2/1 { c4. }
             \makerests 4/2 { c4. }
}






--
David Kastrup



reply via email to

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