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 <d...@gnu.org>

> Stefan Thomas <kontrapunktste...@gmail.com> 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
>
>
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to