lilypond-user
[Top][All Lists]
Advanced

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

Re: Should \partial accept music instead of duration?


From: Kenneth Wolcott
Subject: Re: Should \partial accept music instead of duration?
Date: Sat, 19 Mar 2022 18:41:31 -0700

Hi Aaron;

  I **LIKE** it.

Thanks,
Ken Wolcott

On Sat, Mar 19, 2022 at 5:54 PM Aaron Hill <lilypond@hillvisions.com> wrote:
>
> On 2022-03-19 5:46 pm, Thomas Morley wrote:
> > Am So., 20. März 2022 um 00:02 Uhr schrieb Aaron Hill
> > <lilypond@hillvisions.com>:
> >>
> >> Here would be a possible refactoring:
> >>
> >> %%%%
> >> \version "2.22.0"
> >>
> >> partial =
> >> #(define-music-function (mus) (ly:music?)
> >>    (_i "Make a partial measure.")
> >>    (let* ((mom (ly:music-length mus))
> >>           (dur (make-duration-of-length mom)))
> >>      (make-music 'SequentialMusic
> >>        'elements
> >>        (list (context-spec-music
> >>                (make-music 'PartialSet
> >>                            'origin (*location*)
> >>                            'duration dur)
> >>                'Timing)
> >>          mus))))
> >>
> >>
> >> \fixed c' {
> >>    \time 3/4
> >>    \partial { g8 a4 }
> >>    | g2. \bar "||"
> >>    \partial { \grace { g16 } a8 b }
> >>    | a2. \bar "||"
> >>    \partial \tuplet 3/2 { g8 fis }
> >>    | g2. \bar "|."
> >> }
> >> %%%%
> >>
> >> A convert-ly rule would probably not be possible given the limited
> >> power
> >> of regular expressions.  As such, \partial might need to support both
> >> duration and music arguments.  Initially I thought this might not be
> >> possible, given that a naked duration can be treated as music; but the
> >> following does seem to work:
> >>
> >> %%%%
> >> \version "2.22.0"
> >>
> >> #(define (duration-or-music? arg)
> >>    (or (ly:duration? arg) (ly:music? arg)))
> >>
> >> partial =
> >> #(define-music-function (arg) (duration-or-music?)
> >>    (_i "Make a partial measure.")
> >>    (if (ly:duration? arg)
> >>      (context-spec-music
> >>        (make-music 'PartialSet
> >>                    'origin (*location*)
> >>                    'duration arg)
> >>        'Timing)
> >>      (let* ((mom (ly:music-length arg))
> >>             (dur (make-duration-of-length mom)))
> >>        (make-music 'SequentialMusic
> >>          'elements
> >>          (list (context-spec-music
> >>                  (make-music 'PartialSet
> >>                              'origin (*location*)
> >>                              'duration dur)
> >>                  'Timing)
> >>            arg)))))
> >>
> >>
> >> \fixed c' {
> >>    \time 3/4
> >>    \partial 4. g8 a4 %% Original syntax works.
> >>    | g2. \bar "||"
> >>    \partial { \grace { g16 } a8 b }
> >>    | a2. \bar "||"
> >>    \partial \tuplet 3/2 { g8 fis }
> >>    | g2. \bar "|."
> >> }
> >> %%%%
> >>
> >>
> >> -- Aaron Hill
> >
> > Hi Aaron,
> >
> > I really like it! Always wondered why we need to specify a duration,
> > if it can be taken from the music.
> > I'd suggest to propose it on devel. Preferable the second coding,
> > because we could nicely deprecate the old syntax for some versions.
>
> *facepalm*  I thought I was sending to devel.  Well, folks on user might
> want to chime in too.
>
>
> -- Aaron Hill
>



reply via email to

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