Kevin Barry [Thu, 19 Feb 2015 15:51:52 +0000 (15:51 +0000)]
Doc: replaced tabs with spaces in /ly/*.ly
Issue 1432
A number of the *.ly files have a mixture of
tabs and spaces to generate their indents.
This can lead to ugly/unhelpful indenting for
some editors. The tabs should be replaced with
spaces.
David Nalesnik [Wed, 18 Feb 2015 17:33:51 +0000 (11:33 -0600)]
Issue 4294: Functions to display rhythmic information of a grob
Convenient ways to return the musical position of a grob within
a score will be very helpful in debugging, among other uses.
This patch creates two Scheme functions which return the location
of a grob based on the associated paper column. In the case of
spanners, this is the column of the left bound.
(1) grob::rhythmic-location returns a pair consisting of measure-number
and measure-position;
(2) grob::when returns a moment representing the global timestep.
David Nalesnik [Sun, 15 Feb 2015 19:47:46 +0000 (13:47 -0600)]
Scheme function to return a grob's name
Users of Scheme would benefit from a convenient way to access a
grob's name. This patch creates the function grob::name, which
takes a grob as argument and returns its name as a symbol.
David Nalesnik [Sat, 14 Feb 2015 20:45:07 +0000 (14:45 -0600)]
Add Scheme function to return column associated with Item.
The C++ function Paper_column::get_column is used frequently,
and it makes sense to have a Scheme function which performs
the same task. An example of a practical application
is the request by users to return the location of a particular
grob in a score: this is done by examining the PaperColumn
or NonMusicalPaperColumn associated with the grob.
David Kastrup [Wed, 18 Feb 2015 15:40:49 +0000 (16:40 +0100)]
Issue 4293/3: smobs.tcc: robustify {mark,print}_trampoline in connection with free_smob
Guilev2 has little qualms calling mark/print even after freeing a smob.
So we clean out the pointer to smob data when freeing/unregistering it,
and let the mark/print trampolines detect this condition and punt.
David Nalesnik [Wed, 4 Feb 2015 20:07:01 +0000 (14:07 -0600)]
Allow independent adjustment of minimum length for spanner siblings
The property minimum-length does not allow independent adjustment
of the siblings of broken spanners. This patch adds a property,
minimum-length-after-break, which, if set, behaves similarly to minimum-length,
but only affects siblings starting a line. If minimum-length-after-break is
unset, minimum-length still controls all lengths.
A regtest demonstrates usage of the new property with a number of spanners.
Another regtest demonstrates usage and compatibility of minimum-distance
and minimum-distance-after-break.
David Nalesnik [Mon, 26 Jan 2015 14:13:22 +0000 (08:13 -0600)]
Issue 2535: Staccato on stem side alignment when other articulations are present
The default positioning of staccato dots in combination with other articulations
is poor, because the dot is positioned midway between the center of the note head
and the stem, while all other scripts are centered on the note head.
A mechanism is needed to allow a staccato dot to be positioned differently when alone
and when in combination with other articulations. This patch introduces a new property,
called 'toward-stem-shift-in-column, which works alongside 'toward-stem-shift to control
a script's position relative to the stem. If set for a script appearing within a column,
the new property overrides any setting in 'toward-stem-shift. The new property has
been set only for staccato and staccatissimo.
The previous default of 0.5 for staccato has been changed to 1.0, in accordance with
Gould's recommendation that a staccato dot be centered on the stem.
In order to allow a script to recognize the column organizing it, a pointer to
ScriptColumn, called 'script-column, has been added to script-interface.
Other changes:
--The regtest script-shift.ly has been modified to use scripts other than
staccato.
--A new regtest, script-shift-staccato.ly, illustrates the idiosyncratic
behavior of staccato dots.
--Documentation of the property 'toward-stem-shift has been made more
accurate.
Knut Petersen [Thu, 8 Jan 2015 18:00:44 +0000 (18:00 +0000)]
Reduce size of PDF files when inc. in *TeX docs
Issue 4251
This changes the way lilypond uses fonts to draw glyphs.
It avoids to used glyphshow for all emmentaler glyphs and
adds encoding vectors to the emmentaler fonts before they
are used. It also changes the ghostscript parameters used
to generate pdfs from postscript code.
These changes help to reduce pdf file sizes if you include
lilypond snippets in *TeX documents. The pdfs generated by
a patched lilypond and *tex themselves are _much_ bigger,
but if you run ghostscript and pdfsizeopt.py on those
files they implode.
Doc additions to the Usage Manual included:
Added a command line option
--bigpdf / -b, and documented that option in the german
and english versions of usage.pdf .
Internal hyperlinks are fully preserved with current
ghostscript git master.
External hyperlinks (GoToR) _to_ a file processed this
way are broken. Fixing this would require major changes
to ghostscript.
External hyperlinks _from_ a file processed this way to
other pdfs are preserved if the reader program isn't
broken (acroread is not broken in this respect, evince is).
For more details see Ghostscript bug #695747
<http://bugs.ghostscript.com/show_bug.cgi?id=695747#c22>
Peter Chubb [Tue, 20 Jan 2015 21:18:19 +0000 (08:18 +1100)]
Fix trill-span errors
The last change introduced a bug: ac:twiddletime returns a moment, and it
was changed to return a duration. This causes a lilypond error when
using trillspan and articulate.
David Nalesnik [Tue, 6 Jan 2015 22:54:39 +0000 (16:54 -0600)]
Issue 4238: Glissando overlaps dot
Glissandi will now begin after augmentation dots by default. This
behavior may be changed by overriding a new subproperty named
'start-at-dot, set by default to #t.
Dan Eble [Fri, 9 Jan 2015 04:27:35 +0000 (23:27 -0500)]
Issue 4252: Remove Unfolded_repeat_iterator
To eliminate redundancy, remove Unfolded_repeat_iterator and rely on
Sequential_iterator with a customized elements-callback factored out
of unfold-repeats-fully.
Peter Chubb [Mon, 12 Jan 2015 18:45:55 +0000 (18:45 +0000)]
Articulate.ly: Fix mordent and prall timing
Issue 4247
When a prall or mordent was on a note
shorter than a semiquaver, the calculation
of timing for the main note after stealing
the time for the ornament used to generate
a negative duration.
Instead of a subtracting ornament time
from the main note, generate the ornament
using a fixed timing, tack it on the
beginning, and then compress the resulting
music to be the same length as the original.
Tristan Jelacic [Mon, 12 Jan 2015 18:41:33 +0000 (18:41 +0000)]
Articulate.ly: Fix trill timing
Issue 4190
Used a fixed duration for the twiddletime
instead of the broken heuristic that was
used before. This improves trill sound for
slow music, and doesn't interfere with fast music.
Dan Eble [Mon, 29 Dec 2014 02:54:52 +0000 (21:54 -0500)]
Issue 4233: Improve partcombine multi-measure rest handling.
Add "silence1" and "silence2" states which constrain the partcombine
iterator to take events from a specific part during intervals of
silence. These new states allow the following improvements.
Detect when a multi-measure rest starts in the middle of a
multi-measure rest in the other voice and engrave it as a shared rest.
Previously, the new rest would have been engraved as a voice-specific
rest.
In solo analysis, when a rest and a multi-measure rest begin
simultaneously, engrave the rest as a shared rest and omit the
multi-measure rest. Previously, both rests would have been engraved
as voice-specific rests.