lilypond-user
[Top][All Lists]
Advanced

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

Re: How to do simple arithmetic on bar numbers?


From: Graham King
Subject: Re: How to do simple arithmetic on bar numbers?
Date: Sun, 16 Jan 2011 23:00:14 +0000

Jakob, 
brilliant! it works!
I've restored Bar_number_engraver to the Voice context "Mean" to avoid
the spurious barline in that part.  I then incorporated your code
(verbatim) and tried "addtobarnumber #1" in the Mean part just before
the double bar.

(Please ignore my previous reply, which fortunately didn't reach the
mailing list: I had mis-copied your code)

Your (and James') prompt and expert help late on a Sunday evening is
eloquent testimony to the spirit of this community.  I'm so grateful.

-- Graham


On Sun, 2011-01-16 at 22:55 +0100, jakob lund wrote:
> 2011/1/16 James Lowe <address@hidden>:
> > Hello,
> >
> > -----Original Message-----
> > From: Graham King <address@hidden>
> > Date: Sun, 16 Jan 2011 21:11:25 +0000
> > To: "address@hidden" <address@hidden>
> > Subject: How to do simple arithmetic on bar numbers?
> >
> >>I'm preparing a modern-notation edition of a piece of choral renaissance
> >>polyphony, in which the maxima at the end of each section is notated as
> >>a neomensural "\maxima*n/m" (where, for each part, n,m are chosen to
> >>cause all the parts to end the section together).
> >>
> >>Example lilypond code and the result are attached.
> >>
> >>Bar-numbering is attached to the top part in the score so, when that
> >>part's maxima starts early and other parts are still moving, the other
> >>parts sometimes have "extra" bars of music.  As a result, I have to
> >>reset the bar numbering manually afterwards (see line 27 of the example
> >>attached):
> >>
> >>       \set Staff.currentBarNumber = #4
> >>
> >>Rather than specifying a static bar number, how could the following
> >>pseudocode be programmed?
> >>
> >>       \set Staff.currentBarNumber = Staff.currentBarNumber + x
> >>
> >>where, in this example, x = 1
> >>
> >>As you can tell, I'm not a Scheme programmer!  Thanks for any help you
> >>can offer.
> >>-
> >
> >
> > I'm not a scheme programmer either but we do have a snippet
> >
> > http://lsr.dsi.unimi.it/LSR/Snippet?id=333
> >
> > That might give you some clues.
> >
> > I am also guessing that you could use a similar method that we document
> > for 'Upbeats' (see Notation Reference) where we can use
> >
> > \set Timing.measurePosition blahblahblah (instead of \partial X)
> >
> > to denote a position in a single measure but for your specific case use
> >
> > \set Timing.internalBarNumber or \set Timing.currentlBarNumber somehow.
> >
> > Look in the Internal reference for Timing_translator.
> >
> > I'm throwing these ideas out so that if you cannot figure something out,
> > someone else more knowledgeable that I in the internals might.
> >
> > James
> >
> >
> 
> the same thing that the snippet does, but only for bar number, and
> with a parameter (the number to add, in case it isn't 1) could look
> like this
> 
> addtobarnumber = #(define-music-function (P L m) (integer?)
>      #{
>   \applyContext
>   #(lambda (voice)
>     (let ((staff (ly:context-property-where-defined voice 'currentBarNumber))
>         (n (ly:context-property voice 'currentBarNumber)))
>     (ly:context-set-property! staff 'currentBarNumber
>      (+ $m n))))
>      #})
> 
> %% example
> { \override Score.BarNumber #'break-visibility = #'#(#t #t #t)
>   \key c \major
>   c''1
>   c'1
>   \addtobarnumber #3
>   c''1
>  c'1
> }
> 
> 
> I don't know how it will work but try it out.
> 
> Jakob
> >
> >
> >
> > internalBarNumber
> >
> >
> >
> >>
> >
> >
> > _______________________________________________
> > lilypond-user mailing list
> > address@hidden
> > http://lists.gnu.org/mailman/listinfo/lilypond-user
> >
> 
> _______________________________________________
> lilypond-user mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/lilypond-user
-- 
Graham King <address@hidden>



reply via email to

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