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.
James Lowe [Mon, 20 Jun 2011 00:06:41 +0000 (01:06 +0100)]
Doc: NR minor edits to Clef and Cue section
Just to tie up the two sections together with some
@seealso entries plus references in the main 'Clef' section
to mention \cueClef and \cueDuringWithClef.
Corrected a few 'double-spacing after period' corrections.
James Lowe [Mon, 6 Jun 2011 16:38:52 +0000 (17:38 +0100)]
Doc: Added \cueClef command
Added usage of \cueClef and \cueClefUnset commands.
Added some @cindex and @funindex entries
Moved the small section for cueVoice to the top and updated the first two examples
to be more in keeping with the preceding examples added for
\cueDuringWithCleff.
Added new @lilyponds showing how to use \cueClef with CueVoice
Graham Percival [Wed, 15 Jun 2011 15:57:04 +0000 (16:57 +0100)]
AUTHORS: update for 2.15.
Move all *Current contributors to *Previous. Left Bug Squad alone
because they're still doing the same thing. Added a few names
from git of people who've gotten stuff added to 2.15.
Janek Warchol [Sun, 12 Jun 2011 10:41:44 +0000 (12:41 +0200)]
doc: changing example for overriding positions
example in LM 4.5.2 (fixing beam collision)
is outdated because beam collision has been
implemented, so there is nothing to fix.
Therefore I change the type of collision
to beam-tie collision.