lilypond-user
[Top][All Lists]
Advanced

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

Re: Codas - STILL can't get it right...


From: Richard Schoeller
Subject: Re: Codas - STILL can't get it right...
Date: Wed, 17 May 2006 23:29:33 -0400


On Wed, 2006-05-17 at 13:48 +0100, address@hidden wrote:
I've upgraded to mingw 2.8.2 ...

Firstly, thanks for the tip about page-spacing.ly. This looks exactly
like what I want ... except I can't find any docu except the example
itself, and cut-n-pasting seems to have no effect :-( (I've looked in
the manual index, and in the html internal thingy which I used IE's
search on)

And I still can't get my "DS al Coda" and coda symbols to come out
where/how I want them. It's all very well saying "attach them to the
note before/after", but (a) imho they belong attached to the barline,
and (b) last time I attached something like that to a R1*8 it looked
rather silly ...

For controlling the positions:
  1. Always use rehearsal marks, for things like DS, To Coda and the actual Coda mark.
  2. Put in a separate variable for the mark and the position control.  You do this so that you can define a different value for the position control for each instrument when you print the parts.
  3. Define the position control using some syntax like:
	positionDS = {
             % Set the anchor at the bar line.  depending on what you need, you can also align to things like
	  % clefs, time signatures, etc.
	  \once \set Score.rehearsalMarkAlignSymbol = #'staff-bar
             % Put the mark to the left of the bar line (or on the preceding line if there is a break)
	  % Use -1 and end-of-line-invisible to position right of the bar or following the break.
	  % Use 0 to center on the bar and end-of-line-invisible to center on the bar or follow the break.
	  \once \override Score.RehearsalMark   #'self-alignment-X = #1
	  \once \override Score.RehearsalMark   #'break-visibility = #begin-of-line-invisible
	  % position the mark up 6.6 lines.  This can cause a change in the space between systems.
	  \once \override Score.RehearsalMark   #'padding = #6.6
	  % adjust the position of the mark one staff unit right from where it would otherwise be.
	  \once \override Score.RehearsalMark #'extra-offset = #'(1.0 . 0.0)
	}

By doing the above you can print the parts or the whole score and completely control the position of the mark.  Sometimes you will find that you want to position rehearsal marks on both sides of the bar, for example "To Coda" preceding and a section mark following.  Under those circumstances, you set up one of the marks at either the preceding or following bar.  Then you have to heavily adjust the X location in extra-offset to get the mark where you want it.


(Actually, I think it was effectively << {s2 s s1*3} {R1*4} >> with the
s's and R in different voices on the same staff, but it was a mess The
s2 stuff was a deliberate (and failed) attempt to get it to go to the
left.) Oh - and with my current part the coda will collide with a
fermata :-(

See above for how to move the mark away from the articulations.


The problem (from my point of view) is that I'm in the habit of putting
all the structure in a separate voice from the notes, and codas etc are
structure. So I can't attach them to a genuine note or fine-tune their
left/right alignment, because I re-use the same structure voice across
multiple parts, hence stuff like that getting attached to a R1*8!

So basically, in the below code I want
(1) to push the last system down and leave a bigger gap
(2) to have "DS al Coda" appear right-justified at the end of the
penultimate system
(3) to have the Coda symbol appear left justified at the beginning of
the last system

I usually have short Codas that are separated from the main music by a little bit of space.  To do that I insert an invisible measure.  Typically that means that you put:
\stopStaff s \startStaff in between the main music and the coda.  You may or may not want to prevent line breaks before or after the blank measure.  If you want you can also coerce the measure count after the blank.  I usually don't find that necessary because the codas are short and don't end up displaying a number.

For your situation, it sounds like the codas are longer.  In that case, you might just put a very large padding on the Coda mark and force it back down with a negative number in the Y value in extra-offset.  What that will do is to create enough space between the measures for the Coda mark to be way above the staff.  But then you push it back down with extra-offset, WHICH DOES NOT AFFECT THE POSTIONS OF NEIGHBORING OBJECTS.  You might also be able to directly tweak the spacing on the last system.  I have seen hints in the docs that that works but haven't actually tried it.


imho this is a perfectly normal layout and I just cannot see how to
achieve it ...


\version "2.8.2"

allegro = {
	\once \override Score.RehearsalMark #'self-alignment-X = #left
	\mark "Allegro"
}

coda = {
	\mark \markup { \musicglyph #"scripts.coda" }
}

dalsegno = {
	\once \override Score.RehearsalMark #'self-alignment-X = #right
	\mark "DS al Coda"
}

segno = {
	\mark \markup { \musicglyph #"scripts.segno" }
}

voiceTimeSig =  {
	\time 2/4
	\key df \major
	s2*2
	s2*8
	s2*8
	s2*8
	s2*2
	s2*8
	s2*8
	s2*8
	\key bf \major
	\repeat volta 2 { s2*15 } \alternative { { s2 } { s2 } }
	s2*3
	\key df \major
	s2*4
}

voiceMarkup =  {
	s2*2 \bar "||" \segno
	s2*8 \bar "||" \allegro
	s2*8 \bar "||"
	s2*8 \bar "||" \coda
	s2*2 \bar "||"
	s2*8 \bar "||" \allegro
	s2*8 \bar "||"
	s2*8 % Trio
	\break
	\mark "TRIO Presto"
	\repeat volta 2 { s2*15 } \alternative { { s2 } { s2 } }
	s2*3 \bar "||" \dalsegno

	\overrideProperty
	#"Score.NonMusicalPaperColumn"
	#'line-break-system-details
	#'((next-space . 20))

	\break
	\once \override Score.RehearsalMark #'self-alignment-X = #left
	\coda
	s2*4
}





-- 
Dick Schoeller
mailto:address@hidden
http://schoeller.hsd1.ma.comcast.net/
781.449.5476

reply via email to

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