[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Beat grouping and reverting
From: |
Trevor Daniels |
Subject: |
Re: Beat grouping and reverting |
Date: |
Sat, 25 Oct 2008 21:30:19 +0100 |
Hi Neil
You wrote Saturday, October 25, 2008 9:06 PM
2008/10/25 Trevor Daniels <address@hidden>:
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
- Beat grouping and reverting, Trevor Daniels, 2008/10/25
- Re: Beat grouping and reverting, Trevor Daniels, 2008/10/25
- Re: Beat grouping and reverting, Neil Puttock, 2008/10/25
- Re: Beat grouping and reverting,
Trevor Daniels <=
- Re: Beat grouping and reverting, Carl D. Sorensen, 2008/10/25
- Re: Beat grouping and reverting, Trevor Daniels, 2008/10/26
- Re: Beat grouping and reverting, Carl D. Sorensen, 2008/10/26
- Re: Beat grouping and reverting, Trevor Daniels, 2008/10/26
- Re: Beat grouping and reverting, Carl D. Sorensen, 2008/10/26