\addlyrics created its own context (consequently not using \stemDown)
since it had no context name for the Lyrics context to attach to. In
this case (namely being preceded by an unnamed new Voice context), it
will now give a name to the context itself.
since the voice the lyrics attached to was always a new voice.
Fixing the grouping in the grammar is a first required step for getting
this under control.
James Lowe [Thu, 26 Jun 2014 21:37:04 +0000 (22:37 +0100)]
Doc: NR Pitches.itely - Clef - updated snippets and text
Issue 3976
Added 2 new snippets:
1 snippet added to NR
1 snippet added just to Snippets
Modified 1 existing snippet:
This was already (and still is) included in the NR
Deleted 2 snippets (and incorporated them in the
main text in @lilyponds)
Added new @lilypond example that was originally
described (but not show)n in the 'Tweaking Clef
Properties' snippet to show how to remove
the clef glyph from the end of a line. As this
'tweak' is relatively simple (a single \set and
\unset) and more than likely to be used (IMHO) by
the general user than the listed items in the
snippet, I thought it better to be in the NR than
another example in either an already long snippet
or by creating yet another snippet.
David Kastrup [Thu, 4 Sep 2014 13:07:20 +0000 (15:07 +0200)]
Issue 4030: Lyrics associated to a Staff are placed on top of each other
The approach here is simply to avoid attaching to noteheads that have
actually started _before_ the current moment of time. It is somewhat
irritating that includeGraceNotes cannot possibly be supported in
associated voices with its own timing (rather than the fully
synchronized \addlyrics or \lyricsto): Instead you need to use the same
durations, including \grace constructs, in order to match the note you
are aiming for.
David Kastrup [Wed, 3 Sep 2014 17:29:27 +0000 (19:29 +0200)]
Issue 3832: react sanely to ill-formed version strings
Mostly, this cleans up Lilypond_version
We no longer convert to int because it is weird, but we still want
version comparisons. Conversion to bool for checking validity seems
nice in addition.
And bombing out because of invalid data to String_convert::dec2int
seemed definitely non-nice. This version requires specifying at
least major and minor version number explicitly separated by dots.
It accepts a trailing dot, too. A trailing extra_patch_string after
major.minor.patchlevel. is also accepted but not interpreted.
David Kastrup [Thu, 4 Sep 2014 09:18:06 +0000 (11:18 +0200)]
Issue 4028: Automatic beaming of grace notes inhibits beam subdivision
While the whole extend_mom_ logic seems rather fishy to me (it probably
should be reset to a sane value at some other location per-beam) and
I don't have an actual idea why the Grace_auto_beam_engraver would
be involved at all here, initializing extend_mom_ to a value before
all grace notes seems to do the trick for this report.
Trevor Daniels [Sat, 30 Aug 2014 20:44:23 +0000 (21:44 +0100)]
Issue 4078: Doc: Use variables rather than instrument definitions
Using variables for switching character names in vocal music
rather than instrument definitions is easier to understand,
easier to set up and quicker to type. It also frees up the
use of instrument definitions so they may be tailored for
better use in instrumental compositions.
Remove the mention of \transposition. This is never required
in vocal music.
David Kastrup [Mon, 25 Aug 2014 15:46:29 +0000 (17:46 +0200)]
Issue 4082/1: Reimplement Smobs via templates rather than preprocessor
This creates the underlying code for the new implementation without
converting the bulk of the code (which is left to a script committed
separately). The include file ly-smobs.icc is removed completely. A
new file smobs.tcc contains generic template instantiations. The GCC
implementation works by loading it unconditionally in smobs.hh.
Depending on the underlying template mechanism, it might be feasible to
include it into just one compilation unit.
Where the previous implementation referred to class names passed into
macros, the typeinfo mechanism of C++ is employed for deriving the
respective name. The GCC implementation uses some cursory demangling of
the resulting type id, converting "3Box" into "Box" and similarly.
Other APIs might warrant different polishing but the type names are
mostly used for internal purposes and differences are not all that
problematic.
Trevor Daniels [Sat, 30 Aug 2014 11:42:54 +0000 (12:42 +0100)]
Issue 4075: Doc: Correct the instrumentTransposition setting in NR 2.1.6
The value of instrumentTransposition affects the MIDI
pitch. As all the notes in this example are entered
at the correct sounding pitch no instrument transposition
is required. Previously Kaspar sounded an octave too low.
But it turns out that the "formal" definition of a list given there is
unsuitable for determining the list status of circular lists because the
definition, well, turns out to be circular.
Janek Warchoł [Sun, 10 Aug 2014 19:09:42 +0000 (21:09 +0200)]
Use aligned-on-x-parent instead of other callbacks for some grobs
Now that we have an easy way of specifying different alignments for
grob and its parent (see 0c4f221e5d), we can use aligned-on-.-parent
in places that we previously used .-aligned-on-self. With this change,
the users have more control over the placement of grobs.
David Kastrup [Wed, 20 Aug 2014 12:27:55 +0000 (14:27 +0200)]
Issue 3518: Support temporary divisi staves
This provides the low-level support for temporary divisi staves by
adding a `VerticalAxisGroup.remove-layer' property of type integer that
interacts with the "Keep_alive_together_engraver": when set to a numeric
value, staves with the same numeric value are kept alive together as one
group. Of several such groups with live staves, only the one with the
lowest common numeric `remove-layer' is retained.
David Kastrup [Mon, 18 Aug 2014 16:17:05 +0000 (18:17 +0200)]
Issue 4070: Cyclic markup detection unable to deal with non-linear code execution
This uses dynamic winding to keep the stack depth counts accurate even
in the presence of non-local exits like those used of
map-markup-commands. It also changes the regtest
markup-cyclic-reference.ly since it seems too much trouble to trap both
cyclic references via a tortoise/hare algorithm as well as limiting the
maximum markup stack depth.
David Kastrup [Wed, 30 Jul 2014 15:34:55 +0000 (17:34 +0200)]
Issue 2507: Stop the entanglement of context properties and grob property internals
This introduces a semi-opaque structure Grob_properties meeting the
predicate ly:grob-properties? that is algorithmically handled at the C++
level via a wrapper structure Grob_property_info.
Encapsulating grob properties in that manner reduces the potential for
clashes and makes it easier to change algorithms and/or internal
representation.
While the principal distinction between context properties (one value
per context) and context-based grob property templates (one stack per
context) remains, at least the separation of the handling is more
pronounced.
David Kastrup [Thu, 14 Aug 2014 20:20:35 +0000 (22:20 +0200)]
Issue 3072: Nested overrides get confused with multiple contexts in play
The main problem with nested overrides lies not as much with the
override (which can be done reasonably well) but rather with the
corresponding reverts. Detecting and undoing a previously established
nested override by its effects on an alist, particularly when nested
overrides may be present at several different levels in several
different contexts and/or stack depths and may be undone in different
order from being established, is a complex problem. It is complex
enough that it is not clear that a satisfactory solution does even
exist: at least LilyPond's implementation breaks down for a number of
test cases.
The approach of this implementation is to not even try reverting nested
overrides from looking at their effects on the final result. Instead
nested overrides like
with ... filled in from other parts of the alist (which may change
independently at a later point of time) but rather by using
(bound-details left text) itself as a key and thus storing
((bound-details left text) . "foo")
as the representation of the override. Consequently, reverting an
override with the same nested property path is straightforward. Neither
the action of overriding nor of reverting now require referring to or
updating any part of the property stack outside of the current context.
The downside is that an actual reference to the resulting grob alist
requires expanding the nested overrides at the time of creating a grob
or otherwise asking for ly:context-grob-properties.
Since issue 2507 encapsulated grob property access into the
Grob_property_info algorithm container structure relying on data stored
in context properties of elements of type Grob_properties, changing the
respective algorithms can be facilitated completely in those classes.
In order to provide similarly efficient access and reasonable caching
and just-in-time reevaluation of previously computed values,
Grob_properties needed to be significantly extended in size.
Rewrite paths relative to the lily-output-dir or the output dir
depending on which one is being used. Always use forward slashes
since this is what lilypond expects, even on Windows.
James Lowe [Sun, 10 Aug 2014 08:34:20 +0000 (09:34 +0100)]
Doc: Appendix - Articulations and Ornamentation - part 3
Issue 1189
Create Texifo @multitable entries for the
List of Articulations appendix.
As there are a lot of separate scripts being
documented this Issue is going to be split
into multiple, smaller, parts to aid in the
review process. Part 2 was commit 4d6f2a27cc
This is part 3 and while not strictly
'Articulations and ornamentations' covers
the percussion scripts.
I have also set the @code{} script examples into
the same column as the @lilypond examples; saving
a significant amount of wasted page space. I have
removed unnecessary lilypond-book variables making
the texinfo code less noisy.
David Kastrup [Sun, 17 Aug 2014 08:14:44 +0000 (10:14 +0200)]
Fix issue 3826
Commit 2d3a5d87166caa13feb036e23086b0d4f23283f4 let
scripts/auxiliar/update-with-convert-ly.sh call the non-existent
Makefile target "make pythonmodules" instead of "make python-modules".