Fix 1563: System start bars interpreted collapse-height as absolute length.
If you increased the staff-space, this meant sometimes the collapse-height
would not be enough to hide the start-bar for a staff, while in other cases
it was enough...
This patch interprets the collapse-height in multiples of the staff-space.
However, I think that the notion of a collapse-height (as a length) for
hiding/showing the system start delimiter is not the best approach in
general. Sooner or later, we should change the system to show/hide the
system start bar/bracket depending on the number of staves involved rather
than on grob height.
Neil Puttock [Wed, 20 Jul 2011 14:49:45 +0000 (15:49 +0100)]
Fix #1695: Clef change placed outside score.
A MetronomeMark represents a special case for a break-alignable grob, since
sometimes it will be aligned on noteheads rather than prefatory material. In
this case, we don't want it to be acknowledged by the Break_align_engraver,
since it will hijack the X-parent before the Metronome_engraver can set it at
the end of the timestep. This causes the Paper_column_engraver to add the
MetronomeMark to the 'elements list of a NonMusicalPaperColumn. If this paper
column is loose, its X-extent calculation will be incorrect, since it includes
the extent of the MetronomeMark whose refpoint is different (a System).
This results in the column being translated away from the MetronomeMark into the
left margin.
This patch fixes issue 1695 by removing the default setting for 'non-musical and
setting it dynamically in the Metronome_engraver. Note that this isn't
sufficient in itself since `non-musical' checks use Item::non_musical (), which
recursively checks parents; in the case where a MetronomeMark is effectively
musical (i.e., aligned on a notehead, and parented by a PaperColumn), we also
need to return from the Break_align_engraver without potentially creating a
new BreakAlignment and setting the temporary X-parent.
Neil Puttock [Sun, 17 Jul 2011 21:58:19 +0000 (22:58 +0100)]
Move \RemoveEmptyStaves to new file for context modifications.
This allows \RemoveEmptyStaves to be invoked outside \layout blocks, i.e.,
directly following a context instantiation:
\new Staff \RemoveEmptyStaves { ... }
or
\new Staff \with { \RemoveEmptyStaves } { ... }
* input/regression/remove-empty-context-mod.ly
new regtest
* ly/context-mods-init.ly:
new file for context modification identifiers
* ly/declarations-init.ly:
include context-mods-init.ly; placed before engraver-init.ly to ensure
\RemoveEmptyStaves is accessible for deprecated \RemoveEmptyStaffContext
and analogues
for some people it's not clear enough how tiny
a tiny example should be. So i used a recently
discussed example to illustrate it, and also
changed some wording and style.
Mike Solomon [Thu, 14 Jul 2011 20:02:49 +0000 (22:02 +0200)]
Institutes property checks for non-event context property settings.
This fixes issue 1734 in addition to any potential incorrect settings
of properties in the layout block. While this entails a property check
for all property settings in the ly/ folder, the time this takes is
negligible.
Fix issues 75 and 1256: Allow multiple concurrent slurs
Rewrite the Slur_engraver and the Phrasing_slur_engraver to support
multiple concurrent slurs. The default lilypond syntax using parentheses
still supports only one slur at a time, but by adding a spanner-id property
to the (Phrasing)SlurEvent music expression, one can create multiple
concurrent slurs, each with a different spanner-id.
This finally allows appoggiaturas and acciaccaturas (which both create a
slur from the grace note the the next note) to be placed inside a slur.
If we observe a new slur start while a slur is already present, we now
totally ignore the new slur event, so it does not influence the appearance
of the existing slur (bug 1256)
fix 750: No warning for non-found voice in lyrics combine when lyrics are empty
Use a bool flag to store whether the Lyrics context was ever really created
(i.e. one moment was processed). If that's not the case, then the lyrics
are empty, and we shouldn't print any warning about non-existing voices
(since we never even tried to find an appropriate voice; and we also don't
need one anyway).
Graham Breed [Thu, 23 Jun 2011 23:12:52 +0000 (00:12 +0100)]
Pitch bend tuning fixes
1) The pitch isn't always rounded to the nearest equally
tempered value, so the result looks strange in a sequencer,
and artifacts caused by the pitch bends are more severe.
2) The tuning is rounded to cents before the pitch bends
are calculated. It may not be a big deal, but there's no
need for it, and the code's simpler calculating the bends
directly.
Flag functions instead of defining glyphs directly
We will need many length variants of every flag.
Therefore instead of writing flag code directly
in glyph definition, it should be written as
a function and called back later as appropriate.
The argument shortening is the amount the flag
should be shorter than default.
As for now it is used in a very primitive way,
only to demonstrate the shortening effect
and to test c++ code on something.
Fix Issue 770: Lyrics attached to a voice-derived context are off by 1
The Lyric_combine_music_iterator had an explicit check if the CreateContext
event was really for a context of type "Voice". Unfortunately, that
check fails if the lyrics are supposed to be attached to a CueVoice
context (or some self-defined Voice-derived context!), because
"CueVoice"!="Voice".
Unfortunately, I don't know how to check whether a context "CVoice"
(identified only by a the context type string; we don't have any
Context* object!) is an alias for Voice. If we had the Context* object,
we could use is_alias, but we only have the string "CVoice" and need to
check if a context of that type is an alias for "Voice".
However, I don't think that check is necessary at all. It simply prevents
find_voice from being called in cases when no Voice is generated (and thus
no new context to possibly attach the lyrics to). If that check is removed,
find_voice will also be called for any other context created while
waiting for a voice to attach the lyrics to, but it will not find an
appropriate voice anyway.
Carl Sorensen [Sat, 25 Jun 2011 03:38:00 +0000 (21:38 -0600)]
Separate flags into their own sub-font.
When we have lots of flag sizes, there will be lots of glyphs.
With a maximum of 256-32 = 234 glyphs per sub font, we wanted to
have flags in their own sub font.
But flags depend on notehead widths, so they needed to be in the
same subfont as the noteheads.
This patch moves the notehead parameters from feta-noteheads.mf to
feta-params.mf, so the basic notehead parameters are available to
all subfonts.
Also, AFAICS, bigcheese.pe.in is no longer used -- it doesn't show
up anywhere in a git grep, except as having been renamed. It doesn't
show up in GNUmakefile. So I deleted it.
Neil Puttock [Thu, 7 Jul 2011 19:10:20 +0000 (20:10 +0100)]
Add display method for \tweak.
* input/regression/display-lily-tests.ly:
add tests for \tweak
* scm/define-music-display-methods.scm
(scheme-expr->lily-string): don't funnel booleans through pretty-print
(EventChord): treat simple_element with 'tweaks list as note_chord_element
to preserve < > around tweaked note
* scm/display-lily.scm (music->lily-string):
process 'tweaks via new function tweaks->lily-string
Mike Solomon [Tue, 5 Jul 2011 07:08:14 +0000 (09:08 +0200)]
Moves calculations for simple Y to line-spanner.cc.
This avoids resetting the bound-info alist and fixes any bugs where
the Y coordinates of the last glissando in a piece are transmitted
to all glissandi.