CVSROOT:        /cvsroot/lilypond
Module name:    lilypond
Branch:         
Changes by:     Han-Wen Nienhuys <[EMAIL PROTECTED]>    05/09/12 12:20:26

Modified files:
        .              : ChangeLog THANKS 
        Documentation/topdocs: NEWS.tely 
        Documentation/user: instrument-notation.itely 
        lily           : tie-column.cc tie.cc 
        lily/include   : lily-proto.hh tie.hh translator.icc 
        ly             : declarations-init.ly engraver-init.ly 
        mf             : GNUmakefile 
        scm            : define-grobs.scm define-music-types.scm 
Added files:
        input/regression: laissez-vibrer-ties.ly 
        lily           : laissez-vibrer-engraver.cc 
                         laissez-vibrer-tie-column.cc 
                         laissez-vibrer-tie.cc tie-column-format.cc 
        lily/include   : laissez-vibrer-tie-column.hh 
                         laissez-vibrer-tie.hh tie-column-format.hh 
Removed files:
        mf             : cmr.enc.in 

Log message:
        * Documentation/user/instrument-notation.itely (Laissez vibrer
        ties): new node.
        
        * input/regression/laissez-vibrer-ties.ly: new file.
        
        * lily/laissez-vibrer-engraver.cc: new file.
        
        * lily/include/tie-column-format.hh: new file.
        
        * lily/tie-column-format.cc: new file.
        
        * lily/tie-column.cc (set_manual_tie_configuration): new function.
        
        * lily/laissez-vibrer-tie.cc: new file.
        
        * lily/include/laissez-vibrer-tie.hh: new file.
        
        * ly/engraver-init.ly: add Laissez_vibrer_engraver
        
        * ly/declarations-init.ly (laissezVibrer): add \laissezVibrer
        
        * scm/define-grobs.scm (all-grob-descriptions): add
        LaissezVibrerTie, LaissezVibrerTieColumn
        
        * lily/tie-column.cc (set_tie_config_directions): new function
        (final_shape_adjustment): new function.
        (shift_small_ties): new function.
        
        * scm/define-music-types.scm (music-descriptions): add 
LaissezVibrerEvent
        
        * lily/include/tie.hh (struct Tie_details): add x_gap_
        (struct Tie_configuration): add head_position_
        
        * lily/tie-column.cc (set_chord_outline): new function.
        
        * mf/cmr.enc.in:  remove file.

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/ChangeLog.diff?tr1=1.4123&tr2=1.4124&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/THANKS.diff?tr1=1.152&tr2=1.153&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/Documentation/topdocs/NEWS.tely.diff?tr1=1.85&tr2=1.86&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/Documentation/user/instrument-notation.itely.diff?tr1=1.55&tr2=1.56&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/input/regression/laissez-vibrer-ties.ly?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/laissez-vibrer-engraver.cc?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/laissez-vibrer-tie-column.cc?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/laissez-vibrer-tie.cc?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/tie-column-format.cc?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/tie-column.cc.diff?tr1=1.60&tr2=1.61&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/tie.cc.diff?tr1=1.159&tr2=1.160&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/laissez-vibrer-tie-column.hh?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/laissez-vibrer-tie.hh?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/tie-column-format.hh?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/lily-proto.hh.diff?tr1=1.131&tr2=1.132&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/tie.hh.diff?tr1=1.58&tr2=1.59&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/translator.icc.diff?tr1=1.8&tr2=1.9&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/ly/declarations-init.ly.diff?tr1=1.90&tr2=1.91&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/ly/engraver-init.ly.diff?tr1=1.247&tr2=1.248&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/mf/GNUmakefile.diff?tr1=1.170&tr2=1.171&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/scm/define-grobs.scm.diff?tr1=1.236&tr2=1.237&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/scm/define-music-types.scm.diff?tr1=1.64&tr2=1.65&r1=text&r2=text

Patches:
Index: lilypond/ChangeLog
diff -u lilypond/ChangeLog:1.4123 lilypond/ChangeLog:1.4124
--- lilypond/ChangeLog:1.4123   Sun Sep 11 20:28:04 2005
+++ lilypond/ChangeLog  Mon Sep 12 12:20:25 2005
@@ -1,3 +1,42 @@
+2005-09-12  Han-Wen Nienhuys  <[EMAIL PROTECTED]>
+
+       * Documentation/user/instrument-notation.itely (Laissez vibrer
+       ties): new node.
+
+       * input/regression/laissez-vibrer-ties.ly: new file.
+
+       * lily/laissez-vibrer-engraver.cc: new file.    
+
+       * lily/include/tie-column-format.hh: new file.
+
+       * lily/tie-column-format.cc: new file. 
+
+       * lily/tie-column.cc (set_manual_tie_configuration): new function.
+
+       * lily/laissez-vibrer-tie.cc: new file.
+
+       * lily/include/laissez-vibrer-tie.hh: new file.
+
+       * ly/engraver-init.ly: add Laissez_vibrer_engraver
+
+       * ly/declarations-init.ly (laissezVibrer): add \laissezVibrer
+
+       * scm/define-grobs.scm (all-grob-descriptions): add
+       LaissezVibrerTie, LaissezVibrerTieColumn
+
+       * lily/tie-column.cc (set_tie_config_directions): new function
+       (final_shape_adjustment): new function.
+       (shift_small_ties): new function.
+
+       * scm/define-music-types.scm (music-descriptions): add 
LaissezVibrerEvent
+
+       * lily/include/tie.hh (struct Tie_details): add x_gap_
+       (struct Tie_configuration): add head_position_
+
+       * lily/tie-column.cc (set_chord_outline): new function.
+
+       * mf/cmr.enc.in:  remove file.
+
 2005-09-11  Graham Percival  <[EMAIL PROTECTED]>
 
        * Documentation/user/examples.itely: typo fix.  Thanks, Matevž
Index: lilypond/Documentation/topdocs/NEWS.tely
diff -u lilypond/Documentation/topdocs/NEWS.tely:1.85 
lilypond/Documentation/topdocs/NEWS.tely:1.86
--- lilypond/Documentation/topdocs/NEWS.tely:1.85       Tue Aug 30 12:23:13 2005
+++ lilypond/Documentation/topdocs/NEWS.tely    Mon Sep 12 12:20:25 2005
@@ -47,6 +47,15 @@
 @itemize @bullet
 
 @item
+Laissez vibrer ties can be created with @code{\laissezVibrer},
+
[EMAIL PROTECTED],raggedright,relative=1]
+  <c e g>\laissezVibrer  <d f>\laissezVibrer
[EMAIL PROTECTED] lilypond
+
+This feature was sponsored by Henrik Frisk.
+
[EMAIL PROTECTED]
 The order of words in @code{\markup} commands may now be reversed by
 setting the @code{text-direction} property. This is useful for
 Right-to-Left languages like Hebrew.
Index: lilypond/Documentation/user/instrument-notation.itely
diff -u lilypond/Documentation/user/instrument-notation.itely:1.55 
lilypond/Documentation/user/instrument-notation.itely:1.56
--- lilypond/Documentation/user/instrument-notation.itely:1.55  Thu Sep  8 
06:54:44 2005
+++ lilypond/Documentation/user/instrument-notation.itely       Mon Sep 12 
12:20:25 2005
@@ -36,6 +36,7 @@
 @menu
 * Automatic staff changes::     
 * Manual staff switches::       
+* Laissez vibrer ties::         
 * Pedals::                      
 * Staff switch lines::          
 * Cross staff stems::           
@@ -153,6 +154,28 @@
 @end example
 
 
[EMAIL PROTECTED] Laissez vibrer ties
[EMAIL PROTECTED] Laissez vibrer ties
[EMAIL PROTECTED] Laissez vibrer
[EMAIL PROTECTED] Ties,  laissez vibrer
+
+L.v. ties (laissez vibrer) indicate that notes must not be damped at the
+end. It is used in harp notation. They can be entered using
[EMAIL PROTECTED],
+
[EMAIL PROTECTED],raggedright,verbatim,relative=1]
+<c f g>\laissezVibrer 
[EMAIL PROTECTED] lilypond
+
[EMAIL PROTECTED]
+
+Program reference: 
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+
+Example files:
[EMAIL PROTECTED]/regression,laissez-vibrer-tie.ly}
+
 @node Pedals
 @subsection Pedals
 @cindex Pedals
@@ -216,6 +239,10 @@
 \override Staff.PianoPedalBracket #'shorten-pair = #'(0 . -1.0)
 c\sostenutoDown d e c, f g a\sostenutoUp
 @end lilypond
+
[EMAIL PROTECTED]
+
+In this manual: @ref{Laissez vibrer ties}
 
 @node Staff switch lines
 @subsection Staff switch lines
Index: lilypond/THANKS
diff -u lilypond/THANKS:1.152 lilypond/THANKS:1.153
--- lilypond/THANKS:1.152       Sun Sep 11 19:29:04 2005
+++ lilypond/THANKS     Mon Sep 12 12:20:25 2005
@@ -22,6 +22,7 @@
 SPONSORS
 
 Aaron Mehl
+Henrik Frisk
 Jay Hamilton
 Jamie Bullock
 D. Josiah Boothby
Index: lilypond/lily/include/lily-proto.hh
diff -u lilypond/lily/include/lily-proto.hh:1.131 
lilypond/lily/include/lily-proto.hh:1.132
--- lilypond/lily/include/lily-proto.hh:1.131   Thu Aug 18 11:40:22 2005
+++ lilypond/lily/include/lily-proto.hh Mon Sep 12 12:20:26 2005
@@ -144,6 +144,7 @@
 class Simple_spacer_wrapper;
 class Simultaneous_music;
 class Simultaneous_music_iterator;
+class Skyline_entry;
 class Slur_configuration;
 class Slur_score_state;
 class Span_score_bar_engraver;
@@ -157,6 +158,8 @@
 class Tempo_performer;
 class Tex_font_metric;
 class Tie;
+class Tie_details;
+class Tie_configuration;
 class Tie_performer;
 class Time_scaled_music;
 class Time_scaled_music_iterator;
Index: lilypond/lily/include/tie.hh
diff -u lilypond/lily/include/tie.hh:1.58 lilypond/lily/include/tie.hh:1.59
--- lilypond/lily/include/tie.hh:1.58   Mon Sep 12 10:29:33 2005
+++ lilypond/lily/include/tie.hh        Mon Sep 12 12:20:26 2005
@@ -75,9 +75,8 @@
   static int compare (Grob *const &s1,
                      Grob *const &s2);
 
-  static
-  Interval get_default_attachments (Spanner *me, Grob *common, Real gap,
-                                   int *staff_position, bool *in_between);
+  static Interval get_default_attachments (Spanner *me, Grob *common, Real gap,
+                                          int *staff_position, bool 
*in_between);
   
 };
 
Index: lilypond/lily/include/translator.icc
diff -u lilypond/lily/include/translator.icc:1.8 
lilypond/lily/include/translator.icc:1.9
--- lilypond/lily/include/translator.icc:1.8    Sat Aug 13 21:35:22 2005
+++ lilypond/lily/include/translator.icc        Mon Sep 12 12:20:26 2005
@@ -10,6 +10,7 @@
 #define TRANSLATOR_ICC
 
 #include "array.hh"
+#include "translator.hh"
 
 /**
    A macro to automate administration of translators.
Index: lilypond/lily/tie-column.cc
diff -u lilypond/lily/tie-column.cc:1.60 lilypond/lily/tie-column.cc:1.61
--- lilypond/lily/tie-column.cc:1.60    Mon Sep 12 10:29:31 2005
+++ lilypond/lily/tie-column.cc Mon Sep 12 12:20:25 2005
@@ -10,19 +10,15 @@
 
 #include <math.h>
 #include <map>
-#include <set>
 
-#include "note-head.hh"
-#include "stem.hh"
 #include "skyline.hh"
-#include "staff-symbol-referencer.hh"
 #include "warn.hh"
 #include "paper-column.hh"
 #include "spanner.hh"
 #include "pointer-group-interface.hh"
 #include "tie.hh"
 #include "directional-element-interface.hh"
-#include "rhythmic-head.hh"
+#include "tie-column-format.hh"
 
 void
 Tie_column::add_tie (Grob *me, Grob *tie)
@@ -52,12 +48,7 @@
     }
 }
 
-int
-Tie::compare (Grob *const &s1,
-             Grob *const &s2)
-{
-  return sign (Tie::get_position (s1) - Tie::get_position (s2));
-}
+
 
 MAKE_SCHEME_CALLBACK (Tie_column, after_line_breaking, 1);
 SCM
@@ -92,243 +83,6 @@
 
 
 void
-set_chord_outline (Array<Skyline_entry> *skyline,
-                  Link_array<Item> bounds,
-                  Grob *common,
-                  Direction d)
-{
-  Real staff_space = Staff_symbol_referencer::staff_space (bounds[0]);
-
-  Array<Box> boxes;
-  Interval x_union;
-
-  Grob *stem = 0;
-  for (int i = 0; i < bounds.size (); i++)
-    {
-      Grob *head = bounds[i];
-      if (!Note_head::has_interface (head))
-       continue;
-      
-      if (!stem)
-       stem = unsmob_grob (head->get_object ("stem"));
-         
-      Real p = Staff_symbol_referencer::get_position (head);
-      Interval y ((p-1) * 0.5 * staff_space,
-                 (p+1) * 0.5 * staff_space);
-
-      Interval x = head->extent (common, X_AXIS);
-      boxes.push (Box (x, y));
-      x_union.unite (x);
-    }
-
-  (*skyline) = empty_skyline (-d);
-
-  if (bounds[0]->break_status_dir ())
-    {
-      Real x = robust_relative_extent (bounds[0],  common, X_AXIS)[-d];
-      skyline->elem_ref (0).height_ = x; 
-    }
-         
-  for (int i = 0; i < boxes.size (); i++)
-    insert_extent_into_skyline (skyline,
-                               boxes[i], Y_AXIS, -d);
-  if (stem
-      && !Stem::is_invisible (stem))
-    {
-      Interval x;
-      x.add_point (stem->relative_coordinate (common, X_AXIS));
-      x.widen (staff_space / 20); // ugh.
-      Interval y;
-      y.add_point (Stem::stem_end_position (stem) * staff_space * .5);
-
-      Direction stemdir = Stem::get_direction (stem);
-      y.add_point (Stem::head_positions (stem)[-stemdir]
-                  * staff_space * .5);
-         
-      insert_extent_into_skyline (skyline, Box (x,y), Y_AXIS, -d);
-
-
-
-      if (d == LEFT)
-       {
-         Box flag_box = Stem::get_translated_flag (stem).extent_box ();
-         flag_box.translate( Offset (x[RIGHT], X_AXIS));
-         insert_extent_into_skyline (skyline, flag_box,
-                                     Y_AXIS, -d);
-       }
-    }
-  
-  Direction updowndir = DOWN;
-  do
-    {
-      Interval x ;
-      Interval y;
-      if (boxes.size())
-       {
-         Box b = boxes.boundary (updowndir, 0);
-         x = b[X_AXIS];
-         x[-d] =  b[X_AXIS].linear_combination (-d / 2);
-         y[-updowndir] = b[Y_AXIS][updowndir];
-         y[updowndir] = updowndir * infinity_f;
-       }
-
-      if (!x.is_empty ())
-       insert_extent_into_skyline (skyline,
-                                   Box (x,y),
-                                   Y_AXIS, -d);
-    }
-  while (flip (&updowndir) != DOWN);
-
-  for (int i = 0; i < bounds.size (); i++)
-    {
-      if (!Note_head::has_interface (bounds[i]))
-       continue;
-
-      
-      Grob *dots = unsmob_grob (bounds[i]->get_object ("dot"));
-      if (dots && d == LEFT)
-       {
-         Interval x = dots->extent (common, X_AXIS);
-         Real p = Staff_symbol_referencer::get_position (dots);
-             
-         Interval y (-1,1);
-         y *= (staff_space /4);
-         y.translate (p * staff_space * .5);
-
-         insert_extent_into_skyline (skyline,
-                                     Box (x,y), Y_AXIS, -d);
-       }
-    }
-}
-
-void
-set_chord_outlines (Drul_array< Array<Skyline_entry> > *skyline_drul,
-                   Link_array<Grob> ties,
-                   Grob *common)
-{
-  Direction d = LEFT;
-
-  do
-    {
-      Link_array<Item> bounds;
-      
-      for (int i = 0; i < ties.size (); i++)
-       {
-         Item *it = dynamic_cast<Spanner*> (ties[i])->get_bound (d);
-                                            
-         bounds.push (it);
-       }
-      
-      set_chord_outline (&skyline_drul->elem_ref (d),
-                        bounds, common, d);
-    }
-  while (flip (&d) != LEFT);
-}
-
-void
-shift_small_ties (Array<Tie_configuration> *tie_configs,
-                 Grob *staff_referencer,
-                 Tie_details const &details)
-{
-  set<int> positions_taken;
-  for (int i = 0; i < tie_configs->size (); i++)
-    positions_taken.insert (int (rint (tie_configs->elem (i).position_)));
-
-  for (int i = 0; i < tie_configs->size (); i++)
-    {
-      Tie_configuration * conf = &tie_configs->elem_ref (i);
-
-      /*
-       on staff line and small enough, translate a little further 
-      */
-      Real h = conf->height (details);
-      bool next_free = positions_taken.find (int (rint (conf->position_ + 
conf->dir_)))
-       == positions_taken.end ();
-
-      int rounded_pos = int (rint (conf->position_ + conf->delta_y_ / 
details.staff_space_));
-      bool on_line = Staff_symbol_referencer::on_staffline (staff_referencer, 
rounded_pos);
-      
-      if (next_free)
-       if (on_line && h < 0.4 * details.staff_space_)
-         {
-           positions_taken.insert (int (rint (conf->position_ + conf->dir_)));
-           conf->delta_y_ += 0.2 * details.staff_space_ * conf->dir_;
-         }
-       else if (!on_line && h > 0.6 * details.staff_space_)
-         {
-           positions_taken.insert (int (rint (conf->position_ + conf->dir_)));
-           conf->delta_y_ += 0.5 * details.staff_space_ * conf->dir_;
-         }
-    }
-}
-
-
-void
-final_shape_adjustment (Tie_configuration &conf,
-                       Drul_array< Array<Skyline_entry> > const &skylines,
-                       Grob *staff_referencer,
-                       Tie_details const &details)
-{
-  Real line_dy = 0.0;
-  bool on_line = Staff_symbol_referencer::on_staffline (staff_referencer,
-                                                       int (rint 
(conf.position_)));
-  if (on_line)
-    line_dy = - sign (conf.height (details) - 0.6 * details.staff_space_)
-      * 0.2 * details.staff_space_ * conf.dir_;
-
-  Real y = conf.position_ * details.staff_space_ * 0.5
-    + line_dy;
-  
-  conf.attachment_x_ = get_skyline_attachment (skylines, y);
-  conf.attachment_x_.intersect (get_skyline_attachment (skylines,
-                                                       y + conf.dir_ * 
details.staff_space_ * 0.5));
-
-  conf.delta_y_ += line_dy;
-  conf.attachment_x_.widen (-details.x_gap_);
-  if (!on_line
-      && Staff_symbol_referencer::staff_radius (staff_referencer) * 
details.staff_space_ > y)
-    conf.center_tie_vertically (details);
-}
-
-void
-set_tie_config_directions (Array<Tie_configuration> *tie_configs_ptr)
-{
-  Array<Tie_configuration> &tie_configs (*tie_configs_ptr);
-  
-  if (!tie_configs[0].dir_)
-    tie_configs[0].dir_ = DOWN;
-  if (!tie_configs.top().dir_)
-    tie_configs.top().dir_ = UP;
-
-  /*
-    Seconds
-   */
-  for (int i = 1; i < tie_configs.size(); i++)
-    {
-      if (fabs (tie_configs[i-1].position_ - tie_configs[i].position_) <= 1)
-       {
-         if (!tie_configs[i-1].dir_)
-           tie_configs[i-1].dir_ = DOWN;
-         if (!tie_configs[i].dir_)
-           tie_configs[i].dir_ = UP;
-       }
-    }
-
-  for (int i = 1; i < tie_configs.size() - 1; i++)
-    {
-      if (tie_configs[i].dir_)
-       continue;
-
-      Direction position_dir = (Direction) sign (tie_configs[i].position_);
-      if (!position_dir)
-       position_dir = DOWN;
-      
-      tie_configs[i].dir_ = position_dir;
-    }
-}
-                          
-
-void
 Tie_column::new_directions (Grob *me)
 {
   extract_grob_set (me, "ties", ro_ties);
@@ -355,23 +109,9 @@
 
   SCM manual_configs = me->get_property ("tie-configuration");
   bool manual_override = false;
-  int k = 0;
-  for (SCM s = manual_configs;
-       scm_is_pair (s) && k < tie_configs.size(); s = scm_cdr (s))
-    {
-      SCM entry = scm_car (s);
-      if (!scm_is_pair (entry))
-       continue;
-
-      manual_override = true;
-      Real complete_pos = robust_scm2double (scm_car (entry), 
tie_configs[k].position_);
-      
-      tie_configs[k].position_ = int (rint (complete_pos));
-      tie_configs[k].delta_y_ = complete_pos - tie_configs[k].position_;
-      tie_configs[k].dir_ = Direction (robust_scm2int (scm_cdr (entry), 
tie_configs[k].dir_));
-      k ++;
-    }
-
+  set_manual_tie_configuration (&tie_configs,
+                               &manual_override,
+                               manual_configs);
   set_tie_config_directions (&tie_configs);
 
   Grob *common = me;
@@ -438,6 +178,7 @@
 }
 
 
+
 ADD_INTERFACE (Tie_column, "tie-column-interface",
               "Object that sets directions of multiple ties in a tied chord",
 
@@ -445,3 +186,4 @@
               "positioning-done "
               "tie-configuration "
               );
+
Index: lilypond/lily/tie.cc
diff -u lilypond/lily/tie.cc:1.159 lilypond/lily/tie.cc:1.160
--- lilypond/lily/tie.cc:1.159  Mon Sep 12 10:29:32 2005
+++ lilypond/lily/tie.cc        Mon Sep 12 12:20:25 2005
@@ -24,17 +24,12 @@
 #include "note-head.hh"
 #include "tie-column.hh"
 
-/*
-  tie: Connect two noteheads.
-
-  What if we have
-
-  c4 ~ \clef bass ; c4 or
-
-  c4 \staffchange c4
-
-  do we have non-horizontal ties then?
-*/
+int
+Tie::compare (Grob *const &s1,
+             Grob *const &s2)
+{
+  return sign (Tie::get_position (s1) - Tie::get_position (s2));
+}
 
 void
 Tie::set_head (Grob *me, Direction d, Grob *h)
Index: lilypond/ly/declarations-init.ly
diff -u lilypond/ly/declarations-init.ly:1.90 
lilypond/ly/declarations-init.ly:1.91
--- lilypond/ly/declarations-init.ly:1.90       Wed Aug  3 13:03:57 2005
+++ lilypond/ly/declarations-init.ly    Mon Sep 12 12:20:26 2005
@@ -65,7 +65,8 @@
 
 melisma = #(make-span-event 'ManualMelismaEvent START)
 melismaEnd = #(make-span-event 'ManualMelismaEvent STOP)
-
+laissezVibrer = #(make-music 'LaissezVibrerEvent)
+                 
 \include "grace-init.ly"
 \include "midi-init.ly"
 \include "paper-defaults.ly"
Index: lilypond/ly/engraver-init.ly
diff -u lilypond/ly/engraver-init.ly:1.247 lilypond/ly/engraver-init.ly:1.248
--- lilypond/ly/engraver-init.ly:1.247  Tue Aug 23 03:04:09 2005
+++ lilypond/ly/engraver-init.ly        Mon Sep 12 12:20:26 2005
@@ -182,7 +182,7 @@
   \consists "Trill_spanner_engraver"
   \consists "Grob_pq_engraver"
   \consists "Forbid_line_break_engraver"
-
+  \consists "Laissez_vibrer_engraver"
   \consists "Note_head_line_engraver"
   \consists "Glissando_engraver"
   \consists "Ligature_bracket_engraver"
Index: lilypond/mf/GNUmakefile
diff -u lilypond/mf/GNUmakefile:1.170 lilypond/mf/GNUmakefile:1.171
--- lilypond/mf/GNUmakefile:1.170       Mon Aug 29 07:49:45 2005
+++ lilypond/mf/GNUmakefile     Mon Sep 12 12:20:26 2005
@@ -43,7 +43,7 @@
 LOG_FILES = $(FETA_MF_FILES:%.mf=$(outdir)/%.log)
 LISP_FILES = $(FETA_MF_FILES:%.mf=$(outdir)/%.lisp)
 TEXTABLES = $(FETA_MF_FILES:%.mf=$(outdir)/%.tex)
-ENC_FILES = $(TEXTABLES:.tex=.enc) $(outdir)/cmr.enc
+ENC_FILES = $(TEXTABLES:.tex=.enc)
 TFM_FILES = $(FETA_MF_FILES:%.mf=$(outdir)/%.tfm)\
  $(SAUTER_FONTS:%=$(outdir)/%.tfm)
 FETA_LIST_FILES = $(FETA_MF_FILES:%.mf=$(outdir)/%list.ly)
Index: lilypond/scm/define-grobs.scm
diff -u lilypond/scm/define-grobs.scm:1.236 lilypond/scm/define-grobs.scm:1.237
--- lilypond/scm/define-grobs.scm:1.236 Fri Sep  2 21:02:19 2005
+++ lilypond/scm/define-grobs.scm       Mon Sep 12 12:20:26 2005
@@ -677,6 +677,26 @@
                 (interfaces . (key-signature-interface
                                font-interface
                                break-aligned-interface))))))
+    (LaissezVibrerTie
+     . (
+       (print-function  . ,Laissez_vibrer_tie::print)
+       (details . ((ratio . 0.333)
+                   (height-limit . 1.0)))
+       (thickness . 1.0)
+       (meta . ((class . Item)
+                (interfaces . (laissez-vibrer-tie-interface))
+                ))
+       ))
+    
+    (LaissezVibrerTieColumn
+     . (
+       (X-extent-callback . #f)
+       (Y-extent-callback . #f)
+       (meta . ((class . Item)
+                (interfaces . (laissez-vibrer-tie-column-interface))
+                ))
+       ))
+    
     (LedgerLineSpanner
      . (
        (print-function . ,Ledger_line_spanner::print)
Index: lilypond/scm/define-music-types.scm
diff -u lilypond/scm/define-music-types.scm:1.64 
lilypond/scm/define-music-types.scm:1.65
--- lilypond/scm/define-music-types.scm:1.64    Sun Sep 11 09:59:49 2005
+++ lilypond/scm/define-music-types.scm Mon Sep 12 12:20:26 2005
@@ -221,7 +221,13 @@
        (to-relative-callback . ,(lambda (x p) p))
        (types . (general-music key-change-event event))
        ))
-    
+    (LaissezVibrerEvent
+     . ((description . "Don't damp this chord.
+
+Syntax: @var{note}\\laissezVibrer.")
+
+       (types . (general-music event laissez-vibrer-event))
+       ))
     (LigatureEvent
      . (
        (description .  "(docme).")


_______________________________________________
Lilypond-cvs mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/lilypond-cvs

Reply via email to