lilypond-user
[Top][All Lists]
Advanced

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

RE: RehearsalMark hack


From: Fairchild
Subject: RE: RehearsalMark hack
Date: Wed, 23 Nov 2005 11:00:31 -0600

Simon -

Thanks for the instructive commentary.  This thread is a keeper.

Just rummaged a bit on your blog, looking for the lily source -- didn't find
it.  As a treble clef euphoniumist, I'd like to transpose on letter size for
my own entertainment.

                            - Bruce

-----Original Message-----
From: address@hidden
[mailto:address@hidden On Behalf Of
Simon Bailey
Sent: Wednesday, November 23, 2005 7:52 AM
To: Mats Bengtsson
Cc: address@hidden
Subject: Re: RehearsalMark hack


hi mats, bruce,

On 11/23/05, Mats Bengtsson <address@hidden> wrote:
> For the horizontal position, why did you not directly redefine the 
> function that handles the placement av rehearsal marks after line 
> breaks? The default function has the following definition (from
> scm/output-lib.scm):
>
> (define-public (shift-right-at-line-begin g)
>   "Shift an item to the right, but only at the start of the line."
>   (if (and (ly:item? g)  (equal? (ly:item-break-dir g) RIGHT))
>       (ly:grob-translate-axis! g 3.5 X)))
>
> and you can specify your own function using:
> \override Score.RehearsalMark #'after-line-breaking-callback = 
> #my-shift-right-at-line-begin

i didn't redefine this function, because i didn't know that rehearsalmarks
were categorically shifted to the right at the beginning of a line. it is
not stated in the documentation that this property is set to
#shift-right-at-line-begin by default.

in fact, the only documentation for after-line-breaking-callback is: "This
procedure is called after line breaking. Its return value is ignored." in
docs for 2.6 at:
http://lilypond.org/doc/v2.6/Documentation/user/out-www/lilypond-internals/g
rob_002dinterface.html
and:
"Dummy property, used to trigger callback for after-line-breaking" in the
docs for 2.7 at:
http://lilypond.org/doc/v2.6/Documentation/user/out-www/lilypond-internals/g
rob_002dinterface.html

my naive assumption was that there is an invisible bar-line after prefatory
matter over which rehearsal marks are aligned. (probably because of this:
http://lilypond.org/doc/v2.6/input/regression/out-www/lily-1278860194.ly)

my solution is almost the same as your's if i'm not mistaken, except for the
fact that it is called before a line break, rather than after (which is
probably better and which i will change now).

fairchild wrote:
> Impressive detective work.  Please add commentary about the 
> documentation trail you followed to discover your result.  Maybe 
> include some explanation of what code does what.

the documentation trail:
Difficult tweaks:
http://lilypond.org/doc/v2.6/Documentation/user/out-www/lilypond/Difficult-t
weaks.html
--> defining a 2-line callback function for after line breaking which
just categorically changed the extra-offset property. that didn't work, so i
started reading the scheme functions for lily:
http://lilypond.org/doc/v2.7/Documentation/user/out-www/lilypond-internals/S
cheme-functions.html
and searching for break led me to the ly:item-break-dir function. checking
for beginning of line was then a matter of working out how to do an if
branch in scheme.

code comments:
% define a function called mark-callback which receives "grob" as a
parameter  #(define (mark-callback grob) % is this item is at the beginning
of the line (ly:item-break-dir returns 1)
  (if (= (ly:item-break-dir grob) 1)
% set extra-offset to the desired shift.
      (ly:grob-set-property! grob 'extra-offset '(-2.8 . 1))))

the \book and \repeat commands are well documented in the manual. \repeat
definitely is, and i only used it out of laziness in this example.

for 2.4. and 2.6. please use Mats' version which is:
\override Score.RehearsalMark #'after-line-breaking-callback =
#mark-callback

Mats' version is semantically more correct -- the only difference being that
this callback seems to shift  further to the left.

sample output again at: http://binabik.boldlygoingnowhere.org/r-marks.pdf

the whole reason i wanted this hack was for the following scenario:
http://binabik.boldlygoingnowhere.org/trbns/
all three files are generated from the same source. i was having problems
with the first piece in the "marschbuch" format (a5-landscape). lily's
solution is in the "standard" version and collides nastily with the
multimeasure rests; my solution is visible in the "hacked" version. [nb, the
staff line vertical spacing has been seriously overriden in this document].
the reason i didn't want to hard code this in the source files is because of
the concert.pdf and score.pdf which are generated from the same sources.

regards,
sb
--
Do not meddle in the affairs of trombonists, for they are subtle and quick
to anger.


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







reply via email to

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