I seem to have run into a snag with re-writing default-time-signature-settings, it works ok if there was previously a rule for a time signature, but adding a rule for one (such as 6/8) which has none doesn't result in the beaming pattern being used. Here is a minimal example. The first bar shows the pattern desired, and this is put into the value for 'beamExceptions in the 6/8 alist, but the second bar is not then beamed to follow that pattern.
8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8>< \version "2.19.5" MvmntIVoiceI = { a8[ d'8 f' a'] e'8[ e'8] a'8 a' e' f' e' a' } #(let ((outer-value #f)) (format #t "Before adding 6/8 rule: ~s\n\n" default-time-signature-settings) (set! outer-value (assoc-get '(6 . 8) default-time-signature-settings)) (if (not outer-value) (set! outer-value '())) (set! outer-value (assoc-set! outer-value 'beamExceptions #{ \beamExceptions { a 8[ d' 8 f' a' ] e' 8[ e' 8]}#} )) (set! default-time-signature-settings (assoc-set! default-time-signature-settings '(6 . 8) outer-value)) (format #t "After adding 6/8 rule: ~s\n\n" default-time-signature-settings) ) \score { { \time 6/8 \MvmntIVoiceI } } 8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8>< The output to the terminal is: 8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8>< Before adding 6/8 rule: (((2 . 2) (beamExceptions (end (1/32 8 8 8 8)))) ((3 . 2) (beamExceptions (end (1/32 8 8 8 8 8 8)))) ((3 . 4) (beamExceptions (end (1/8 6) (1/12 3 3 3)))) ((3 . 8) (beamExceptions (end (1/8 3)))) ((4 . 2) (beamExceptions (end (1/16 4 4 4 4 4 4 4 4)))) ((4 . 4) (beamExceptions (end (1/8 4 4) (1/12 3 3 3 3)))) ((4 . 8) (beatStructure 2 2)) ((6 . 4) (beamExceptions (end (1/16 4 4 4 4 4 4)))) ((9 . 4) (beamExceptions (end (1/32 8 8 8 8 8 8 8 8)))) ((12 . 4) (beamExceptions (end (1/32 8 8 8 8 8 8 8 8 8 8 8 8)))) ((5 . 8) (beatStructure 3 2)) ((8 . 8) (beatStructure 3 3 2))) After adding 6/8 rule: (((6 . 8) (beamExceptions (end (1/8 4 2)))) ((2 . 2) (beamExceptions (end (1/32 8 8 8 8)))) ((3 . 2) (beamExceptions (end (1/32 8 8 8 8 8 8)))) ((3 . 4) (beamExceptions (end (1/8 6) (1/12 3 3 3)))) ((3 . 8) (beamExceptions (end (1/8 3)))) ((4 . 2) (beamExceptions (end (1/16 4 4 4 4 4 4 4 4)))) ((4 . 4) (beamExceptions (end (1/8 4 4) (1/12 3 3 3 3)))) ((4 . 8) (beatStructure 2 2)) ((6 . 4) (beamExceptions (end (1/16 4 4 4 4 4 4)))) ((9 . 4) (beamExceptions (end (1/32 8 8 8 8 8 8 8 8)))) ((12 . 4) (beamExceptions (end (1/32 8 8 8 8 8 8 8 8 8 8 8 8)))) ((5 . 8) (beatStructure 3 2)) ((8 . 8) (beatStructure 3 3 2))) 8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8>< which seems to be perfect, but the second bar just has the (1/8 3 3) pattern when typeset. If anyone can illuminate me I would be very grateful. Richard On Thu, 2015-09-03 at 12:50 +0100, Richard Shann wrote: > On Thu, 2015-09-03 at 12:59 +0200, David Kastrup wrote: > > Richard Shann <rich...@rshann.plus.com> writes: > > > > > On Thu, 2015-09-03 at 10:54 +0200, David Kastrup wrote: > > >> Richard Shann <rich...@rshann.plus.com> writes: > > >> > > >> > On Wed, 2015-09-02 at 20:13 +0200, David Kastrup wrote: > > >> >> > > >> >> > And there is a comment somewhere about using | to separate > > >> >> something, > > >> >> > I guess bars with the same \time signature (or, indeed different > > >> >> > ones). > > >> >> > > >> >> No, it's always for exactly one time signature, but at the time it is > > >> >> called, LilyPond has no idea just how long a bar is and can't count it > > >> >> off itself. So you need to separate rule patterns by |. > > >> > > > >> > Ah, in that case I need a way of building up the list of > > >> > beamExceptions, > > >> > so the user can define beaming rules for all the time signature changes > > >> > they use in the score. > > >> > > >> There are separate commands for defining time-signature-specific > > >> exceptions rather than the currently active exception list. > > > > > > I was just experimenting with something along those lines when your > > > email arrived: > > > > > > #(override-time-signature-setting '(3 . 8) '()) > > > > > > > > > I was thinking this might revert the 3/8 rules to the default, but I'm > > > not sure I've got it right yet. I got there from Simon Albrecht pointing > > > me to > > > > Anything wrong with using \overrideTimeSignatureSettings here? Cf > > <URL:http://lilypond.org/doc/v2.18/Documentation/notation/displaying-rhythms#index-time-signature-default-settings> > > > Well, that is the facility currently available in Denemo, but it applies > to a particular instance of a time signature change, the user has to > re-define (or cut and paste) to use it in another part of the score. > > I think I have got there with modifying default-time-signature-settings > - now I have: > > beamExceptions-three-eight = \beamExceptions { e'8[ f'8]a'8 } > > #(let ((outer-value #f) (value #f)) > (set! outer-value (assoc-get '(3 . 8) default-time-signature-settings)) > (set! value (assoc-get 'beamExceptions outer-value)) > (set! outer-value (assoc-set! outer-value 'beamExceptions > beamExceptions-three-eight)) > (set! default-time-signature-settings (assoc-set! > default-time-signature-settings '(3 . 8) outer-value))) > > This changes the 3/8 rule to 2 beamed and one un-beamed 1/8 note in the > bar. the beam exceptions can be created by the Denemo user simply by > selecting the music which has been manually beamed and declaring that > this is to be the rule, (or added to the current beamExceptions etc). > > I think I am now cooking with gas - thank you very much David and Simon, > and apologies for a slightly off topic thread. > > Richard > > > > > > > _______________________________________________ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user