Keith OHara [Thu, 28 Mar 2013 07:13:57 +0000 (00:13 -0700)]
Tempo and Rehearsal marks horizontal positioning; issue 3279
Space tempo/rehearsal marks so they do not overlap each other.
Do not use side-position interface for their initial vertical position,
because they are moved to the top-most staff after line-breaking.
In the LM, the word "tweaks" is used both generically, meaning
"modifying LilyPond's action", and specifically to refer to the
\tweak command. The old section heading used the word in the former
sense, but this was confusing as the section dealt exclusively
with \override commands.
"@var{grob} callback generator for inheriting a @var{property} from
an @var{axis} parent, defaulting to @var{default} if there is no
parent or the parent has no setting."
Julien Rioux [Wed, 23 Jan 2013 23:21:22 +0000 (18:21 -0500)]
lilypond-book: Textwidth detection with included file (issue 3136).
Fix the automatic textwidth detection performed by lilypond-book.
This failed for lytex files that include an external file in the
preamble, when such file was compiled in an --output directory
different from the working directory, because then the included
file was missing. We use TEXINPUTS to let the latex process know
where to look for input files.
David Kastrup [Sat, 20 Apr 2013 10:29:31 +0000 (12:29 +0200)]
Add additional options grdp to scripts/auxiliar/make-regtest-pngs.sh
This is for checking bitmap production at different resolution, the
output from using poppler and libcairo on LilyPond's PDF, and the
output for typical print bitmaps generated from LilyPond's PDF.
Mike Solomon [Thu, 18 Apr 2013 04:19:50 +0000 (06:19 +0200)]
Adds arpeggio to conditional item grob array.
The actual function of conditional elements was not correctly reflected
in the comment above Separation_item::boxes. This comment led one to believe
that conditional elements were only used when notes with accidentals
had ties coming to them. This is not true. Conditional elements are always
used for right columns when there is something to the left (see
Spacing_interface::skylines). They are omitted _only_ when they are
accidentals with ties coming to them.
So why do we want an arpeggio to be a conditional element? There is
nothing conditional about it (it will always be printed, unlike accidentals
with ties going to them). It is because conditional elements have the
double duty of being conditional (i.e. accidentals) AND being factored
into springs in note spacing (see the long comment in
Note_spacing::get_spacing) in the calculation of a spring's ideal distance.
Other elements to the left of a note column, like scripts and fingerings,
are only factored into the minimum distance. We want arpeggios to factor
into the ideal distance because otherwise they will be too close to
left note-columns in tight spacing situations.
Lastly, there was no reason in the code base to keep a pointer to the
arpeggio in the note column, so it is removed here.
1) tempo should be written using \tempo, not as a text
attached to notes (because TextScript has wrong font
and alignment for a tempo mark)
2) upper and lower voices should use \voiceXXX commands,
to make sure that all elements havee their directions set
properly (here, dots in lower voice were incorrectly up)
David Kastrup [Tue, 2 Apr 2013 13:22:13 +0000 (15:22 +0200)]
Issue 3291: Carry any exports from session initialization over to subsequent sessions
When a .ly file in the session initialization loaded a module, this
module's exports were only available in the first session on the
command line. This patch causes any modules available after first
session initialization to be available in subsequent sessions.
David Kastrup [Thu, 4 Apr 2013 09:12:38 +0000 (11:12 +0200)]
Issue 3296: Move Tweak_engraver to Score level
This makes it possible to tweak items announced at Score level, like
MetronomeMark and RehearsalMark.
The advantage is that tweaks will be applied once regardless of the
context structure (the Score context should exist only once).
Due to the hierarchical nature of acknowledgers, acknowledgers in
lower contexts will now get to see the grobs before tweaks have been
applied. However, grobs are still unfinished (except for type,
properties initialized via context properties and cause) at the time
they are announced, with other details only getting filled in by the
engraver after announcement, so the potential for trouble seems low.
Acknowledgers should usually just register a grob (or write grob data)
with any actual reading of grob data occurring at the end of the
timestep instead.
Mike Solomon [Sat, 6 Apr 2013 08:03:44 +0000 (10:03 +0200)]
Hairpin minimum-length has not effect at end of line; issue 2785.
Fixes the springs and rods callback so that broken left items and
center items are used as potential bounds of spanners, which allows
both cases to be considered in the simple spacer when scoring line breaking
configurations.
Mike Solomon [Sat, 6 Apr 2013 07:54:58 +0000 (09:54 +0200)]
Break slurs between alternative endings in repeats; issue 1698.
Create new event-types BreakPhrasingSlurEvent BreakSlurEvent,
and a music-function \free so that users can create them.
Create these event-types in the volta-repeat-iterator to break
slurs between alternatives in a \repeat volta structure.
David Kastrup [Wed, 13 Mar 2013 19:50:56 +0000 (20:50 +0100)]
Issue 3245: Make \relative { ... } interpret the first pitch as an absolute one
The previous default of \relative { ... } being \relative c' { ... }
made c' more special than warranted. Having to write
\relative f { ... } for this functionality seems awkward since f
serves no musical function but just happens to be the middle of the
scale. Iff the scale is the standard scale. The new definition of
\relative takes care to determine the "middle of the scale" reference
point properly even in the case of non-standard scales.
David Kastrup [Thu, 28 Mar 2013 17:07:22 +0000 (18:07 +0100)]
Issue 3274: Restructure parsing of reverts to avoid ambiguities in relation to BACKUP
A music expression could start with BACKUP (an artificially inserted
token never present in the source code itself) due to the previous
rules. If the BACKUP mechanism is needed in different unrelated rules
applicable in similar contexts, this can lead to shift/reduce
conflicts.
While the actual (separate) code prompting this issue was rewritten in
a manner reining its BACKUP tokens in on its own and thus avoiding the
conflict triggering this issue, it still makes sense to confine the
range where BACKUP tokens are recognized to the actual limited
contexts where they are being produced, in order to keep such
conflicts down, and to stop the parser from creative reinterpretation
of situations that can only arise by programmer error.
David Kastrup [Wed, 3 Apr 2013 15:41:02 +0000 (17:41 +0200)]
Issue 3290/2: \context -> \new in fretted-strings.itely
The combination
\context FretBoards ...
\context Staff
ends up in the same context due to FretBoards being an alias for
Staff. To avoid inconsistencies, not just those occurences of
\context which are really necessary are replaced.
Mike Solomon [Fri, 29 Mar 2013 04:55:13 +0000 (05:55 +0100)]
Uses special X alignment for instrument names.
Previously, instrument names used the side-position-interface for
calculations in its alignment function. This made no sense, as it never
had any side-support elements, requiring a kludge to get them to
align properly.
Here, we remove that kludge and align them by aligning them to their
right end and adding padding. We also change the name of the grob array
in which vertical axis groups are stored to
system-start-text-align-elements so that the grob is not accidentally
treated as an axis-group implementing an elements array.
Mike Solomon [Thu, 28 Mar 2013 19:18:55 +0000 (20:18 +0100)]
Adds hairpins from Ferneyhough scores to LilyPond.
The two new commands are:
* flared-hairpin. Creates a hairpin that is skinny for the bulk
of its duration and has a flare at the end.
* constante-hairpin. Creates a hairpin maintaining a dynamic over
a duration.
Janek Warchoł [Sun, 24 Mar 2013 10:43:52 +0000 (11:43 +0100)]
Don't report a programming error when aligned grob has empty extent.
(Issue 3259)
If a grob's extent is empty (undefined), alignment procedures from
Self_alignment_interface don't have any information about grob's
dimensions, so they cannot calculate the offset required to achieve
specified alignment of such grob.
However, this isn't actually a problem: if a grob's extent is empty,
this usually means that the grob itself is empty, and in that case
there is nothing to align at all. Therefore, no programming error
should be reported.
For example, a user may remove some grob from output by overriding
its stencil to #f. This will result in an empty extent, and Lily
shouldn't complain about being unable to align such grob, because
there is nothing to align.
Nevertheless, if the extent is empty but the stencil itself isn't
empty, the situation looks suspicious, so we issue a warning.
Janek Warchoł [Tue, 19 Mar 2013 09:50:29 +0000 (10:50 +0100)]
Remove unused include in break-alignment-interface (issue 3262)
Nothing from self-alingnment-interface was used in break alignment,
so no need to include its header. This patch shouldn't change
anything in Lily behaviour.
David Kastrup [Tue, 19 Mar 2013 08:37:23 +0000 (09:37 +0100)]
Issue 3261: regtest 'incipit.ly' compressed
After dimensions in \score markup have been fixed in issue 677,
several example of incipits in the LilyPond codebase were
overcompensating for the previous bug. This fixes them.