Hi Neil

You wrote  Saturday, October 25, 2008 9:06 PM

2008/10/25 Trevor Daniels <[EMAIL PROTECTED]>:
Carl

But how do you revert entries like this:

((end * * 6 8) . #f) ;; switch-off at-any-beat feature

The simplest way would be to add a function to switch this back on:

I'd like to see the complex way  ;)

Seriously, this confirms what I suspected, that these entries
cannot easily be reverted, so setting beam behaviour with
beatGrouping and friends cannot easily be made to work
with any time signature for which these beam ending rules
are defined.

I'll modify the section of the docs which deals with modifying
auto beams to reflect this behaviour.

I'll also have a play with your function to see what possibilities
it opens up.  Not for the docs, but maybe for a snippet.

Thanks Neil.

#(define (revert-property-setting context property setting)
 "Like the C++ code that executes \revert, but without type
checking. "
 (define (revert-member alist entry new)
   "Return ALIST, with ENTRY removed.  ALIST is not modified, instead
a fresh copy of the list-head is made."
   (cond
    ((null? alist) new)
    ((equal? (car alist) entry) (revert-member (cdr alist) entry new))
    (else (revert-member (cdr alist) entry (cons (car alist) new)))))
 (ly:context-set-property!
  context property
  (revert-member (ly:context-property context property) setting '())))

#(define (allow-at-any-beat num den)
 (ly:export
  (context-spec-music
   (make-apply-context (lambda (c)
  (revert-property-setting
   c 'autoBeamSettings
   (cons `(end * * ,num ,den) #f))))
'Voice)))

\relative c'' {
 #(set-time-signature 6 8 '())
 #(allow-at-any-beat 6 8)
 #(revert-auto-beam-setting '(end * * 6 8) 3 8)
 #(revert-auto-beam-setting '(end 1 32 6 8) 1 8)
 #(revert-auto-beam-setting '(end 1 32 6 8) 1 4)
 #(revert-auto-beam-setting '(end 1 32 6 8) 1 2)
 #(revert-auto-beam-setting '(end 1 32 6 8) 5 8)
 a8 a a a a a
 \set beatGrouping = #'(2 2 2)
 a8 a a a a a
}

A better solution might be to rewrite revert-auto-beam-setting so that
the args for beat begin/end are moved to the optional argument list
(which is currently only used for the context).

Regards,
Neil



_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to