* python/convertrules.py (conv): add rule for tupletNumberFormatFunction.
* ly/engraver-init.ly (AncientRemoveEmptyStaffContext): remove
tupletNumberFormatFunction.
* scm/define-grobs.scm (all-grob-descriptions): calc TupletNumber
text through 'text callback.
* lily/time-scaled-music-iterator.cc (construct_children): copy
tweaks generated events.
* scm/define-context-properties.scm
(all-user-translation-properties): remove tupletNumberFormatFunction
* lily/tuplet-engraver.cc (process_music): don't read
tupletNumberFormatFunction
* scm/output-lib.scm (tuplet-number::calc-fraction-text): new
function.
+2006-07-11 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * VERSION (PATCH_LEVEL): bump version.
+
+ * python/convertrules.py (conv): add rule for tupletNumberFormatFunction.
+
+ * ly/engraver-init.ly (AncientRemoveEmptyStaffContext): remove
+ tupletNumberFormatFunction.
+
+ * scm/define-grobs.scm (all-grob-descriptions): calc TupletNumber
+ text through 'text callback.
+
+ * lily/time-scaled-music-iterator.cc (construct_children): copy
+ tweaks generated events.
+
+ * scm/define-context-properties.scm
+ (all-user-translation-properties): remove tupletNumberFormatFunction
+
+ * lily/tuplet-engraver.cc (process_music): don't read
+ tupletNumberFormatFunction
+
+ * scm/output-lib.scm (tuplet-number::calc-fraction-text): new
+ function.
+
2006-07-11 Erik Sandberg <mandolaerik@gmail.com>
* lily/global-context-scheme.cc: Separated ly:run-translator into
* only show user-visible changes.
@end ignore
+@item
+Nested tuplets can have different formatting for each nesting level,
+
+@lilypond[ragged-right]
+\new Staff {
+ \time 5/4
+ \tweak #'text #tuplet-bracket::calc-fraction-text
+ \times 5/3 {
+ \tweak #'tupletNumberFormatFunction #denominator-tuplet-formatter
+ \times 2/3 {
+ c'8[ c'8 c'8]
+ }
+ \times 2/3 {
+ c'8[ c'8 c'8]
+ }
+ \times 2/3 {
+ c'8[ c'8 c'8]
+ }
+ }
+}
+@end lilypond
+
@item
New sections with different spacing parameters can be started with
@code{newSpacingSection}. This is useful when there are
PACKAGE_NAME=LilyPond
MAJOR_VERSION=2
MINOR_VERSION=9
-PATCH_LEVEL=10
+PATCH_LEVEL=11
MY_PATCH_LEVEL=
virtual void derived_mark () const;
virtual Moment pending_moment () const;
private:
+
/* tupletSpannerDuration */
Moment spanner_duration_;
+
/* next time to add a stop/start pair */
Moment next_split_mom_;
+
/* Recycle start/stop events if tupletSpannerDuration is set. */
Music *start_;
Music *stop_;
{
report_event (stop_);
report_event (start_);
+
next_split_mom_ += spanner_duration_;
/* avoid sending events twice at the end */
if (next_split_mom_ == get_music ()->get_length ().main_part_)
start_->set_spot (*origin);
start_->set_property ("numerator", mus->get_property ("numerator"));
start_->set_property ("denominator", mus->get_property ("denominator"));
+ start_->set_property ("tweaks", mus->get_property ("tweaks"));
+
SCM stop_scm = scm_call_2 (ly_lily_module_constant ("make-span-event"), tuplet_symbol, scm_from_int (STOP));
stop_ = unsmob_music (stop_scm);
if (i > 0 && tuplets_[i - 1].bracket_)
Tuplet_bracket::add_tuplet_bracket (tuplets_[i - 1].bracket_, tuplets_[i].bracket_);
-
- SCM proc = get_property ("tupletNumberFormatFunction");
- if (ly_is_procedure (proc))
- {
- SCM t = scm_apply_0 (proc, scm_list_1 (tuplets_[i].music_->self_scm ()));
- tuplets_[i].number_->set_property ("text", t);
- }
}
}
/* doc */ "Catch TupletSpannerEvent and generate appropriate bracket ",
/* create */ "TupletBracket TupletNumber ",
/* accept */ "tuplet-spanner-event",
- /* read */ "tupletNumberFormatFunction tupletFullLength ",
+ /* read */ "tupletFullLength ",
/* write */ "");
harmonicAccidentals = ##t
fingeringOrientations = #'(up down)
stringNumberOrientations = #'(up down)
- tupletNumberFormatFunction = #denominator-tuplet-formatter
markFormatter = #format-mark-letters
rehearsalMark = #1
subdivideBeams = ##f
conversions.append (((2, 9, 9), conv, """annotatefoo -> annotate-foo"""))
+def conv (str):
+ str = re.sub (r"""\\set ([a-zA-Z]+.?)tupletNumberFormatFunction *= *#denominator-tuplet-formatter""",
+ r"""\\override \1TupletNumber #'text = #tuplet-number::calc-denominator-text""", str)
+
+ str = re.sub (r"""\\set ([a-zA-Z]+.?)tupletNumberFormatFunction *= *#fraction-tuplet-formatter""",
+ r"""\\override \1TupletNumber #'text = #tuplet-number::calc-fraction-text""", str)
+
+ if re.search ('tupletNumberFormatFunction', str):
+ error_file.write ("\n")
+ error_file.write ("tupletNumberFormatFunction has been removed. Use #'text property on TupletNumber")
+ error_file.write ("\n")
+
+ return str
+
+conversions.append (((2, 9, 11), conv, """\\set tupletNumberFormatFunction -> \\override #'text = """))
+
+
(tupletFullLength ,boolean? "If set, the tuplet is printed up to
the start of the next note.")
- (tupletNumberFormatFunction
- ,procedure?
- "Function taking a music as input, producing a string. This function
-is called to determine the text to print on a tuplet bracket.")
-
(tupletSpannerDuration ,ly:moment? "
Normally a tuplet bracket is as wide as the
@code{\\times} expression that gave rise to it. By setting this
(edge-height . (0.7 . 0.7))
(shorten-pair . (-0.2 . -0.2))
(staff-padding . 0.25)
-
(direction . ,ly:tuplet-bracket::calc-direction)
(positions . ,ly:tuplet-bracket::calc-positions)
(connect-to-neighbor . ,ly:tuplet-bracket::calc-connect-to-neighbors)
(TupletNumber
. (
(stencil . ,ly:tuplet-number::print)
+ (text . ,tuplet-number::calc-denominator-text)
(font-shape . italic)
(font-size . -2)
(avoid-slur . inside)
(ly:grob-translate-axis! g 3.5 X)))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Tuplets
+
+(define-public (tuplet-number::calc-denominator-text grob)
+ (let*
+ ((mus (ly:grob-property grob 'cause)))
+
+ (number->string (ly:music-property mus 'denominator))))
+
+
+(define-public (tuplet-number::calc-fraction-text grob)
+ (let*
+ ((mus (ly:grob-property grob 'cause)))
+ (format "~a:~a"
+ (ly:music-property mus 'denominator)
+ (ly:music-property mus 'numerator))))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Color
;;;; (c) 1998--2006 Han-Wen Nienhuys <hanwen@cs.uu.nl>
;;;; Jan Nieuwenhuizen <janneke@gnu.org>
-(define-public (denominator-tuplet-formatter mus)
- (number->string (ly:music-property mus 'denominator)))
-
-(define-public (fraction-tuplet-formatter mus)
- (string-append
- (number->string (ly:music-property mus 'denominator))
- ":"
- (number->string (ly:music-property mus 'numerator))))
-
;; metronome marks
(define-public (format-metronome-markup event context)
(let* ((dur (ly:music-property event 'tempo-unit))