'text property too.
* ly/music-functions-init.ly: rename to StrokeFingerEvent, set
'text if string argument.
* scm/define-grobs.scm (all-grob-descriptions): rename to StrokeFinger.
* scm/define-context-properties.scm
(all-user-translation-properties): change to strokeFingerOrientations
+2006-10-16 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * scm/output-lib.scm (stroke-finger::calc-text): allow reading of
+ 'text property too.
+
+ * ly/music-functions-init.ly: rename to StrokeFingerEvent, set
+ 'text if string argument.
+
+ * scm/define-grobs.scm (all-grob-descriptions): rename to StrokeFinger.
+
+ * scm/define-context-properties.scm
+ (all-user-translation-properties): change to strokeFingerOrientations
+
2006-10-16 Erik Sandberg <mandolaerik@gmail.com>
* lily/parser.yy: remove debug output
{
\set stringFingerOrientations = #'(left)
\set fingeringOrientations = #'(left)
- \set stringNumberOrientations = #'(left)
+ \set strokeNumberOrientations = #'(left)
<cis-1\4
-\rightHandFinger #1
es-2\5
void stop_translation_timestep ();
void process_music ();
DECLARE_TRANSLATOR_LISTENER (fingering);
- DECLARE_TRANSLATOR_LISTENER (string_finger);
+ DECLARE_TRANSLATOR_LISTENER (stroke_finger);
DECLARE_ACKNOWLEDGER (rhythmic_head);
DECLARE_ACKNOWLEDGER (stem);
events_.push_back (ev);
}
-IMPLEMENT_TRANSLATOR_LISTENER (Fingering_engraver, string_finger);
+IMPLEMENT_TRANSLATOR_LISTENER (Fingering_engraver, stroke_finger);
void
-Fingering_engraver::listen_string_finger (Stream_event *ev)
+Fingering_engraver::listen_stroke_finger (Stream_event *ev)
{
/*
FIXME: should do something.
class New_fingering_engraver : public Engraver
{
vector<Finger_tuple> fingerings_;
- vector<Finger_tuple> string_fingerings_;
+ vector<Finger_tuple> stroke_fingerings_;
vector<Finger_tuple> articulations_;
vector<Finger_tuple> string_numbers_;
add_fingering (inf.grob (),
ly_symbol2scm ("StringNumber"), &string_numbers_,
ev, note_ev);
- else if (ev->in_event_class ("string-finger-event"))
+ else if (ev->in_event_class ("stroke-finger-event"))
add_fingering (inf.grob (),
- ly_symbol2scm ("StringFinger"), &string_fingerings_,
+ ly_symbol2scm ("StrokeFinger"), &stroke_fingerings_,
ev, note_ev);
else if (ev->in_event_class ("harmonic-event"))
{
string_numbers_.clear ();
}
- if (string_fingerings_.size ())
+ if (stroke_fingerings_.size ())
{
- position_scripts (get_property ("stringFingerOrientations"),
- &string_fingerings_);
- string_fingerings_.clear ();
+ position_scripts (get_property ("strokeFingerOrientations"),
+ &stroke_fingerings_);
+ stroke_fingerings_.clear ();
}
for (vsize i = articulations_.size (); i--;)
/* create */
"Fingering "
"StringNumber "
- "StringFinger "
+ "StrokeFinger "
"Script "
,
/* read */
rightHandFinger =
-#(define-music-function (parser location finger) (number?)
- "Define a StringFingerEvent"
- (make-music 'StringFingerEvent
- 'origin location
- 'digit finger))
+#(define-music-function (parser location finger) (number-or-string?)
+ "Define a StrokeFingerEvent"
+
+ (apply make-music
+ (append
+ (list
+ 'StrokeFingerEvent
+ 'origin location)
+ (if (string? finger)
+ (list 'text finger)
+ (list 'digit finger)))))
scoreTweak =
#(define-music-function (parser location name) (string?)
squashing for @internalsref{Pitch_squash_engraver}.")
(stringNumberOrientations ,list? "See @code{fingeringOrientations}")
- (stringFingerOrientations ,list? "See @code{fingeringOrientations}")
+ (strokeFingerOrientations ,list? "See @code{fingeringOrientations}")
(stringOneTopmost ,boolean? "Whether the 1st string is printed on the
top line of the tablature.")
OneTimeStep Finish))
(music-event . (arpeggio-event breathing-event extender-event span-event
rhythmic-event dynamic-event break-event percent-event
- key-change-event string-number-event string-finger-event tie-event part-combine-event
+ key-change-event string-number-event stroke-finger-event tie-event part-combine-event
beam-forbid-event script-event
tremolo-event bend-after-event fingering-event glissando-event
harmonic-event hyphen-event laissez-vibrer-event mark-event
'())
(ly:add-interface
- 'string-finger-interface
- "A string finger instruction"
+ 'strokefinger-interface
+ "A right hand finger instruction"
'(digit-names))
(ly:add-interface
self-alignment-interface
item-interface))))))
- (StringFinger
+ (StrokeFinger
. (
(stencil . ,ly:text-interface::print)
- (text . ,string-finger::calc-text)
+ (text . ,stroke-finger::calc-text)
(digit-names . #("P" "I" "m" "a" "x"))
(padding . 0.5)
(staff-padding . 0.5)
(font-shape . italic)
(font-size . -4) ; don't overlap when next to heads.
(meta . ((class . Item)
- (interfaces . (string-finger-interface
+ (interfaces . (stroke-finger-interface
font-interface
text-script-interface
text-interface
(types . (general-music string-number-event event))
))
- (StringFingerEvent
+ (StrokeFingerEvent
. (
(description . "Specify with which finger to pluck a string.
Syntax: @code{\\rightHandFinger @var{text}}.")
- (types . (general-music string-finger-event event))
+ (types . (general-music stroke-finger-event event))
))
(TextScriptEvent
(define-public (car< a b) (< (car a) (car b)))
-
(define-public (symbol<? lst r)
(string<? (symbol->string lst) (symbol->string r)))
(number->string digit 10)
))
-(define-public (string-finger::calc-text grob)
+
+(define-public (stroke-finger::calc-text grob)
(let*
- ((digit (ly:event-property (event-cause grob) 'digit))
- (texts (ly:grob-property grob 'digit-names)))
- (vector-ref texts (1- (max (min 5 digit) 1)))
- ))
+ ((digit (ly:event-property (event-cause grob) 'digit))
+ (text (ly:event-property (event-cause grob) 'text)))
+
+ (if (string? text)
+ text
+ (vector-ref (ly:grob-property grob 'digit-names) (1- (max (min 5 digit) 1))))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; dynamics
(define-public (make-part-combine-music music-list)
(let* ((m (make-music 'PartCombineMusic))
- (m1 (make-non-relative-music (context-spec-music (first music-list) 'Voice "one")))
- (m2 (make-non-relative-music (context-spec-music (second music-list) 'Voice "two")))
- (evs2 (recording-group-emulate m2 part-combine-listener))
- (evs1 (recording-group-emulate m1 part-combine-listener)))
+ (m1 (make-non-relative-music (context-spec-music (first music-list) 'Voice "one")))
+ (m2 (make-non-relative-music (context-spec-music (second music-list) 'Voice "two")))
+ (evs2 (recording-group-emulate m2 part-combine-listener))
+ (evs1 (recording-group-emulate m1 part-combine-listener)))
+
(set! (ly:music-property m 'elements) (list m1 m2))
(set! (ly:music-property m 'split-list)
(determine-split-list (reverse! (cdr (assoc "one" evs1)) '())