their leftmost note.
* input/regression/collision-alignment.ly: new file.
* input/test/volta-chord-names.ly: new file.
* lily/volta-bracket.cc (print): handle volta brackets without
bars.
2004-07-04 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ * lily/note-collision.cc (do_shifts): align colliding notes to
+ their leftmost note.
+
+ * input/regression/collision-alignment.ly: new file.
+
* ly/init.ly: don't print gc stats.
* scripts/lilypond-book.py (Lilypond_snippet.output_texinfo): add
* lily/axis-group-engraver.cc (process_acknowledged_grobs): catch
cyclic parents when two axis-group-engravers are
- present. Fixes: crash-axis-group-engraver.ly. Backportme?
-
+ present. Fixes: crash-axis-group-engraver.ly.
+
* input/test/volta-chord-names.ly: new file.
* scm/define-context-properties.scm
(all-user-translation-properties): change voltaOnThisStaff
- definition. Backport?
+ definition.
* lily/volta-engraver.cc (stop_translation_timestep): set bounds
if necessary.
@node Tablatures
@section Tablatures
+@cindex tablature
+@cindex guitar tablature
+
Tablature notation is used for notating music for plucked string
instruments. It notates pitches not by using note heads, but by
indicating on which string and fret a note must be played. LilyPond
@end lilypond
@cindex minimumFret
+@cindex fret
When no string is specified, the first string that does not give a
fret number less than @code{minimumFret} is selected. The default
BUG HUNTERS/SUGGESTIONS
+Dave Phillips
David Bobroff
David Brandon
Peter Rosenbeck
PACKAGE_NAME=LilyPond
MAJOR_VERSION=2
MINOR_VERSION=3
-PATCH_LEVEL=5
+PATCH_LEVEL=6
MY_PATCH_LEVEL=
--- /dev/null
+\header {
+
+ texidoc = "Notes in different staves should be aligned to the
+ left-most note, in case of collisions."
+
+}
+
+\paper { raggedright = ##t }
+
+\version "2.3.6"
+
+\relative <<
+ \new Staff {
+ <<
+ { f g } \\
+ { g f }
+ >> }
+ \new Staff {
+ c4 c
+ }
+>>
}
-\version "2.2.3"
+\version "2.3.5"
<<
\new ChordNames \with {
voltaOnThisStaff = ##t
while (flip (&d) != UP);
Link_array<Grob> done;
+ Real left_most = 1e6;
+
+ Array<Real> amounts;
for (; ly_c_pair_p (hand); hand =ly_cdr (hand))
{
Grob * s = unsmob_grob (ly_caar (hand));
- Real amount = ly_scm2double (ly_cdar (hand));
-
- s->translate_axis (amount *wid, X_AXIS);
+ Real amount = ly_scm2double (ly_cdar (hand)) * wid;
+
done.push (s);
+ amounts.push (amount);
+ if (amount < left_most)
+ left_most = amount;
+
}
for (; ly_c_pair_p (autos); autos =ly_cdr (autos))
{
Grob * s = unsmob_grob (ly_caar (autos));
- Real amount = ly_scm2double (ly_cdar (autos));
+ Real amount = ly_scm2double (ly_cdar (autos)) *wid;
if (!done.find (s))
- s->translate_axis (amount * wid, X_AXIS);
+ {
+ done.push (s);
+ amounts.push (amount);
+ if (amount < left_most)
+ left_most = amount;
+ }
+ }
+
+ for (int i = 0; i < amounts.size(); i++)
+ {
+ done[i]->translate_axis (amounts[i] - left_most, X_AXIS);
}
}