David Kastrup [Sun, 27 Jul 2014 16:01:09 +0000 (18:01 +0200)]
Issue 4033: All subsequent clef transpositions are marked as optional
This removes a bug cover-up in scm/parser-clef.scm, implements the
necessary functionality in display-lily-music and adds some regtests
for that functionality.
James Lowe [Tue, 15 Jul 2014 21:21:10 +0000 (22:21 +0100)]
Doc: Appendix - Articulations and Ornamentation - part 2
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 1 was commit 8553021
This is part 2 and covers 'Fermata', 'Instrument
specific', 'Repeat signs' and 'Ancient' scripts.
Also, after more consideration, a third example
of each script has been added to show the
explicit differences between the up/down/neutral
positions. Not every script has a different
up/down glyph nor is positioned up/down when
placed on a note that is either top or bottom of
the Staff without explicit positioning. So this,
I hope just clarifies things (regardless whether
the position is musically 'correct' notation).
I have also sey the @code{} script examples into
the same column as the @lilypond examples; saving
a significant of wasted page space. Also I have
removed unnecessary lilypond-book variables making
the texinfo code less noisy.
Remove warning when there are no noteheads to attach lyrics to.
The warning was added to address issue 248, but it is now moot after
issue 3254 (c73b41b3e7be6d7): attaching lyrics to a note-less context
(like Devnull) is perfectly legal now.
As far as I can see, we don't want TextScript.cross-staff to be true
in any situation, because it would result in unwanted collisions.
Why it worked before: cross-staff property in this example evaluated to #f,
but only because of a bug in Script_interface::calc_cross_staff. That
function should have marked the TextScript as cross-staff if the stem
of the note to which TextScript was attached was cross-staff, but it
didn't work correctly because it expected the parent of the TextScript
to be a NoteColumn, while it actually was a PaperColumn. When I changed
the parent to be a NoteColumn, the function started working correctly
and marked the TextScript as cross-staff, so I had to change the default
value of the property.
Mark Polesky [Tue, 15 Jul 2014 19:34:15 +0000 (12:34 -0700)]
Issue 4015: Add \magnifyStaff.
* Add \magnifyStaff.
* Rewrite parts of the \magnifyMusic function so that it can share
some scheme code with the new \magnifyStaff function.
* Add regtests.
* Update documentation.
Mark Polesky [Wed, 9 Jul 2014 00:04:25 +0000 (17:04 -0700)]
Issue 3999: Make tablature half-note stem-spacing adjustable.
This adds a new property to the Stem grob called
'double-stem-separation (default=0.5), that allows users to adjust
the space between the double-stemmed half-notes in tablature:
David Kastrup [Tue, 8 Jul 2014 09:04:19 +0000 (11:04 +0200)]
Issue 3998: Let "Mars" example in pitch snippets use isolated durations
This is one example quite benefitting from issue 3648. One somewhat
incidental boon is that it would now work in relative mode without
requiring the make-relative macro.
David Kastrup [Wed, 9 Jul 2014 15:31:11 +0000 (17:31 +0200)]
Issue 2617: simple chord inversions take 2 octaves
With this change, chord inversions transpose all notes following the
inversion from the original chord down along with the inversion, as long
as the result ends up below the root note of the uninverted chord.
So with \chordmode { c:11 } => < c' e' g' bes' d'' f'' >
we get \chordmode { c:11/e } => < e g bes c' d'' f'' >
In order to have the Chord_name_engraver reconstruct the correct
uninverted chord, all the additionally octavated note events are given
an octavation property like the inversion event itself.
An "inversion" on the chord root just transposes the chord root one
octave down, leaving the rest in place.
David Kastrup [Sun, 13 Jul 2014 13:30:03 +0000 (15:30 +0200)]
Issue 4009: \retrograde fails on slurs
The section "Retrograde" in the Notation Reference is affected.
This became likely exposed with issue 2240; the corresponding
regtest does not cover it. The problem was existent previously
for slurs and other spans inside of chords.
Added two Clefs to notation-appendices.itely - Clef Styles
\clef "G2" and \clef moderntab
Removed excessive brackets in the @lilypond constructions and
updated the '\clef tab' entry so that it engraves correct out
put by adding a \new TabStaff block in the @lilypond example.
Mark Polesky [Fri, 11 Jul 2014 06:03:06 +0000 (23:03 -0700)]
Issue 3991: \magnifyMusic: surrender to issues 3987 and 3990.
Until issues 3987 and 3990 are fixed, automatic scaling
of horizontal spacing with \magnifyMusic is broken. This
patch turns the feature off, and adds a note in the docs.
Janek Warchoł [Mon, 30 Jun 2014 20:14:16 +0000 (22:14 +0200)]
Issue 2462: don't change ideal spacing when adding a rod
When objects like lyrics are added to the PaperColumns, LilyPond inserts
rods between these columns to ensure that the objects won't overlap.
However, the ideal distance should remain unchanged. For example, in
notes in 2nd measure have long lyrics attached to them - min_distance_
of the springs between these columns should be adjusted, but distance_
(the ideal distance) should not: it should be the same as for notes
with short lyrics. When the line is stretched so much that the minimum
distances are not involved, the springs between notes in both measures
should behave (almost) identical.
Note that there are more such problems in the springs code, for example
in merge_springs. The code should be rewritten, but that's not trivial.
Since this one-liner fixes some instances of the problem without any bad
side-effects, it makes sense to include it separately.
doc: update make-simple-closure example in Extending (Issue 3993)
After improvements in Self_alignment_interface::aligned_on_parent
(in particular after fixing issue 3254) it was possible to simplify
default X-offset values for several grobs, so that they didn't have
to use make-simple-closure (see e.g. commit 1d765020f8679958). This
made an example in Extending 2.7 obsolete, so I'm replacing it with
one that still uses make-simple-closure.
Janek Warchoł [Wed, 27 Mar 2013 16:20:03 +0000 (17:20 +0100)]
Issue 2245: always align dynamics and lyrics on "main" notehead
Until now, LyricTexts and DynamicTexts had their X-parents set to
the first NoteHead in the NoteColumn. This resulted in inconsistent
alignment - placement of lyrics and dynamics depended on the order
of notes in the input:
% this was aligned differently
{ <f' g'>1\p <g' f'>\p }
\addlyrics { la la }
By using NoteColumns themselves as the X-parents, we make sure that
the input order won't matter. Since the NoteColumn contains all NoteHeads
(including suspended ones, which usually should be ignored when aligning),
as well as Flags and some other objects, we cannot use its X-extent directly -
instead, we add a function for calculating X-extent of the "main" part of the
NoteColumn, i.e. X-extent of the non-suspended NoteHeads (represented by the
NoteHead furthest away from the stem).
James Lowe [Tue, 1 Jul 2014 20:32:09 +0000 (21:32 +0100)]
Doc: NR 4.5.4 Change Node name from 'Line length' to 'Line width'
Issue 3982
Change Node name from 'Line length' to 'Line width'.
In the Notation Reference, this page is called
"Line length" but the property that it covers
(among others) is called "line-width." Seems like
it would be better if the title of the page was
renamed "Line width" for greater consistency.
David Kastrup [Thu, 3 Jul 2014 08:22:37 +0000 (10:22 +0200)]
Issue 3986: \displayScheme broken
\displayScheme \markup \null
failed because a markup following an omitted optional argument (here the
optional output port) was backed up erroneously with the token type
LYRIC_ELEMENT only to be used in lyrics mode.
The optional argument was introduced with issue 2067 in version 2.19.0.
The actual underlying parser error triggered by this, however, is quite
older and originates from
David Kastrup [Thu, 5 Jun 2014 18:34:14 +0000 (20:34 +0200)]
Issue 3983: Avoid define-public and define*-public with curried definitions
Regarding curried definitions, GUILE has problems with define-public
before version 2.0.10, and with define*-public even later.
define-safe-public is implemented by LilyPond itself rather than the
(ice-9 curried-definitions) module and is unproblematic.
This is basically a cop-out since juggling with overriding bugfix
definitions of define-public is a distraction for getting GUILEv2
migration under way that we can do without.
Make DynamicTexts, TextScripts and many other grobs use aligned_on_parent,
which makes their behaviour consitent, predictable and thus more user-friendly.
Janek Warchoł [Mon, 23 Jun 2014 21:30:49 +0000 (23:30 +0200)]
TextScript, CombineTextScript: use aligned_on_parent
I think this makes more sense than just using "self-alignment".
It makes these grobs consistent with Lyrics and Dynamics, and
allows users to override their alignment more predictably.
Expected changes in output: TextScripts and CombineTextScripts
will be aligned slightly different when the user sets self-alignment-X
explicitly (parent notehead will be included in alignment, as in Lyrics).
Default placement should remain the same.
I'm also changing one regtest, just to make sure that despite slightly
changed alignment the markups will stick out far enough to the left.
Janek Warchoł [Mon, 23 Jun 2014 21:04:26 +0000 (23:04 +0200)]
Replace XY-offset closures with aligned_on_parent where possible
It doesn't make sense to specify placement using multiple added
callbacks or closures when we can use aligned_on_parent. What's
more, aligned_on_parent should expose more consistent interface
for the users - affected grobs should now behave similarly to
LyricTexts and DynamicTexts. For example, this
Janek Warchoł [Fri, 29 Mar 2013 23:11:28 +0000 (00:11 +0100)]
Clean up DynamicText horizontal alignment.
Until now, DynamicText alignment was messy, as there were 3 different
callbacks involved - some of them interacting in a confusing way:
- in define-grobs.scm, X-offset property was initialized to
ly:self-alignment-interface::x-aligned-on-self,
- Dynamic_engraver called set_center_parent on every DynamicText
attached to a note, so that half a NoteHead width was always added
to its X-offset (producing confusing results for example when
user requested dynamics to be left-aligned),
- DynamicTexts living in a Dynamics context used a completely
different offset callback, which aligned them on NoteColumns.
Since aligned_on_parent is now able to correctly align grobs
with PaperColumn parents (issue 3254), we can use it for all
DynamicTexts and have a single interface for the job.
Expected changes in output: DynamicTexts in Dynamics context
aligned to suspended noteheads may be placed up to 1/4 NoteHead
width further to the right. This shouldn't be a problem.
Patrick Schmidt [Sat, 28 Jun 2014 20:24:23 +0000 (21:24 +0100)]
Reg Tests: XML 01b has an incorrect number of measures
Issue 3973
01b-Pitches-Intervals.xml from the Unofficial MusicXML
test suite contains only a single measure in MusicXML,
but there should be 41.
musicxml2ly is very tolerant here so the error doesn’t
show in the pdf.
Added missing <measure> elements
Fixed a typo in the title
Added missing <accidental> elements (They represent
the actual notated accidentals. Without these elements
there shouldn’t be any visible accidentals. So this is
actually a bug in musicxml2ly. The bug doesn’t show here
because musicxml2ly interprets the <alter> element which
represents the sounding pitch of a note.)
Janek Warchoł [Sun, 29 Jun 2014 20:58:45 +0000 (22:58 +0200)]
Rename argument to avoid preprocessor problems
Before this change, we were getting the following error with GUB:
/home/gub/gub/target/mingw/src/
lilypond-git.sv.gnu.org--lilypond.git-release-unstable/
lily/include/paper-column.hh:62:
error: expected identifier before ',' token
/home/gub/gub/target/mingw/src/
lilypond-git.sv.gnu.org--lilypond.git-release-unstable/
lily/include/paper-column.hh:62:
error: two or more data types in declaration of 'parameter'
David Kastrup suspects that the library/compiler used for bootstrapping
has a macro or reserved word defined for "interface" - changing the name
makes the problem go away.
James Lowe [Sat, 21 Jun 2014 12:38:59 +0000 (13:38 +0100)]
Doc: Usage: Added a clarifying paragraph about Error Messages
Issue 3873
Added a clarifying paragraph explaining that (the same)
diagnostics message can occur in multiple places for
(the same) input depending on the type and its context.
James Lowe [Sat, 21 Jun 2014 20:28:55 +0000 (21:28 +0100)]
Doc: NR Section 4.3 - reformatting as per CG Guidelines
Start of issue 3960
This section does not adhere to many aspects of the Contributors'
Guide Documentation policies.
This specific patch therefore is the 'first stage' of this issue
so as to clean up the section before then making changes to
the technical information. There is too much to do for a single patch,
so I expect to have to make a few more additional patches to tidy this
section up completely before the issue can be properly closed.
This patch includes:
* Correct Line lengths
* Added @seealsos where appropriate
* Re-ordered some of the @nodes so that they are grouped more logically
* Moved @subsections to @unnumberedsubsubsecs:
A few of these sections seem to 'talk through the code' so may
need to be improved later on. However, for now I have moved these
subsections to unnumberedsubsubsec under the main 'Page Breaking'
node. Moved one of these new unnumberedsubsucsecs around so that
the sections on the different breaks come before the turning one.
* Created new Snippet:
One subsection was really a glorified snippet so I have made it into
one.
use X-parents to align MMRNumbers, MMRTexts and PercentRepeatCounters
It makes more sense to use X-parents than Y-parents for horizontal
alignment. To be able to do this, we have to ensure that X-parents of
MultiMeasureRestNumber, MultiMeasureRestText and PercentRepeatCounter
won't be overwritten by set_bound (these grobs are spanners). We can
do this because parents of these grobs are spanners as well.