CVSROOT: /cvsroot/lilypond
Module name: lilypond
Branch:
Changes by: Han-Wen Nienhuys <[EMAIL PROTECTED]> 05/10/07 09:50:22
Modified files:
. : ChangeLog
Documentation/user: instrument-notation.itely
input/regression: figured-bass.ly
lily : figured-bass-continuation.cc
horizontal-bracket.cc lyric-hyphen.cc
scm : define-context-properties.scm define-grobs.scm
titling.scm
Log message:
* Documentation/user/instrument-notation.itely (Figured bass):
demonstrate extenders, update seealso links.
* scm/titling.scm (marked-up-headfoot): change tagline
handling. tagline = ##f will blank the tagline as well.
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/ChangeLog.diff?tr1=1.4159&tr2=1.4160&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/Documentation/user/instrument-notation.itely.diff?tr1=1.57&tr2=1.58&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/input/regression/figured-bass.ly.diff?tr1=1.36&tr2=1.37&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/figured-bass-continuation.cc.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/horizontal-bracket.cc.diff?tr1=1.26&tr2=1.27&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/lyric-hyphen.cc.diff?tr1=1.23&tr2=1.24&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/scm/define-context-properties.scm.diff?tr1=1.53&tr2=1.54&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/scm/define-grobs.scm.diff?tr1=1.240&tr2=1.241&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/scm/titling.scm.diff?tr1=1.18&tr2=1.19&r1=text&r2=text
Patches:
Index: lilypond/ChangeLog
diff -u lilypond/ChangeLog:1.4159 lilypond/ChangeLog:1.4160
--- lilypond/ChangeLog:1.4159 Fri Oct 7 09:12:01 2005
+++ lilypond/ChangeLog Fri Oct 7 09:50:21 2005
@@ -1,5 +1,10 @@
2005-10-07 Han-Wen Nienhuys <[EMAIL PROTECTED]>
+ * lily/enclosing-bracket.cc (struct Enclosing_bracket): new file.
+
+ * Documentation/user/instrument-notation.itely (Figured bass):
+ demonstrate extenders, update seealso links.
+
* scm/titling.scm (marked-up-headfoot): change tagline
handling. tagline = ##f will blank the tagline as well.
Index: lilypond/Documentation/user/instrument-notation.itely
diff -u lilypond/Documentation/user/instrument-notation.itely:1.57
lilypond/Documentation/user/instrument-notation.itely:1.58
--- lilypond/Documentation/user/instrument-notation.itely:1.57 Mon Sep 12
12:40:39 2005
+++ lilypond/Documentation/user/instrument-notation.itely Fri Oct 7
09:50:22 2005
@@ -3986,7 +3986,7 @@
@c TODO: musicological blurb about FB
-LilyPond has limited support for figured bass
+LilyPond has support for figured bass
@lilypond[quote,raggedright,verbatim,fragment]
<<
@@ -4037,12 +4037,23 @@
\figuremode { < [4 6] 8 [_! 12] > < 5 \markup{ + \number 6 } > }
@end lilypond
+It is also possible to use continuation lines for repeated figures,
+
[EMAIL PROTECTED],relative=1]
+<<
+ \new Staff { c4 c }
+ \figures {
+ \set useBassFigureExtenders = ##t
+ <4 6> <3 6> <3 7>
+ }
+>>
[EMAIL PROTECTED] lilypond
Although the support for figured bass may superficially resemble chord
-support, it works much simpler. The @code{\figuremode} mode simply
-stores the numbers and @internalsref{FiguredBass} context prints
-them as entered. There is no conversion to pitches and no
-realizations of the bass are played in the MIDI file.
+support, it is much simpler. The @code{\figuremode} mode simply
+stores the numbers and @internalsref{FiguredBass} context prints them
+as entered. There is no conversion to pitches and no realizations of
+the bass are played in the MIDI file.
Internally, the code produces markup texts. You can use any of the
markup text properties to override formatting. For example, the
@@ -4050,7 +4061,10 @@
@seealso
-Program reference: @internalsref{BassFigure} object,
+Program reference: @internalsref{NewBassFigure},
[EMAIL PROTECTED], @internalsref{BassFigureLine},
[EMAIL PROTECTED], and
[EMAIL PROTECTED] objects and
@internalsref{FiguredBass} context.
@refbugs
Index: lilypond/input/regression/figured-bass.ly
diff -u lilypond/input/regression/figured-bass.ly:1.36
lilypond/input/regression/figured-bass.ly:1.37
--- lilypond/input/regression/figured-bass.ly:1.36 Thu Aug 18 22:01:01 2005
+++ lilypond/input/regression/figured-bass.ly Fri Oct 7 09:50:22 2005
@@ -1,34 +1,43 @@
-\version "2.6.0"
+\version "2.7.12"
+
\header {
- texidoc = "
-Figured bass is created by the FiguredBass context which responds to
-figured bass requests and rest-requests. You must enter these using
-the special @code{\figuremode @{ @}} mode, which allows you to type
-numbers, like @code{<4 6+>}.
-You can also type letters by entering quoted strings, which is shown in the
-last bass figure.
-" }
-\layout { raggedright = ##t }
+ texidoc = " Figured bass is created by the FiguredBass context which
+responds to figured bass events and rest events. You must enter these
+using the special @code{\figuremode @{ @}} mode, which allows you to
+type numbers, like @code{<4 6+>}.
+
+You can also enter markup strings. The vertical alignment may also be
+tuned.
+
+"
+
+}
+
+
+\paper { raggedright = ##t }
+
+
<<
- \figures {
- <3 [5 7]>
- \once \override BassFigure #'direction = #down
- <3 [5 7]>
- <3 [5] 7 [9 11]>
- <3+ 5- 7!>
- <3 _! 5 _- 7>
- <3 _ 5 _ 7>
- <"V7" ["bla" 6] \markup{ \musicglyph #"rests.2"} >
-
- }
- \context Voice {
- \clef bass
- c 4
- c c c c c
- g8
- }
+ \context Voice {
+ \clef bass
+ c 4
+ c c c c c
+ g8
+ }
+ \figures {
+ <3 [5 7]>
+ <3 [5] 7 [9 11]>
+ <3+ 5- 7!>
+ <3 _! 5 _- 7>
+ <3 _ 5 _ 7>
+ <"V7" ["bla" 6] \markup{ \musicglyph #"rests.2"} >
+
+ \once \override BassFigureAlignment #'stacking-dir = #UP
+ <3 [5 7]>
+
+ }
>>
Index: lilypond/lily/figured-bass-continuation.cc
diff -u lilypond/lily/figured-bass-continuation.cc:1.2
lilypond/lily/figured-bass-continuation.cc:1.3
--- lilypond/lily/figured-bass-continuation.cc:1.2 Thu Oct 6 13:12:57 2005
+++ lilypond/lily/figured-bass-continuation.cc Fri Oct 7 09:50:22 2005
@@ -19,60 +19,6 @@
#include "horizontal-bracket.hh"
-struct Figured_bass_bracket
-{
- static bool has_interface (Grob*);
-
-public:
- DECLARE_SCHEME_CALLBACK(print, (SCM));
-};
-
-
-ADD_INTERFACE(Figured_bass_bracket,
- "figured-bass-bracket-interface",
- "Brackets alongside bass figures.",
-
- /* props */
-
- /* ugh: should make bracket interface. */
- "bracket-flare "
- "shorten-pair "
- "edge-height "
- "padding "
- "thickness "
- "elements "
- );
-
-MAKE_SCHEME_CALLBACK (Figured_bass_bracket, print, 1);
-SCM
-Figured_bass_bracket::print (SCM grob)
-{
- Grob *me = unsmob_grob (grob);
- extract_grob_set (me, "elements", elements);
- if (elements.is_empty ())
- {
- me->suicide ();
- return SCM_EOL;
- }
-
- Grob *common_x = common_refpoint_of_array (elements, me, X_AXIS);
- Interval xext = Axis_group_interface::relative_group_extent (elements,
common_x, X_AXIS);
-
- Stencil left_br = Horizontal_bracket::make_bracket (me, me, elements,
- Y_AXIS, LEFT);
- Stencil right_br = Horizontal_bracket::make_bracket (me, me, elements,
- Y_AXIS, RIGHT);
-
- xext.widen (robust_scm2double (me->get_property ("padding"), 0.25));
- left_br.translate_axis (xext[LEFT], X_AXIS);
- right_br.translate_axis (xext[RIGHT], X_AXIS);
-
- left_br.add_stencil (right_br);
- left_br.translate_axis (-me->relative_coordinate (common_x, X_AXIS), X_AXIS);
- return left_br.smobbed_copy ();
-}
-
-
struct Figured_bass_continuation
{
static bool has_interface (Grob*);
Index: lilypond/lily/horizontal-bracket.cc
diff -u lilypond/lily/horizontal-bracket.cc:1.26
lilypond/lily/horizontal-bracket.cc:1.27
--- lilypond/lily/horizontal-bracket.cc:1.26 Wed Oct 5 13:05:44 2005
+++ lilypond/lily/horizontal-bracket.cc Fri Oct 7 09:50:22 2005
@@ -1,5 +1,5 @@
/*
- horizontal-bracket.cc -- implement Horizontal_bracket
+ horizontal-bracket.cc -- implement Horizontal_bracket
source file of the GNU LilyPond music typesetter
@@ -12,27 +12,18 @@
#include "directional-element-interface.hh"
#include "output-def.hh"
#include "staff-symbol-referencer.hh"
-#include "tuplet-bracket.hh" // ugh.
-#include "horizontal-bracket.hh" // ugh.
-
-/*
- TODO:
-
- This doesn't look very elegant: should support winged edges.
-
- Support texts on the brackets?
-*/
+#include "tuplet-bracket.hh"
+#include "horizontal-bracket.hh"
+#include "axis-group-interface.hh"
Stencil
-Horizontal_bracket::make_bracket (Grob *me, Grob *common,
- Link_array<Grob> grobs, Axis a, Direction dir)
+Horizontal_bracket::make_bracket (Grob *me, Grob *refpoint,
+ Link_array<Grob> grobs,
+ Axis a, Direction dir)
{
Axis other = other_axis (a);
-
- Grob *cx = common_refpoint_of_array (grobs, common, a);
-
- Interval ext = grobs.top ()->extent (cx, a);
- ext.unite (grobs[0]->extent (cx, a));
+ Grob *common = common_refpoint_of_array (grobs, refpoint, a);
+ Interval ext = Axis_group_interface::relative_group_extent (grobs, common,
a);
Drul_array<Real> edge_height = robust_scm2interval (me->get_property
("edge-height"),
Interval (1.0, 1.0));
@@ -47,22 +38,32 @@
Interval empty;
Offset start;
start[a] = ext.length ();
+
+ /*
+ ugh, Tuplet_bracket should use Horizontal_bracket, not the other way
around.
+ */
Stencil b
= Tuplet_bracket::make_bracket (me, other, start,
edge_height, empty, flare, shorten);
- b.translate_axis (ext[LEFT], a);
+ b.translate_axis (ext[LEFT] - refpoint->relative_coordinate (common, a)
+ , a);
return b;
}
+
+/*
+ TODO:
+
+ Support texts on the brackets?
+*/
+
MAKE_SCHEME_CALLBACK (Horizontal_bracket, print, 1);
SCM
Horizontal_bracket::print (SCM smob)
{
Grob *me = unsmob_grob (smob);
- Spanner *sp = dynamic_cast<Spanner *> (me);
-
extract_grob_set (me, "columns", gs);
if (!gs.size ())
{
@@ -70,13 +71,7 @@
return SCM_EOL;
}
- Grob *cx = me->common_refpoint (sp->get_bound (LEFT), X_AXIS);
- cx = cx->common_refpoint (sp->get_bound (RIGHT), X_AXIS);
-
- Stencil b = make_bracket (me, cx, gs, X_AXIS, get_grob_direction (me));
-
- b.translate_axis (- sp->get_bound (LEFT)->relative_coordinate (cx, X_AXIS),
X_AXIS);
-
+ Stencil b = make_bracket (me, me, gs, X_AXIS, get_grob_direction (me));
return b.smobbed_copy ();
}
Index: lilypond/lily/lyric-hyphen.cc
diff -u lilypond/lily/lyric-hyphen.cc:1.23 lilypond/lily/lyric-hyphen.cc:1.24
--- lilypond/lily/lyric-hyphen.cc:1.23 Fri Oct 7 09:12:03 2005
+++ lilypond/lily/lyric-hyphen.cc Fri Oct 7 09:50:22 2005
@@ -14,8 +14,11 @@
#include "paper-column.hh"
#include "moment.hh"
-MAKE_SCHEME_CALLBACK (Hyphen_spanner, print, 1)
- SCM
+/*
+ TODO: should extract hyphen from the font.
+ */
+MAKE_SCHEME_CALLBACK (Hyphen_spanner, print, 1);
+SCM
Hyphen_spanner::print (SCM smob)
{
Spanner *me = unsmob_spanner (smob);
@@ -128,6 +131,13 @@
}
ADD_INTERFACE (Hyphen_spanner, "lyric-hyphen-interface",
- "A centred hyphen is a simple line between lyrics used to divide
syllables",
- "padding thickness height dash-period minimum-length length");
+ "A centered hyphen is a simple line between lyrics used to
divide syllables",
+
+ /* props */
+ "padding "
+ "thickness "
+ "height "
+ "dash-period "
+ "minimum-length "
+ "length");
Index: lilypond/scm/define-context-properties.scm
diff -u lilypond/scm/define-context-properties.scm:1.53
lilypond/scm/define-context-properties.scm:1.54
--- lilypond/scm/define-context-properties.scm:1.53 Fri Oct 7 09:12:03 2005
+++ lilypond/scm/define-context-properties.scm Fri Oct 7 09:50:22 2005
@@ -24,10 +24,7 @@
`(
;; TODO FIXME
- (useBassFigureExtenders ,boolean? "")
- (figuredBassAlterationDirection ,ly:dir? "")
- (newFiguredBassFormatter ,procedure? "")
-
+
(aDueText ,string? "Text to print at a unisono passage.")
(alignBelowContext ,string? "Where to insert newly created context in
vertiical alignment.")
(alignAboveContext ,string? "Where to insert newly created context in
vertiical alignment.")
@@ -110,9 +107,13 @@
for the down staff of PianoStaff. Used by @code{\\autochange}")
(trebleStaffProperties ,list? "Alist of property settings to apply
for the up staff of PianoStaff. Used by @code{\\autochange}")
+
+ (newFiguredBassFormatter ,procedure? "Routine generating a markup
+for a bass figure.")
(bassFigureFormatFunction ,procedure? "Procedure that is called
to produce the formatting for a @code{BassFigure} grob. It takes a
list of @code{BassFigureEvent}s, a context, and the grob to format.")
+
(beatLength ,ly:moment? "The length of one beat in this time signature.")
(beatGrouping ,list?
"List of beatgroups, e.g., in 5/8 time @code{'(2
@@ -208,6 +209,8 @@
"extra vertical extent, same format as
@var{minimumVerticalExtent}")
+ (figuredBassAlterationDirection ,ly:dir? "Where to put
+alterations relative to the main figure.")
(followVoice ,boolean? "If set, note heads are tracked across staff
switches by a thin line")
@@ -411,6 +414,10 @@
@@end lilypond
@end example
.")
+
+ (useBassFigureExtenders ,boolean? "Whether to use extender lines
+for repeated bass figures")
+
(verticalAlignmentChildCallback ,procedure? "What callback to add
to children of a vertical alignment. It determines what
procedure is used on the alignment itself.")
Index: lilypond/scm/define-grobs.scm
diff -u lilypond/scm/define-grobs.scm:1.240 lilypond/scm/define-grobs.scm:1.241
--- lilypond/scm/define-grobs.scm:1.240 Thu Oct 6 13:12:57 2005
+++ lilypond/scm/define-grobs.scm Fri Oct 7 09:50:22 2005
@@ -215,7 +215,7 @@
bass-figure-interface
font-interface))))))
(BassFigureBracket
- . ((print-function . ,Figured_bass_bracket::print)
+ . ((print-function . ,Enclosing_bracket::print)
(edge-height . (0.2 . 0.2))
(meta . ((class . Item)
(interfaces . (figured-bass-bracket-interface)) ))
Index: lilypond/scm/titling.scm
diff -u lilypond/scm/titling.scm:1.18 lilypond/scm/titling.scm:1.19
--- lilypond/scm/titling.scm:1.18 Fri Oct 7 09:12:03 2005
+++ lilypond/scm/titling.scm Fri Oct 7 09:50:22 2005
@@ -49,7 +49,7 @@
(list pgnum-alist)
prefixed-alists
(layout-extract-page-properties layout))))
- (display prefixed-alists)
+
(interpret-markup layout props potential-markup))
empty-stencil))
_______________________________________________
Lilypond-cvs mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/lilypond-cvs