From: Han-Wen Nienhuys Date: Tue, 21 Feb 2006 23:53:34 +0000 (+0000) Subject: * scm/define-music-types.scm (music-descriptions): add RepeatTieEvent X-Git-Tag: release/2.7.36~14 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=99242a027c2281ed7674772e9a0ae7fc86024be0;p=lilypond.git * scm/define-music-types.scm (music-descriptions): add RepeatTieEvent * lily/repeat-tie-engraver.cc (acknowledge_note_head): new file. cut & paste froum Laissez_vibrer_engraver. * ly/declarations-init.ly (repeatTie): add \repeatTie * scm/define-grobs.scm (all-grob-descriptions): add RepeatTie, RepeatTieColumn * scm/define-grob-properties.scm (all-user-grob-properties): add head-direction property. * lily/tie-formatting-problem.cc (from_semi_ties): rename from from_lv_ties. Take head direction argument. * lily/semi-tie-column.cc: rename from laissez-vibrer-tie-column.cc. Rename class too. * lily/semi-tie.cc: rename from laissez-vibrer-tie.cc. Rename class too. --- diff --git a/ChangeLog b/ChangeLog index 95945a2203..71dd3c9dea 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,26 @@ 2006-02-22 Han-Wen Nienhuys + * scm/define-music-types.scm (music-descriptions): add RepeatTieEvent + + * lily/repeat-tie-engraver.cc (acknowledge_note_head): new file. cut & paste + froum Laissez_vibrer_engraver. + + * ly/declarations-init.ly (repeatTie): add \repeatTie + + * scm/define-grobs.scm (all-grob-descriptions): add RepeatTie, RepeatTieColumn + + * scm/define-grob-properties.scm (all-user-grob-properties): add + head-direction property. + + * lily/tie-formatting-problem.cc (from_semi_ties): rename from + from_lv_ties. Take head direction argument. + + * lily/semi-tie-column.cc: rename from + laissez-vibrer-tie-column.cc. Rename class too. + + * lily/semi-tie.cc: rename from laissez-vibrer-tie.cc. Rename + class too. + * lily/paper-score.cc (find_break_indices): move from Break_algorithm. * lily/break-algorithm.cc (find_break_indices): remove linewidth < diff --git a/input/regression/laissez-vibrer-ties.ly b/input/regression/laissez-vibrer-ties.ly index c02e974b27..aec508ab75 100644 --- a/input/regression/laissez-vibrer-ties.ly +++ b/input/regression/laissez-vibrer-ties.ly @@ -16,16 +16,16 @@ They have fixed size. Their formatting can be tuned with } \relative { - \laissezVibrer - \laissezVibrer - \laissezVibrer - 4.\laissezVibrer + \laissezVibrer r4 + \laissezVibrer r + \laissezVibrer r + 4.\laissezVibrer r - 4\laissezVibrer + 4\laissezVibrer r \override LaissezVibrerTieColumn #'tie-configuration = #'((-7 . -1) (-5 . -1) (-3 . 1) (-1 . 1)) - 4\laissezVibrer + 4\laissezVibrer r } diff --git a/input/regression/repeat-tie.ly b/input/regression/repeat-tie.ly new file mode 100644 index 0000000000..50c7139881 --- /dev/null +++ b/input/regression/repeat-tie.ly @@ -0,0 +1,16 @@ +\header { + + texidoc = "Repeat ties are only connected on the right side to a +note head." + +} + +\version "2.7.35" +\paper { + ragged-right = ##t +} + +\relative c'' { + r4 c4\repeatTie r \repeatTie + +} diff --git a/lily/include/laissez-vibrer-tie-column.hh b/lily/include/laissez-vibrer-tie-column.hh deleted file mode 100644 index 40be6ecd41..0000000000 --- a/lily/include/laissez-vibrer-tie-column.hh +++ /dev/null @@ -1,26 +0,0 @@ -/* - laissez-vibrer-tie-column.hh -- declare Laissez_vibrer_tie_column - - source file of the GNU LilyPond music typesetter - - (c) 2005--2006 Han-Wen Nienhuys - -*/ - -#ifndef TIE_LAISSEZ_VIBRER_COLUMN_HH -#define TIE_LAISSEZ_VIBRER_COLUMN_HH - -#include "grob-interface.hh" -#include "lily-proto.hh" -#include "lily-guile.hh" - -struct Laissez_vibrer_tie_column -{ - static bool has_interface (Grob *); - - DECLARE_SCHEME_CALLBACK(calc_positioning_done, (SCM)); -}; - - -#endif /* TIE_LAISSEZ_VIBRER_COLUMN_HH */ - diff --git a/lily/include/laissez-vibrer-tie.hh b/lily/include/laissez-vibrer-tie.hh deleted file mode 100644 index 32d4711789..0000000000 --- a/lily/include/laissez-vibrer-tie.hh +++ /dev/null @@ -1,28 +0,0 @@ -/* - laissez-vibrer-tie.hh -- declare Laissez_vibrer_tie - - source file of the GNU LilyPond music typesetter - - (c) 2005--2006 Han-Wen Nienhuys - -*/ - -#ifndef TIE_LAISSEZ_VIBRER_HH -#define TIE_LAISSEZ_VIBRER_HH - - -#include "grob-interface.hh" -#include "lily-guile.hh" - -struct Laissez_vibrer_tie -{ - static bool has_interface (Grob *); - - DECLARE_SCHEME_CALLBACK (calc_direction, (SCM)); - DECLARE_SCHEME_CALLBACK (calc_control_points, (SCM)); - static int compare (Grob *const &s1, - Grob *const &s2); - static int get_position (Grob *); -}; - -#endif /* TIE_LAISSEZ_VIBRER_HH */ diff --git a/lily/include/semi-tie-column.hh b/lily/include/semi-tie-column.hh new file mode 100644 index 0000000000..cfeb7fc779 --- /dev/null +++ b/lily/include/semi-tie-column.hh @@ -0,0 +1,26 @@ +/* + semi-tie-column.hh -- declare Laissez_vibrer_tie_column + + source file of the GNU LilyPond music typesetter + + (c) 2005--2006 Han-Wen Nienhuys + +*/ + +#ifndef SEMI_TIE_COLUMN_HH +#define SEMI_TIE_COLUMN_HH + +#include "grob-interface.hh" +#include "lily-proto.hh" +#include "lily-guile.hh" + +struct Semi_tie_column +{ + static bool has_interface (Grob *); + + DECLARE_SCHEME_CALLBACK(calc_positioning_done, (SCM)); +}; + + +#endif /* SEMI_TIE_COLUMN_HH */ + diff --git a/lily/include/semi-tie.hh b/lily/include/semi-tie.hh new file mode 100644 index 0000000000..d0a0baf5b7 --- /dev/null +++ b/lily/include/semi-tie.hh @@ -0,0 +1,28 @@ +/* + semi-tie.hh -- declare Laissez_vibrer_tie + + source file of the GNU LilyPond music typesetter + + (c) 2005--2006 Han-Wen Nienhuys + +*/ + +#ifndef SEMI_TIE_HH +#define SEMI_TIE_HH + + +#include "grob-interface.hh" +#include "lily-guile.hh" + +struct Semi_tie +{ + static bool has_interface (Grob *); + + DECLARE_SCHEME_CALLBACK (calc_direction, (SCM)); + DECLARE_SCHEME_CALLBACK (calc_control_points, (SCM)); + static int compare (Grob *const &s1, + Grob *const &s2); + static int get_position (Grob *); +}; + +#endif /* SEMI_TIE_HH */ diff --git a/lily/include/tie-formatting-problem.hh b/lily/include/tie-formatting-problem.hh index 18eafec4f0..befb430c5d 100644 --- a/lily/include/tie-formatting-problem.hh +++ b/lily/include/tie-formatting-problem.hh @@ -87,7 +87,7 @@ public: Tie_configuration find_optimal_tie_configuration (Tie_specification const &) const; void from_ties (vector const &ties); void from_tie (Grob *tie); - void from_lv_ties (vector const &); + void from_semi_ties (vector const &, Direction head_dir); void set_chord_outline (vector, Direction); void set_manual_tie_configuration (SCM); Interval get_attachment (Real) const; diff --git a/lily/laissez-vibrer-tie-column.cc b/lily/laissez-vibrer-tie-column.cc deleted file mode 100644 index 7b99d6e3ce..0000000000 --- a/lily/laissez-vibrer-tie-column.cc +++ /dev/null @@ -1,70 +0,0 @@ -/* - laissez-vibrer-tie-column.cc -- implement Laissez_vibrer_tie_column - - source file of the GNU LilyPond music typesetter - - (c) 2005--2006 Han-Wen Nienhuys - -*/ - -#include "laissez-vibrer-tie-column.hh" -#include "laissez-vibrer-tie.hh" -#include "grob.hh" -#include "tie-column.hh" -#include "tie.hh" -#include "directional-element-interface.hh" -#include "pointer-group-interface.hh" -#include "staff-symbol-referencer.hh" -#include "item.hh" -#include "tie-formatting-problem.hh" -#include "tie-configuration.hh" -#include "tie-column-format.hh" - - -ADD_INTERFACE(Laissez_vibrer_tie_column, - "laissez-vibrer-tie-column-interface", - "The interface for a column of l.v. ties.", - - /* properties */ - "positioning-done " - "tie-configuration " - ); - - - -/* - Cut & paste from tie-column.cc - */ -MAKE_SCHEME_CALLBACK(Laissez_vibrer_tie_column, calc_positioning_done, 1); -SCM -Laissez_vibrer_tie_column::calc_positioning_done (SCM smob) -{ - Grob *me = unsmob_grob (smob); - - extract_grob_set (me, "ties", lv_ro_ties); - vector lv_ties (lv_ro_ties); - - vector_sort (lv_ties, &Laissez_vibrer_tie::compare); - - Ties_configuration ties_config; - - - Tie_formatting_problem problem; - - problem.from_lv_ties (lv_ties); - - SCM manual_configs = me->get_property ("tie-configuration"); - problem.set_manual_tie_configuration (manual_configs); - - Ties_configuration base = problem.generate_optimal_chord_configuration (); - for (vsize i = 0; i < lv_ties.size(); i++) - { - Tie::set_control_points (lv_ties[i], problem.common_x_refpoint (), base[i], - problem.details_); - set_grob_direction (lv_ties[i], base[i].dir_); - } - - return SCM_BOOL_T; -} - - diff --git a/lily/laissez-vibrer-tie.cc b/lily/laissez-vibrer-tie.cc deleted file mode 100644 index b88cb9c45b..0000000000 --- a/lily/laissez-vibrer-tie.cc +++ /dev/null @@ -1,77 +0,0 @@ -/* - laissez-vibrer-tie.cc -- implement Laissez_vibrer_tie - - source file of the GNU LilyPond music typesetter - - (c) 2005--2006 Han-Wen Nienhuys - -*/ - -#include "laissez-vibrer-tie-column.hh" -#include "laissez-vibrer-tie.hh" -#include "directional-element-interface.hh" -#include "grob.hh" -#include "tie.hh" -#include "warn.hh" -#include "staff-symbol-referencer.hh" - -ADD_INTERFACE(Laissez_vibrer_tie, - "laissez-vibrer-tie-interface", - "The interface for l.v. tie items.", - - /* properties */ - "control-points " - "direction " - "details " - "note-head " - "thickness " - ); - -MAKE_SCHEME_CALLBACK(Laissez_vibrer_tie, calc_control_points, 1) -SCM -Laissez_vibrer_tie::calc_control_points (SCM smob) -{ - Grob *me = unsmob_grob (smob); - if (Laissez_vibrer_tie_column::has_interface (me->get_parent (Y_AXIS))) - { - me->get_parent (Y_AXIS)->get_property ("positioning-done"); - } - else - { - programming_error ("lv tie without Laissez_vibrer_tie_column. Killing lv tie."); - me->suicide (); - } - - return SCM_UNSPECIFIED; -} - -MAKE_SCHEME_CALLBACK(Laissez_vibrer_tie, calc_direction, 1) -SCM -Laissez_vibrer_tie::calc_direction (SCM smob) -{ - Grob *me = unsmob_grob (smob); - if (Laissez_vibrer_tie_column::has_interface (me->get_parent (Y_AXIS))) - me->get_parent (Y_AXIS)->get_property("positioning-done"); - else - { - programming_error ("lv tie without Laissez_vibrer_tie_column"); - set_grob_direction (me, UP); - } - - return SCM_UNSPECIFIED; -} - -int -Laissez_vibrer_tie::get_position (Grob *me) -{ - Grob *h = unsmob_grob (me->get_object ("note-head")); - return (int) rint (Staff_symbol_referencer::get_position (h)); -} - -int -Laissez_vibrer_tie::compare (Grob *const &s1, - Grob *const &s2) -{ - return sign (get_position (s1) - get_position (s2)); -} - diff --git a/lily/repeat-tie-engraver.cc b/lily/repeat-tie-engraver.cc new file mode 100644 index 0000000000..4bce211310 --- /dev/null +++ b/lily/repeat-tie-engraver.cc @@ -0,0 +1,84 @@ +/* + repeat-engraver.cc -- implement Repeat_tie_engraver + + source file of the GNU LilyPond music typesetter + + (c) 2005--2006 Han-Wen Nienhuys + +*/ + + +#include "engraver.hh" +#include "item.hh" +#include "pointer-group-interface.hh" + +#include "translator.icc" + +class Repeat_tie_engraver : public Engraver +{ + Music *event_; + Grob *semi_tie_column_; + vector semi_ties_; + + void stop_translation_timestep (); + DECLARE_ACKNOWLEDGER (note_head); + + virtual bool try_music (Music *); +public: + TRANSLATOR_DECLARATIONS (Repeat_tie_engraver); +}; + +Repeat_tie_engraver::Repeat_tie_engraver () +{ + event_ = 0; + semi_tie_column_ = 0; +} + +void +Repeat_tie_engraver::stop_translation_timestep () +{ + event_ = 0; + semi_tie_column_ = 0; + semi_ties_.clear (); +} + +bool +Repeat_tie_engraver::try_music (Music *m) +{ + event_ = m; + return true; +} + +void +Repeat_tie_engraver::acknowledge_note_head (Grob_info inf) +{ + if (!event_) + return; + + if (!semi_tie_column_) + { + semi_tie_column_ = make_item ("RepeatTieColumn", event_->self_scm ()); + } + + Grob *semi_tie = make_item ("RepeatTie", event_->self_scm ()); + semi_tie->set_object ("note-head", inf.grob ()->self_scm ()); + + Pointer_group_interface::add_grob (semi_tie_column_, ly_symbol2scm ("ties"), + semi_tie); + semi_tie->set_parent (semi_tie_column_, Y_AXIS); + semi_ties_.push_back (semi_tie); +} + + + +ADD_ACKNOWLEDGER (Repeat_tie_engraver, note_head); +ADD_TRANSLATOR (Repeat_tie_engraver, + /* doc */ "Create Laissez vibrer items.", + + /* create */ + "RepeatTie " + "RepeatTieColumn ", + + /* accept */ "repeat-tie-event", + /* read */ "", + /* write */ ""); diff --git a/lily/semi-tie-column.cc b/lily/semi-tie-column.cc new file mode 100644 index 0000000000..a7542249b1 --- /dev/null +++ b/lily/semi-tie-column.cc @@ -0,0 +1,71 @@ +/* + semi-tie-column.cc -- implement Semi_tie_column + + source file of the GNU LilyPond music typesetter + + (c) 2005--2006 Han-Wen Nienhuys + +*/ + +#include "semi-tie-column.hh" +#include "semi-tie.hh" +#include "grob.hh" +#include "tie-column.hh" +#include "tie.hh" +#include "directional-element-interface.hh" +#include "pointer-group-interface.hh" +#include "staff-symbol-referencer.hh" +#include "item.hh" +#include "tie-formatting-problem.hh" +#include "tie-configuration.hh" +#include "tie-column-format.hh" + + +ADD_INTERFACE(Semi_tie_column, + "semi-tie-column-interface", + "The interface for a column of l.v. ties.", + + /* properties */ + "positioning-done " + "head-direction " + "tie-configuration " + ); + + + +/* + Cut & paste from tie-column.cc + */ +MAKE_SCHEME_CALLBACK(Semi_tie_column, calc_positioning_done, 1); +SCM +Semi_tie_column::calc_positioning_done (SCM smob) +{ + Grob *me = unsmob_grob (smob); + + extract_grob_set (me, "ties", lv_ro_ties); + vector lv_ties (lv_ro_ties); + + vector_sort (lv_ties, &Semi_tie::compare); + + Ties_configuration ties_config; + + + Tie_formatting_problem problem; + + problem.from_semi_ties (lv_ties, to_dir (me->get_property ("head-direction"))); + + SCM manual_configs = me->get_property ("tie-configuration"); + problem.set_manual_tie_configuration (manual_configs); + + Ties_configuration base = problem.generate_optimal_chord_configuration (); + for (vsize i = 0; i < lv_ties.size(); i++) + { + Tie::set_control_points (lv_ties[i], problem.common_x_refpoint (), base[i], + problem.details_); + set_grob_direction (lv_ties[i], base[i].dir_); + } + + return SCM_BOOL_T; +} + + diff --git a/lily/semi-tie.cc b/lily/semi-tie.cc new file mode 100644 index 0000000000..bddae0e2b2 --- /dev/null +++ b/lily/semi-tie.cc @@ -0,0 +1,79 @@ +/* + semi-tie.cc -- implement Semi_tie + + source file of the GNU LilyPond music typesetter + + (c) 2005--2006 Han-Wen Nienhuys + +*/ + +#include "semi-tie-column.hh" +#include "semi-tie.hh" +#include "directional-element-interface.hh" +#include "grob.hh" +#include "tie.hh" +#include "warn.hh" +#include "staff-symbol-referencer.hh" + +ADD_INTERFACE(Semi_tie, + + "semi-tie-interface", + + "A tie which is only on one side connected to note heads. ", + + /* properties */ + "control-points " + "direction " + "details " + "note-head " + "thickness " + ); + +MAKE_SCHEME_CALLBACK(Semi_tie, calc_control_points, 1) +SCM +Semi_tie::calc_control_points (SCM smob) +{ + Grob *me = unsmob_grob (smob); + if (Semi_tie_column::has_interface (me->get_parent (Y_AXIS))) + { + me->get_parent (Y_AXIS)->get_property ("positioning-done"); + } + else + { + programming_error ("lv tie without Semi_tie_column. Killing lv tie."); + me->suicide (); + } + + return SCM_UNSPECIFIED; +} + +MAKE_SCHEME_CALLBACK(Semi_tie, calc_direction, 1) +SCM +Semi_tie::calc_direction (SCM smob) +{ + Grob *me = unsmob_grob (smob); + if (Semi_tie_column::has_interface (me->get_parent (Y_AXIS))) + me->get_parent (Y_AXIS)->get_property("positioning-done"); + else + { + programming_error ("lv tie without Semi_tie_column"); + set_grob_direction (me, UP); + } + + return SCM_UNSPECIFIED; +} + +int +Semi_tie::get_position (Grob *me) +{ + Grob *h = unsmob_grob (me->get_object ("note-head")); + return (int) rint (Staff_symbol_referencer::get_position (h)); +} + +int +Semi_tie::compare (Grob *const &s1, + Grob *const &s2) +{ + return sign (get_position (s1) - get_position (s2)); +} + diff --git a/lily/tie-formatting-problem.cc b/lily/tie-formatting-problem.cc index f1fc922441..4fe618c92e 100644 --- a/lily/tie-formatting-problem.cc +++ b/lily/tie-formatting-problem.cc @@ -252,7 +252,7 @@ Tie_formatting_problem::from_ties (vector const &ties) } void -Tie_formatting_problem::from_lv_ties (vector const &lv_ties) +Tie_formatting_problem::from_semi_ties (vector const &lv_ties, Direction head_dir) { if (lv_ties.empty ()) return; @@ -273,7 +273,7 @@ Tie_formatting_problem::from_lv_ties (vector const &lv_ties) spec.position_ = int (Staff_symbol_referencer::get_position (head)); } - spec.note_head_drul_[LEFT] = head; + spec.note_head_drul_[head_dir] = head; heads.push_back (head); specifications_.push_back (spec); } @@ -284,20 +284,21 @@ Tie_formatting_problem::from_lv_ties (vector const &lv_ties) for (vsize i = 0; i < heads.size (); i++) x_refpoint_ = heads[i]->common_refpoint (x_refpoint_, X_AXIS); - set_chord_outline (heads, LEFT); + set_chord_outline (heads, head_dir); - Real right_most = - infinity_f; + Real extremal = head_dir * infinity_f; - for (vsize i = 0; i < chord_outlines_[LEFT].size (); i++) + for (vsize i = 0; i < chord_outlines_[head_dir].size (); i++) { - right_most = max (right_most, chord_outlines_[LEFT][i].height_); + extremal = head_dir * min (head_dir * extremal, + head_dir * chord_outlines_[head_dir][i].height_); } Skyline_entry right_entry; right_entry.width_.set_full (); - right_entry.height_ = right_most + 1.5; + right_entry.height_ = extremal - head_dir * 1.5; - chord_outlines_[RIGHT].push_back (right_entry); + chord_outlines_[-head_dir].push_back (right_entry); } diff --git a/ly/declarations-init.ly b/ly/declarations-init.ly index 9eef5204b0..393bed2d07 100644 --- a/ly/declarations-init.ly +++ b/ly/declarations-init.ly @@ -66,6 +66,7 @@ escapedSmallerSymbol = #(make-span-event 'CrescendoEvent START) melisma = #(make-span-event 'ManualMelismaEvent START) melismaEnd = #(make-span-event 'ManualMelismaEvent STOP) laissezVibrer = #(make-music 'LaissezVibrerEvent) +repeatTie = #(make-music 'RepeatTieEvent) \include "grace-init.ly" \include "midi-init.ly" diff --git a/ly/engraver-init.ly b/ly/engraver-init.ly index 6654a65ccb..079a65faca 100644 --- a/ly/engraver-init.ly +++ b/ly/engraver-init.ly @@ -182,6 +182,7 @@ contained staves are not connected vertically." \consists "Grob_pq_engraver" \consists "Forbid_line_break_engraver" \consists "Laissez_vibrer_engraver" + \consists "Repeat_tie_engraver" \consists "Note_head_line_engraver" \consists "Glissando_engraver" \consists "Ligature_bracket_engraver" diff --git a/scm/define-grob-properties.scm b/scm/define-grob-properties.scm index 5cf7e49080..bc4afc84d4 100644 --- a/scm/define-grob-properties.scm +++ b/scm/define-grob-properties.scm @@ -231,6 +231,7 @@ of the @code{spacing-increment}.") (grow-direction ,ly:dir? "Crescendo or decrescendo?") (hair-thickness ,number? "Thickness of the thin line in a bar line.") + (head-direction ,ly:dir? "Are the note heads left or right in a semitie?") (height ,ly:dimension? "Height of an object in staff-space.") (height-limit ,ly:dimension? "Maximum slur height: the longer the slur, the closer it is to this height.") diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index c76015ce9b..c99b2eedec 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -718,16 +718,18 @@ (interfaces . (key-signature-interface font-interface break-aligned-interface)))))) - (LaissezVibrerTie + + + (LaissezVibrerTie . ( (stencil . ,ly:tie::print) - (control-points . ,ly:laissez-vibrer-tie::calc-control-points) - (direction . ,ly:laissez-vibrer-tie::calc-direction) + (control-points . ,ly:semi-tie::calc-control-points) + (direction . ,ly:semi-tie::calc-direction) (details . ((ratio . 0.333) (height-limit . 1.0))) (thickness . 1.0) (meta . ((class . Item) - (interfaces . (laissez-vibrer-tie-interface)) + (interfaces . (semi-tie-interface)) )) )) @@ -735,9 +737,10 @@ . ( (X-extent . #f) (Y-extent . #f) - (positioning-done . ,ly:laissez-vibrer-tie-column::calc-positioning-done) + (head-direction . ,LEFT) + (positioning-done . ,ly:semi-tie-column::calc-positioning-done) (meta . ((class . Item) - (interfaces . (laissez-vibrer-tie-column-interface)) + (interfaces . (semi-tie-column-interface)) )) )) @@ -1180,6 +1183,30 @@ (slope . 1.7) (meta . ((class . Item) (interfaces . (percent-repeat-interface)))))) + (RepeatTie + . ( + (stencil . ,ly:tie::print) + (control-points . ,ly:semi-tie::calc-control-points) + (direction . ,ly:semi-tie::calc-direction) + (details . ((ratio . 0.333) + (height-limit . 1.0))) + (thickness . 1.0) + (meta . ((class . Item) + (interfaces . (semi-tie-interface)) + )) + )) + + (RepeatTieColumn + . ( + (X-extent . #f) + (Y-extent . #f) + (head-direction . ,RIGHT) + (positioning-done . ,ly:semi-tie-column::calc-positioning-done) + (meta . ((class . Item) + (interfaces . (semi-tie-column-interface)) + )) + )) + (Rest . ( (stencil . ,ly:rest::print) diff --git a/scm/define-music-types.scm b/scm/define-music-types.scm index 25562da916..64a548de5c 100644 --- a/scm/define-music-types.scm +++ b/scm/define-music-types.scm @@ -230,7 +230,6 @@ Syntax: @var{note}\\laissezVibrer.") (LigatureEvent . ( (description . "(docme).") - (span-type . ligature) (types . (general-music span-event ligature-event event)) )) @@ -413,14 +412,15 @@ goes down).") (RepeatedMusic . ( (description . "Repeat music in different ways") - (type . repeated-music) (types . (general-music repeated-music)) )) - + (RepeatTieEvent + . ((description . "Ties for starting a second volta bracket.") + (types . (general-music event repeat-tie-event)) + )) (Event . ( (description . "Atomic music event.") - (types . (general-music event)) ))