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.
Glissandi, not being placed outside the staff, are not bumped up or
down depending on other outside staff grobs that may appear after
a line break. Thus, all they need to know are the terminus positions
on the Y axis in order to be typeset. This means that they can span
multiple lines.
The patch as it currently stands appears to lose build
information -- at the very least, even if that information
is present somewhere, it is too confusing to find important
information about a failing build. More work is needed before
we add such functionality.