]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.3.23 release/1.3.23
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 7 Feb 2000 12:03:23 +0000 (13:03 +0100)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 7 Feb 2000 12:03:23 +0000 (13:03 +0100)
===========

* Symbols opposite to stem  (eg marcato) now get the proper glyph.

* Breathing marks now have a direction by default.

* Do set generic script properties.

* Also put tuplet brackets under notes.

* Score_element_info: only store origin of element, but not the path
to parent translators. Saves a little memory, and removes some complexity.

1.3.22.h

46 files changed:
CHANGES
TODO
VERSION
lib/include/input.hh
lib/input.cc
lily/audio-element-info.cc [new file with mode: 0644]
lily/audio-item-info.cc [deleted file]
lily/bar-script-engraver.cc
lily/base-span-bar-engraver.cc
lily/breathing-sign-engraver.cc
lily/breathing-sign.cc
lily/command-request.cc
lily/crescendo.cc
lily/dynamic-engraver.cc
lily/engraver-group-engraver.cc
lily/engraver.cc
lily/include/audio-element-info.hh
lily/include/breathing-sign.hh
lily/include/command-request.hh
lily/include/musical-request.hh
lily/include/score-element-info.hh
lily/include/script-engraver.hh [deleted file]
lily/include/side-position-interface.hh
lily/include/time-signature.hh
lily/line-number-engraver.cc [new file with mode: 0644]
lily/mark-engraver.cc
lily/multi-measure-rest-engraver.cc
lily/my-lily-lexer.cc
lily/parser.yy
lily/performer-group-performer.cc
lily/score-element-info.cc
lily/score-engraver.cc
lily/script-engraver.cc
lily/script.cc
lily/side-position-interface.cc
lily/staff-margin-engraver.cc
lily/staff-symbol-engraver.cc
lily/text-engraver.cc
lily/time-signature.cc
lily/timing-translator.cc
lily/tuplet-spanner.cc
lily/vertical-align-engraver.cc
ly/auto-beam-settings.ly
make/out/lilypond.lsm
make/out/lilypond.spec
scm/generic-property.scm

diff --git a/CHANGES b/CHANGES
index 7fd2dfd03fb6e676817742aae17a2c97f2ef4fd3..075a01b1e1525a3d9a4aa318052c51dd7b28cc09 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,38 @@
+1.3.22.hwn2
+===========
+
+* Symbols opposite to stem  (eg marcato) now get the proper glyph.
+
+* Breathing marks now have a direction by default.
+
+* Do set generic script properties.
+
+* Also put tuplet brackets under notes.
+
+* Score_element_info: only store origin of element, but not the path
+to parent translators. Saves a little memory, and removes some complexity.
+
+
+1.3.22.hwn1
+===========
+
+* Autobeaming in time sigs that don't have 1/4 beats fixed.
+
+* (De)crescendi should now work. (Thanks Michael)
+
+* Better error reporting for conflicting time signatures.
+
+* Line_number_engraver: output locations of note head
+definitions. Very handy when entering complicated scores.
+
+* Rewrote multi measure rest support: now they are entered as spanners
+(\commandspanrequest \start "rest"). RXXXX is an abbreviation for
+\commandspanrequest \start "rest" SXXXX \commandspanrequest \stop "rest".
+
+* Removed support of percent style repetitions. 
+
+* Put texts outside the staff.
+
 1.3.21.mb1
 ==========
 * Getopt bugfix: don't assert on certain errors.
diff --git a/TODO b/TODO
index 57b88fb58da0bb3e7c72178db199e71a6696504c..04eebc905ca75300408e65ca3046e0031f80e664 100644 (file)
--- a/TODO
+++ b/TODO
@@ -11,11 +11,11 @@ Grep -i for TODO, FIXME and ugh/ugr/urg.
 .* TODO
 . * use hash tabs iso. alist_ for elt property?
 . * fix tremolos.
+. * ROADMAP file.
+. * change ) c4  to c4-)
 . * internationalize GUILE msgs.
-gg 
 . * unbroken marks.
 . * write smobifying howto.
-. * tuplet spanner dir
 . * \property autoBeamOverRest (boolean). Don't stop for rests when autobeaming.
 ?
 . * put property test files in refman.
@@ -23,8 +23,9 @@ gg
 . * alignment within @itemize
 . * interstaff stems
 . * junk dstream output.
-. * agressive type-checking for SCM stuff.
+. * Change website to be index to documentation.
 . * \prop slurdir in grace notes
+. * \eltproperty "=Context" "Elt_name" "prop-name" #value
 . * script columns
 . * Must stop before this music ends:
 verse=\lyrics {
diff --git a/VERSION b/VERSION
index c12766d66b228d9998639fa201345656924e82ba..8135fdaa697a5570031190a61859e3e7fc4ab9fc 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
-PATCH_LEVEL=22
+PATCH_LEVEL=23
 MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
index 74ee72efe3082c3c5ce34bbac229adab3ff46463..1c9e61ccbfb5f840b55d6bf139c766cff6a94f59 100644 (file)
@@ -27,6 +27,7 @@ public:
   void set_spot (Input const &);
   Input spot () const;
   String location_str () const;
+  String line_number_str () const;
   Input (Source_file*, char const*);
   Input ();
 };
index db7c10ee1f3772de16ae5a6e7722ff02cce0289d..9413f7c49e82fc37ca204dddaf9cf0b0cd4ff2f7 100644 (file)
@@ -106,3 +106,11 @@ Input::location_str () const
     return "(" + _ ("position unknown") + ")";
 }
 
+String
+Input::line_number_str () const
+{
+  if (source_file_l_)
+    return to_str (source_file_l_->line_i (defined_ch_C_));
+  else
+    return "?";
+}
diff --git a/lily/audio-element-info.cc b/lily/audio-element-info.cc
new file mode 100644 (file)
index 0000000..5580b6f
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+  Audio-element-info.cc -- implement Audio_element_info
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "audio-element-info.hh"
+#include "request.hh"
+
+Audio_element_info::Audio_element_info (Audio_element*s_l, Music *r_l)
+{
+  elem_l_ = s_l;
+  req_l_ = r_l;
+}
+
+
+Audio_element_info::Audio_element_info()
+{
+  elem_l_ = 0;
+  req_l_ = 0;
+}
+
+Link_array<Translator>
+Audio_element_info::origin_trans_l_arr (Translator*) const
+{
+  return origin_trans_l_arr_;
+}
diff --git a/lily/audio-item-info.cc b/lily/audio-item-info.cc
deleted file mode 100644 (file)
index 4be88d0..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-  Audio-element-info.cc -- implement Audio_element_info
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "audio-element-info.hh"
-#include "request.hh"
-
-Audio_element_info::Audio_element_info (Audio_element*s_l, Music *r_l)
-{
-  elem_l_ = s_l;
-  req_l_ = r_l;
-}
-
-
-Audio_element_info::Audio_element_info()
-{
-  elem_l_ = 0;
-  req_l_ = 0;
-}
-
-
-
index bd85c3e6f2c73630db2508176f21a65420cc2da5..0902c377e700ed2492afd3e492032e3100ea1b44 100644 (file)
@@ -80,7 +80,7 @@ Bar_script_engraver::cast_to_interesting_item (Score_element *e)
 void
 Bar_script_engraver::acknowledge_element (Score_element_info inf)
 {
-  if (inf.origin_trans_l_arr_.size () == 1)
+  if (inf.origin_trans_l_arr (this).size () == 1)
     {
       Item *i=cast_to_interesting_item (inf.elem_l_);
       if (!i)
@@ -89,7 +89,7 @@ Bar_script_engraver::acknowledge_element (Score_element_info inf)
       /* Only put numbers on bars that are at our own level (don't put
         numbers over the staffs of a GrandStaff, only over the GrandStaff
         itself */
-      if (inf.origin_trans_l_arr_.size () != 1)
+      if (inf.origin_trans_l_arr (this).size () != 1)
        return;
 
       attach_script_to_item (i);
index 7d4365fd1e86131b02be0a83fb50e8efc64250a2..4636f957fac115a266f370bcf29d21969df3afbd 100644 (file)
@@ -28,7 +28,7 @@ Base_span_bar_engraver::get_span_bar_p() const
 void
 Base_span_bar_engraver::acknowledge_element (Score_element_info i)
 {
-  int depth = i.origin_trans_l_arr_.size();
+  int depth = i.origin_trans_l_arr (this).size();
   if (depth > 1
       && dynamic_cast<Bar *> (i.elem_l_)) 
     {
index 669a606353d7f6237a51ceaf19af567e2670f885..46761a934fe27dd60fe37980a180af17614860bc 100644 (file)
@@ -32,10 +32,11 @@ Breathing_sign_engraver::Breathing_sign_engraver()
 bool
 Breathing_sign_engraver::do_try_music (Music*r_l)
 {
-  if (Breathing_sign_req  * b= dynamic_cast <Breathing_sign_req *> (r_l)) {
-    breathing_sign_req_l_ = b;
-    return true;
-  }
+  if (Breathing_sign_req  * b= dynamic_cast <Breathing_sign_req *> (r_l))
+    {
+      breathing_sign_req_l_ = b;
+      return true;
+    }
  
   return false;
 }
@@ -43,28 +44,31 @@ Breathing_sign_engraver::do_try_music (Music*r_l)
 void
 Breathing_sign_engraver::do_process_requests()
 {
-  if(breathing_sign_req_l_) {
-    breathing_sign_p_ = new Breathing_sign;
-    Staff_symbol_referencer_interface st (breathing_sign_p_);
-    st.set_interface ();
+  if(breathing_sign_req_l_)
+    {
+      breathing_sign_p_ = new Breathing_sign;
+      breathing_sign_p_->set_elt_property ("break-aligned", SCM_BOOL_T);
+      Staff_symbol_referencer_interface st (breathing_sign_p_);
+      st.set_interface ();
 
-    announce_element (Score_element_info (breathing_sign_p_, breathing_sign_req_l_));
-  }
+      announce_element (Score_element_info (breathing_sign_p_, breathing_sign_req_l_));
+    }
 }
 
 void 
 Breathing_sign_engraver::do_pre_move_processing()
 {
-  if(breathing_sign_p_) {
-    typeset_element(breathing_sign_p_);
-    breathing_sign_p_ = 0;
-  }
+  if(breathing_sign_p_)
+    {
+      typeset_element(breathing_sign_p_);
+      breathing_sign_p_ = 0;
+    }
 }
 
 void
 Breathing_sign_engraver::do_post_move_processing()
 {
-    breathing_sign_req_l_ = 0;
+  breathing_sign_req_l_ = 0;
 }
 
 ADD_THIS_TRANSLATOR(Breathing_sign_engraver);
index 97460a490afff8826b707e29ffff6e4db2b4769a..f6672d2059a962620c6f3301afd765e6585914c0 100644 (file)
@@ -31,20 +31,26 @@ Breathing_sign::do_brew_molecule_p () const
 {
   Staff_symbol_referencer_interface si (this);
   
-  Real dl = si.staff_space();
-  Interval i1(0, dl / 6), i2(-dl / 2, dl / 2);
+  Real space = si.staff_space();
+  Interval i1(0, space / 6), i2(-space / 2, space / 2);
   Box b(i1, i2);
 
   Molecule *output = new Molecule (lookup_l()->filledbox(b));
-
   return output;
 }
 
 void
 Breathing_sign::do_post_processing()
 {
-  Real dl = Staff_symbol_referencer_interface (this).staff_space();
-
-  translate_axis(2.0 * dl * directional_element(this).get (), Y_AXIS);
+  Real space = staff_symbol_referencer (this).staff_space();
+  Direction d = directional_element (this). get ();
+  if (!d)
+    {
+      d = UP;
+      directional_element(this).set (d);
+    }
+
+  translate_axis(2.0 * space * d, Y_AXIS);
 }
 
index 6975762e3e610efb663a83e9b44624f68bb80ed6..e73c253d8914045aa3bd400ee92128e2444c412b 100644 (file)
@@ -122,16 +122,20 @@ Break_req::Break_req ()
 {
 }
 
-Mark_req::Mark_req (String s)
-{
-  str_ = s;
-}
 
 void
 Mark_req::do_print () const
 {
   DEBUG_OUT << str_;
 }
+
+bool
+Mark_req::do_equal_b (Request const * r) const
+{
+  Mark_req const * other = dynamic_cast<Mark_req const*> (r);
+  return other && other->str_ == str_;
+}
+
 void
 Key_change_req::transpose (Musical_pitch p)
 {
index 02b31c40c4eb6fd8d66d4dd12a1653adb48bff7f..b8d1744fb4cc298209d84038f2f97b34ba127537 100644 (file)
@@ -28,7 +28,7 @@ Crescendo::do_brew_molecule_p () const
   Real absdyn_dim = paper_l ()-> get_var ("crescendo_shorten");
   Real extra_left =  get_broken_left_end_align ();
 
-  SCM dir = get_elt_property("grow-dir");
+  SCM dir = get_elt_property("grow-direction");
   SCM dyns = get_elt_property ("dynamic-drul");
 
   if (!isdir_b (dir) || !gh_pair_p (dyns))
index 5f42b8ba80e13aea4764ba61391f5aa0dc3a5371..c6c35a908f7ad1c19abc4b0cc684605274616417 100644 (file)
@@ -42,6 +42,7 @@ protected:
   virtual void do_process_requests();
   virtual void do_pre_move_processing();
   virtual void do_post_move_processing();
+  virtual void typeset_element (Score_element*);
 };
 
 
@@ -114,7 +115,6 @@ Dynamic_engraver::do_process_requests()
          text_p_->set_elt_property ("style", gh_str02scm ("dynamic"));
          text_p_->set_elt_property ("script-priority",
                                     gh_int2scm (100));
-         text_p_->set_elt_property ("staff-support", SCM_BOOL_T);
          
          Side_position_interface (text_p_).set_axis (Y_AXIS);
 
@@ -170,10 +170,7 @@ Dynamic_engraver::do_process_requests()
                ->set_elt_property ("grow-direction",
                                    gh_int2scm ((span_l->span_type_str_ == "crescendo") ? BIGGER : SMALLER));
              
-             new_cresc_p->set_elt_property ("staff-support", SCM_BOOL_T);
-
-
-             Side_position_interface (new_cresc_p).set_axis (Y_AXIS);
+             side_position (new_cresc_p).set_axis (Y_AXIS);
              announce_element (Score_element_info (new_cresc_p, span_l));
            }
        }
@@ -185,7 +182,6 @@ Dynamic_engraver::do_process_requests()
        {
          ::warning (_ ("Too many crescendi here"));
 
-
          typeset_element (cresc_p_);
 
          cresc_p_ = 0;
@@ -247,6 +243,12 @@ Dynamic_engraver::typeset_all ()
     }
 }
 
+void
+Dynamic_engraver::typeset_element (Score_element * e)
+{
+  side_position(e).add_staff_support ();
+  Engraver::typeset_element (e);
+}
 
 void
 Dynamic_engraver::acknowledge_element (Score_element_info i)
index 75f16950d0aafa76185e0f72b65c1bab138ae7cb..f33939c62a80f1127596699aef8cd907588a514e 100644 (file)
@@ -48,7 +48,7 @@ Engraver_group_engraver::do_announces()
              if (!dynamic_cast <Engraver_group_engraver *> (p->car_))
                {
                  Engraver * eng = dynamic_cast<Engraver*> (p->car_);
-                 if (eng && eng!= info.origin_trans_l_arr_[0])
+                 if (eng && eng!= info.origin_trans_l_arr (this)[0])
                    eng->acknowledge_element (info);
                }                 
            }
index 9688c2b347d21c6b1c1f88b409dd4a522989f288..7b2fb0c90c3e99b8cca3b71b85ad245cd5823fd5 100644 (file)
@@ -23,7 +23,8 @@ Engraver::fill_staff_info (Staff_info&)
 void
 Engraver::announce_element (Score_element_info i)
 {
-  i.origin_trans_l_arr_.push (this);
+  if (!i.origin_trans_l_)
+    i.origin_trans_l_ = this;
   daddy_grav_l()->announce_element (i);
 }
 
index 293fff867bdc9919075448e77b8658a7f2424d20..a247fc9c5e203a0558af1d88d11250a7411e65c9 100644 (file)
@@ -20,6 +20,7 @@ struct Audio_element_info {
   Audio_element * elem_l_;
   Music *req_l_;
   Link_array<Translator> origin_trans_l_arr_;
+  Link_array<Translator> origin_trans_l_arr (Translator*) const;  
 
   Audio_element_info (Audio_element*, Music*);
   Audio_element_info();
index aff6f393b438b95162991b5605cfda03a9e4a12a..bda300aaa010f1777d3d98d5bd6f661410ed65db 100644 (file)
@@ -18,10 +18,6 @@ class Breathing_sign : public Item
 public:
   VIRTUAL_COPY_CONS(Score_element);
   Breathing_sign ();
-
-  void set_vertical_position (Direction);
-
-
 protected:
   virtual void do_post_processing ();
   virtual Molecule* do_brew_molecule_p () const;
index 3bb3474ac0fc378d2b5c5074eae0fdf49d6b968e..c1efa26c43639d8576cd615740c549e05723000e 100644 (file)
@@ -26,9 +26,9 @@ protected:
 
 class Mark_req : public Request {
 public:
-  Mark_req (String);
   String str_;
 protected:
+  virtual bool do_equal_b (Request const*) const;
   virtual void do_print () const;  
   VIRTUAL_COPY_CONS(Music);
 };
index 37f3d6ad094d3f039c76b840b6f075444609f93e..dbabc86eddb69981d409d44e95853c8975721668 100644 (file)
@@ -135,22 +135,6 @@ public:
   VIRTUAL_COPY_CONS(Music);
 };
 
-/**
- Part: typeset a measure with the number of measures rest
- Score: typeset all individual measures as full rests
- */
-class Multi_measure_rest_req : public Rhythmic_req  {
-public:
-  VIRTUAL_COPY_CONS(Music);
-};
-
-/**
- Typeset a repetition sign in each bar.
- */
-class Repetitions_req : public Rhythmic_req  {
-public:
-  VIRTUAL_COPY_CONS(Music);
-};
 
 /// an extender line
 class Extender_req : public Request  {
index 4d9ede8691f52f13322dc017ca00e337c03cec12..ac5ca855750b9a89118287f017601038d58ca1d6 100644 (file)
 #include "parray.hh"
 
 /**
-  Data container for broadcasts 
+  Data container for broadcasts.
+
+  TODO: Store this in element info! 
   */
 struct Score_element_info {
-    Score_element * elem_l_;
-    Music *req_l_;
-    Link_array<Translator> origin_trans_l_arr_;
+  Translator * origin_trans_l_;
+  friend Engraver;
+public:
+  Link_array<Translator> origin_trans_l_arr (Translator*) const; 
+  Score_element * elem_l_;
+  Music *req_l_;
+
 
-    Score_element_info (Score_element*, Music*);
-    Score_element_info();
+  Score_element_info (Score_element*, Music*);
+  Score_element_info();
 };
 
 
diff --git a/lily/include/script-engraver.hh b/lily/include/script-engraver.hh
deleted file mode 100644 (file)
index b4862c1..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-  script-engraver.hh -- part of GNU LilyPond
-
-  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef Script_GRAV
-#define Script_GRAV
-
-#include "engraver.hh"
-
-
-class Script_engraver : public Engraver {
-  Link_array<Script> script_p_arr_;
-  Link_array<Articulation_req> script_req_l_arr_;
-
-public:
-  VIRTUAL_COPY_CONS(Translator);
-  
-  Script_engraver();
-protected:
-  virtual bool do_try_music (Music*);
-  virtual void do_process_requests ();
-  virtual void do_pre_move_processing ();
-  virtual void do_post_move_processing ();
-  virtual void acknowledge_element (Score_element_info);
-};
-
-#endif // Script_GRAV
index cfa65ffec02be2071bda9e39ec77f05227aabc3d..b3a37ae708babbe429165ab807fcc6c4fd757a1e 100644 (file)
@@ -29,11 +29,13 @@ public:
   bool supported_b () const;
   bool has_interface_b () const;
   void add_support (Score_element*);
-  
+
+  void add_staff_support ();
   Direction get_direction () const;
   void set_direction (Direction);
 };
 
+Side_position_interface side_position (Score_element*);
 
 #endif /* SIDE_POSITION_INTERFACE_HH */
 
index f3491667316c09b4fb3e29035c1c6d43d4f2bd8a..e09572632fa9d4338b4705eb4136ffc74f75397e 100644 (file)
@@ -23,6 +23,10 @@ protected:
   virtual Molecule*do_brew_molecule_p() const;
 public:
   Time_signature () ;
+
+  /*
+    TODO: make this SCM!
+   */
   Array<int> args_;
   
   VIRTUAL_COPY_CONS(Score_element);
diff --git a/lily/line-number-engraver.cc b/lily/line-number-engraver.cc
new file mode 100644 (file)
index 0000000..fc9f639
--- /dev/null
@@ -0,0 +1,101 @@
+/*   
+  line-number-engraver.cc --  implement  Line_number_engraver
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#include "engraver.hh"
+#include "text-item.hh"
+#include "side-position-interface.hh"
+#include "note-head.hh"
+#include "stem.hh"
+
+/**
+   Annotate output with line numbers. Creates text-items when it
+   catches note heads.  */
+class Line_number_engraver : public Engraver
+{
+  Array<Score_element_info> interesting_;
+  Link_array<Score_element> support_;
+  Item * text_item_p_;
+  String last_text_;
+public:
+  Line_number_engraver ();
+  VIRTUAL_COPY_CONS (Translator);
+protected:
+  virtual void do_pre_move_processing ();
+  virtual void acknowledge_element (Score_element_info);
+  virtual void process_acknowledged ();
+};
+
+void
+Line_number_engraver::process_acknowledged ()
+{
+  if (!text_item_p_ && interesting_.size ())
+    {
+      text_item_p_ = new Text_item;
+      Side_position_interface si (text_item_p_);
+      si.set_axis (Y_AXIS);
+      text_item_p_->set_parent (interesting_[0].elem_l_, Y_AXIS);
+
+      si.set_direction (UP);
+      announce_element (Score_element_info (text_item_p_, 0));
+    }
+}
+
+void
+Line_number_engraver::acknowledge_element (Score_element_info inf)
+{
+  if (dynamic_cast<Note_head*> (inf.elem_l_))
+    {
+      interesting_.push (inf);
+      support_.push (inf.elem_l_);
+    }
+  if (dynamic_cast<Stem*> (inf.elem_l_))
+    {
+      support_.push (inf.elem_l_);
+    }
+}
+
+void
+Line_number_engraver::do_pre_move_processing ()
+{
+  if (text_item_p_)
+    {
+      String s;
+      Side_position_interface si (text_item_p_);
+      for (int i=0; i < interesting_.size (); i++)
+       {
+         if (i)
+           s += ",";
+         
+         s += interesting_[i].req_l_->line_number_str ();
+         
+       }
+
+      for (int j= support_.size (); j--; )
+       {
+         si.add_support (support_[j]);
+       }
+      if (s != last_text_)
+       {
+         text_item_p_->set_elt_property ("text", ly_str02scm (s.ch_C()));
+         last_text_ =s;
+       }
+      
+      typeset_element (text_item_p_);
+      text_item_p_ =0;
+    }
+  interesting_.clear ();
+  support_.clear ();
+}
+
+Line_number_engraver::Line_number_engraver ()
+{
+  text_item_p_ =0;
+}
+
+ADD_THIS_TRANSLATOR(Line_number_engraver);
index 92752b2d9b60e8bfb7a6fa090a4810e00641e3e2..6e9dbfdb24c76166c8512132acdbe86bbd6c2e06 100644 (file)
@@ -33,6 +33,11 @@ Mark_engraver::do_try_music (Music* r_l)
 {
   if (Mark_req *mr = dynamic_cast <Mark_req *> (r_l))
     {
+      
+      if (mark_req_l_ && mr->equal_b (mark_req_l_))
+       return true;
+      if (mark_req_l_)
+       return false;
       mark_req_l_ = mr;
       return true;
     }
index 7ac5c3791f9949023f7f40e08fa6b927658fae63..4427d7aa9ad52e08ab2442e7bec7285fc27c5d11 100644 (file)
@@ -22,7 +22,6 @@ class Multi_measure_rest_engraver : public Engraver
 {
 public:
   VIRTUAL_COPY_CONS(Translator);
-  
   Multi_measure_rest_engraver ();
 
 protected:
@@ -31,14 +30,16 @@ protected:
   virtual bool do_try_music (Music*);
   virtual void do_pre_move_processing ();
   virtual void do_post_move_processing ();
-
+  virtual void do_removal_processing ();
 private:
-  Drul_array<Moment> rest_moments_;
-  
+  Span_req * new_req_l_;
+  Span_req * busy_span_req_l_;
+  Span_req * stop_req_l_;
   int start_measure_i_;
-  Rhythmic_req* multi_measure_req_l_;
-  Multi_measure_rest* mmrest_p_;
-  Multi_measure_rest* lastrest_p_;
+  Moment start_moment_;
+  
+  Multi_measure_rest *mmrest_p_;
+  Multi_measure_rest *lastrest_p_;
 };
 
 ADD_THIS_TRANSLATOR (Multi_measure_rest_engraver);
@@ -46,12 +47,8 @@ ADD_THIS_TRANSLATOR (Multi_measure_rest_engraver);
 Multi_measure_rest_engraver::Multi_measure_rest_engraver ()
 {
   start_measure_i_ = 0;
-  rest_moments_[START] =
-    rest_moments_[STOP] =0;
-  multi_measure_req_l_ = 0;
-
-  lastrest_p_ =0;
-  mmrest_p_ = 0;
+  mmrest_p_  = lastrest_p_ =0;
+  new_req_l_ = busy_span_req_l_ = stop_req_l_ =0;
 }
 
 void
@@ -59,7 +56,7 @@ Multi_measure_rest_engraver::acknowledge_element (Score_element_info i)
 {
   if (Bar *c = dynamic_cast<Bar*> (i.elem_l_))
     {
-      if (mmrest_p_) 
+      if (mmrest_p_)
        mmrest_p_->add_column (c);
       if (lastrest_p_)
        lastrest_p_->add_column (c);
@@ -69,36 +66,49 @@ Multi_measure_rest_engraver::acknowledge_element (Score_element_info i)
 bool
 Multi_measure_rest_engraver::do_try_music (Music* req_l)
 {
-  Rhythmic_req *r=0;
-  if (Multi_measure_rest_req *mr = 
-      dynamic_cast<Multi_measure_rest_req *> (req_l))
-    r=mr;
-  else if (Repetitions_req *rr = 
-          dynamic_cast<Repetitions_req *> (req_l))
-    r=rr;
-  if (r)
+  if (Span_req * sp = dynamic_cast<Span_req*> (req_l))
     {
-      if (multi_measure_req_l_)
-       if (!multi_measure_req_l_->equal_b (r)
-           || rest_moments_[START] != now_mom ())
-         return false;
-      
-      multi_measure_req_l_ = r;
-      rest_moments_[START] = now_mom ();
-      
-      rest_moments_[STOP] = rest_moments_[START] +
-       multi_measure_req_l_->duration_.length_mom ();
-      return true;
+      if (sp->span_type_str_ == "rest")
+       {
+         if (sp->span_dir_ == STOP)
+           {
+             stop_req_l_ = sp;
+           }
+         else if (sp->span_dir_ == START && !new_req_l_)
+           {
+             new_req_l_ = sp;
+           }
+         return true;
+       }
     }
   return false;
 }
 
+
+
 void
 Multi_measure_rest_engraver::do_process_requests ()
 {
-  if (multi_measure_req_l_ && !mmrest_p_)
+  if (new_req_l_ && stop_req_l_)
+    stop_req_l_ = 0;
+
+  if (new_req_l_)
+    start_moment_ = now_mom ();
+
+  if (stop_req_l_)
+    {
+      busy_span_req_l_ =0;
+      stop_req_l_ = 0;
+    }
+  
+  if (new_req_l_)
     {
+      busy_span_req_l_ = new_req_l_;
+      new_req_l_ =0;
+    }
 
+  if (busy_span_req_l_ && !mmrest_p_)
+    {
       Translator * tr = daddy_grav_l()->get_simple_translator ("Timing_engraver");     // ugh
       Timing_translator * time = dynamic_cast<Timing_translator*> (tr);
 
@@ -106,14 +116,7 @@ Multi_measure_rest_engraver::do_process_requests ()
       Staff_symbol_referencer_interface si (mmrest_p_);
       si.set_interface ();
 
-
-      /*
-       UGH. JUNKME
-       */
-      if(dynamic_cast<Repetitions_req *> (multi_measure_req_l_))
-       mmrest_p_->set_elt_property ("alt-symbol", 
-                                    ly_str02scm ("scripts-repeatsign"));
-      announce_element (Score_element_info (mmrest_p_, multi_measure_req_l_));
+      announce_element (Score_element_info (mmrest_p_, busy_span_req_l_));
       start_measure_i_
        = gh_scm2int (time->get_property ("currentBarNumber", 0));
     }
@@ -126,8 +129,7 @@ Multi_measure_rest_engraver::do_pre_move_processing ()
   Translator * tr = daddy_grav_l()->get_simple_translator ("Timing_engraver"); // ugh
   Timing_translator * time  = dynamic_cast<Timing_translator*> (tr);
 
-
-  if (mmrest_p_ && (now >= rest_moments_[START]) 
+  if (mmrest_p_ && (now >= start_moment_) 
     && !time->measure_position ()
     && (scm_ilength (mmrest_p_->get_elt_property ("columns")) >= 2))
     {
@@ -141,6 +143,13 @@ Multi_measure_rest_engraver::do_pre_move_processing ()
       typeset_element (lastrest_p_);
       lastrest_p_ = 0;
     }
+
+  if (new_req_l_)
+    {
+      busy_span_req_l_ = new_req_l_;
+      new_req_l_ =0;
+    }
+  
 }
 
 void
@@ -158,12 +167,14 @@ Multi_measure_rest_engraver::do_post_move_processing ()
        = gh_scm2int (time->get_property ("currentBarNumber", 0)) - start_measure_i_;
       mmrest_p_ = 0;
     }
-
-  if (now >= rest_moments_[STOP])
-    {
-      multi_measure_req_l_ = 0;
-      mmrest_p_ = 0;
-    }
 }
 
 
+void
+Multi_measure_rest_engraver::do_removal_processing ()
+{
+  if (mmrest_p_)
+    typeset_element (mmrest_p_);
+  if (lastrest_p_)
+    typeset_element (lastrest_p_);
+}
index 211a6b8c4702fa06b8b2437801cdcc830e667294..f748aa4d338659c1b21f16ab0e4551e14eb7d526 100644 (file)
@@ -25,6 +25,7 @@
 static Keyword_ent the_key_tab[]={
   {"autochange", AUTOCHANGE},
   {"spanrequest", SPANREQUEST},
+  {"commandspanrequest", COMMANDSPANREQUEST},  
   {"simultaneous", SIMULTANEOUS},
   {"sequential", SEQUENTIAL},
   {"accepts", ACCEPTS},
index 606d9a3f17331427bc2b651d1e849a1c4c7046c1..6b11c89d0422909e442b5c6606febcabb95b1157 100644 (file)
@@ -179,6 +179,7 @@ yylex (YYSTYPE *s,  void * v_l)
 %token SCRIPT
 %token SKIP
 %token SPANREQUEST
+%token COMMANDSPANREQUEST
 %token TEMPO
 %token TIME_T
 %token TIMES
@@ -873,10 +874,14 @@ scalar:
 request_chord:
        pre_requests simple_element post_requests       {
                Music_sequence *l = dynamic_cast<Music_sequence*>($2);
-               for (int i=0; i < $1->size(); i++)
-                       l->add_music ($1->elem(i));
-               for (int i=0; i < $3->size(); i++)
-                       l->add_music ($3->elem(i));
+               if (l) {
+                       for (int i=0; i < $1->size(); i++)
+                               l->add_music ($1->elem(i));
+                       for (int i=0; i < $3->size(); i++)
+                               l->add_music ($3->elem(i));
+                       }
+               else
+                       programming_error ("Need Sequence to add music to");
                $$ = $2;
                
        }
@@ -962,15 +967,27 @@ abbrev_command_req:
 
 
 verbose_command_req:
+       
        BAR STRING                      {
                $$ = new Bar_req (ly_scm2string ($2));
        }
+       | COMMANDSPANREQUEST int STRING {
+               Span_req * sp_p = new Span_req;
+               sp_p-> span_dir_  = Direction($2);
+               sp_p->span_type_str_ = ly_scm2string ($3);
+               sp_p->set_spot (THIS->here_input ());
+               $$ = sp_p;
+       }       
        | MARK STRING {
-               $$ = new Mark_req (ly_scm2string ($2));
+               Mark_req *m = new Mark_req;
+               m->str_ = ly_scm2string ($2);
+               $$ = m;
 
        }
        | MARK unsigned {
-               $$ = new Mark_req (to_str ($2));
+               Mark_req *m = new Mark_req;
+               m->str_ =  to_str ($2);
+               $$ = m;
        }
        | TIME_T unsigned '/' unsigned  {
                Time_signature_change_req *m = new Time_signature_change_req;
@@ -1013,7 +1030,6 @@ verbose_command_req:
                $$ = key_p;
                delete $2;
        }
-
        ;
 
 post_requests:
@@ -1367,9 +1383,7 @@ simple_element:
                Note_req *n = new Note_req;
                
                n->pitch_ = *$1;
-               delete $1;
                n->duration_ = *$4;
-               delete $4;
                if (THIS->abbrev_beam_type_i_)
                  {
                    if (n->duration_.plet_b ())
@@ -1381,58 +1395,63 @@ simple_element:
                n->forceacc_b_ = $2 % 2 || n->cautionary_b_;
 
                Simultaneous_music*v = new Request_chord;
-               v->set_spot (THIS->here_input ());
-               n->set_spot (THIS->here_input ());
+               v->set_spot ($1->spot ());
+               n->set_spot ($1->spot ());
 
                v->add_music (n);
 
                $$ = v;
-       }
-       | RESTNAME optional_notemode_duration           {
-  Simultaneous_music* velt_p = new Request_chord;
-  velt_p->set_spot (THIS->here_input());
 
-  if (ly_scm2string ($1) =="s")
-    { /* Space */
-      Skip_req * skip_p = new Skip_req;
-      skip_p->duration_ = *$2;
+               delete $1;
+               delete $4;
 
-      skip_p->set_spot (THIS->here_input());
-      velt_p->add_music (skip_p);
-    }
-  else
-    {
-      Rest_req * rest_req_p = new Rest_req;
-      rest_req_p->duration_ = *$2;
-      rest_req_p->set_spot (THIS->here_input());
+       }
+       | RESTNAME optional_notemode_duration           {
+                 Simultaneous_music* velt_p = new Request_chord;
+                 velt_p->set_spot (THIS->here_input());
 
-      velt_p->add_music (rest_req_p);
-    }
+                 if (ly_scm2string ($1) =="s")
+                   { /* Space */
+                     Skip_req * skip_p = new Skip_req;
+                     skip_p->duration_ = *$2;
 
-  delete $2;
-  $$ = velt_p;
+                     skip_p->set_spot (THIS->here_input());
+                     velt_p->add_music (skip_p);
+                   }
+                 else
+                   {
+                     Rest_req * rest_req_p = new Rest_req;
+                     rest_req_p->duration_ = *$2;
+                     rest_req_p->set_spot (THIS->here_input());
 
+                     velt_p->add_music (rest_req_p);
+                   }
 
+                 delete $2;
+                 $$ = velt_p;
        }
        | MEASURES optional_notemode_duration   {
-               Multi_measure_rest_req* m = new Multi_measure_rest_req;
-               m->duration_ = *$2;
-               delete $2;
-
-               Simultaneous_music*velt_p = new Request_chord;
-               velt_p->set_spot (THIS->here_input ());
-               velt_p->add_music (m);
-               $$ = velt_p;
-       }
-       | REPETITIONS optional_notemode_duration        {
-               Repetitions_req* r = new Repetitions_req;
-               r->duration_ = *$2;
-               delete $2;
+               Skip_req * sk = new Skip_req;
+               sk->duration_ = *$2;
+               Music_list * ms = new Music_list;
+               Request_chord * rqc1 = new Request_chord;
+               Request_chord * rqc2 = new Request_chord;
+               Request_chord * rqc3 = new Request_chord;
+
+               Span_req *sp1 = new Span_req;
+               Span_req *sp2 = new Span_req;
+               sp1-> span_dir_ = START;
+               sp2-> span_dir_ = STOP;
+               sp1->span_type_str_ = sp2->span_type_str_ = "rest";
+               rqc1->add_music (sp1);
+               rqc2->add_music (sk);
+               rqc3->add_music (sp2);
+               
+               ms->add_music (rqc1);
+               ms->add_music (rqc2);
+               ms->add_music (rqc3);
 
-               Simultaneous_music*velt_p = new Request_chord;
-               velt_p->set_spot (THIS->here_input ());
-               velt_p->add_music (r);
-               $$ = velt_p;
+               $$ = new Sequential_music (ms);
        }
        | STRING optional_notemode_duration     {
                if (!THIS->lexer_p_->lyric_state_b ())
index 583c59a936d5f4fe36808cbd6e1958e247f590dc..52770a3e0b586c9cf6af80b6c6a033fe6f2eeb68 100644 (file)
@@ -49,9 +49,9 @@ Performer_group_performer::do_announces()
                {
                  Performer * eng = dynamic_cast<Performer*> (p->car_);
                  // urg, huh? core dump?
-                 //if (eng && eng!= info.origin_trans_l_arr_[0])
-                 if (eng && info.origin_trans_l_arr_.size ()
-                     && eng!= info.origin_trans_l_arr_[0])
+                 //if (eng && eng!= info.origin_trans_l_arr ()[0])
+                 if (eng && info.origin_trans_l_arr (this).size ()
+                     && eng!= info.origin_trans_l_arr (this)[0])
                    eng->acknowledge_element (info);
                }
            }
index c3dd700aef33e4e899dd15645b7ef8bc84068ba3..92c1abd453ace9ae0afa7a2cf68aa0baa9e73b81 100644 (file)
@@ -8,11 +8,14 @@
 
 #include "score-element-info.hh"
 #include "request.hh"
+#include "translator.hh"
+#include "translator-group.hh"
 
 Score_element_info::Score_element_info (Score_element*s_l, Music *r_l)
 {
   elem_l_ = s_l;
   req_l_ = r_l;
+  origin_trans_l_ = 0;  
 }
 
 
@@ -20,7 +23,20 @@ Score_element_info::Score_element_info()
 {
   elem_l_ = 0;
   req_l_ = 0;
+  origin_trans_l_ = 0;
 }
 
 
-
+Link_array<Translator>
+Score_element_info::origin_trans_l_arr (Translator* end) const
+{
+  Translator * t = origin_trans_l_;
+  Link_array<Translator> r;
+  do {
+    r.push (t);
+    t = t->daddy_trans_l_;
+  } while (t != end->daddy_trans_l_);
+  
+  return r;
+}
+  
index 81bf16fa25b90ff5418bfcdb6f40747d4c4b55a9..f314b8f41f8a5cf436c06ae388a200fe7ea49454 100644 (file)
@@ -85,7 +85,6 @@ void
 Score_engraver::announce_element (Score_element_info info)
 {
   announce_info_arr_.push (info);
-  info.origin_trans_l_arr_.push (this);
   pscore_p_->typeset_element (info.elem_l_);
 }
 
index 0e6fe2433dbcd77d42f5f6b07483289908460b3c..65ca2915be3ff9bbae198ab928888dc310c45be7 100644 (file)
@@ -4,7 +4,7 @@
   (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
-#include "script-engraver.hh"
+
 #include "script.hh"
 #include "side-position-interface.hh"
 #include "musical-request.hh"
 #include "rhythmic-head.hh"
 #include "dimension-cache.hh"
 
+#include "engraver.hh"
+
+class Script_engraver : public Engraver {
+  Link_array<Script> script_p_arr_;
+  Link_array<Articulation_req> script_req_l_arr_;
+
+public:
+  VIRTUAL_COPY_CONS(Translator);
+  
+  Script_engraver();
+protected:
+  virtual bool do_try_music (Music*);
+  virtual void do_process_requests ();
+  virtual void do_pre_move_processing ();
+  virtual void do_post_move_processing ();
+  virtual void acknowledge_element (Score_element_info);
+};
+
+
 Script_engraver::Script_engraver()
 {
   do_post_move_processing();
@@ -138,6 +157,8 @@ Script_engraver::do_pre_move_processing()
 {
   for (int i=0; i < script_p_arr_.size(); i++) 
     {
+      if (to_boolean (script_p_arr_[i]->remove_elt_property ("staff-support")))
+       side_position (script_p_arr_[i]).add_staff_support ();
       typeset_element (script_p_arr_[i]);
     }
   script_p_arr_.clear();
index c3dc48943d012e6670296c15216633d951573428..494faed2b4703446636f553ed9f46df9dfa078d1 100644 (file)
@@ -51,8 +51,9 @@ Script::do_pre_processing ()
 void
 Script::do_post_processing ()
 {
-  Direction d =  Side_position_interface (this).get_direction ();
-  Molecule m (get_molecule(d));
+  Side_position_interface i (this);
+  Direction d =  i.get_direction ();
+  i.set_direction (d);
 }
 
 Molecule*
index f19cbf83e38cf361ab2af6eb12818efb3c559b5d..c0ae9afa3edd2577bbba95def89e1218f2a7e4f2 100644 (file)
@@ -189,8 +189,15 @@ Side_position_interface::aligned_side (Dimension_cache const *c)
   return o;
 }
 
-
-
+void
+Side_position_interface::add_staff_support ()
+{
+  Staff_symbol_referencer_interface si (elt_l_);
+  if (si.staff_symbol_l ())
+    {
+      add_support (si.staff_symbol_l ());
+    }
+}
 
 void
 Side_position_interface::set_axis (Axis a)
@@ -242,3 +249,11 @@ Side_position_interface::supported_b () const
   SCM s =elt_l_->get_elt_property  ("side-support"); 
   return s != SCM_UNDEFINED && s != SCM_EOL;
 }
+
+
+Side_position_interface
+side_position (Score_element* e)
+{
+  Side_position_interface si (e);
+  return si;
+}
index 0ffb6111e8e00eaa1d5673f32a1c24a3a5c0c591..a7f2607c26cbda21ac42a0e52caf42eede5c8d2c 100644 (file)
@@ -37,7 +37,7 @@ void
 Staff_margin_engraver::acknowledge_element (Score_element_info inf)
 {
   Item *i = cast_to_interesting_item (inf.elem_l_);
-  if (!i || inf.origin_trans_l_arr_.size() != 1)
+  if (!i || inf.origin_trans_l_arr (this).size() != 1)
     return;
 
 
index 03999e46f6a1f75b95b0ed60dfd741e6b542fcc3..30ff14f405207739df9218cd9910bd6497c6869d 100644 (file)
@@ -64,14 +64,6 @@ Staff_symbol_engraver::acknowledge_element (Score_element_info s)
 {
   s.elem_l_->set_elt_property ("staff-symbol", span_p_->self_scm_);
   s.elem_l_->add_dependency (span_p_); // UGH. UGH. UGH 
-
-  SCM ss =s.elem_l_->remove_elt_property ("staff-support");
-  if (to_boolean (ss))
-    {
-      Side_position_interface si (s.elem_l_);
-      if (si.has_interface_b ())
-       si.add_support (span_p_);
-    }
 }
 
 
index 6d23595fe483c5329409ea6ce12249c556900978..80e5e1208024f1d5cdf0c0594803a9d71fd67288 100644 (file)
@@ -6,8 +6,8 @@
   (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
-#include "dimension-cache.hh"
 
+#include "dimension-cache.hh"
 #include "engraver.hh"
 #include "side-position-interface.hh"
 #include "text-item.hh"
@@ -118,6 +118,7 @@ Text_engraver::do_pre_move_processing ()
 {
   for (int i=0; i < texts_.size (); i++)
     {
+      side_position (texts_[i]).add_staff_support ();
       typeset_element (texts_[i]);
     }
   texts_.clear ();
index 09e51cf2b00610cd11a76a66d8f3837d2fbfb725..aaa7952d8e555ba34900fc835d299f9b49aa748b 100644 (file)
@@ -18,6 +18,7 @@ Time_signature::Time_signature ()
   set_elt_property ("breakable", SCM_BOOL_T);
 }
 
+// ugh.!
 Molecule*
 Time_signature::do_brew_molecule_p () const
 {
index 8f93df70e19e50fac21a0e691e03806f22eb9d00..81429e9d3e830685a0ff7c56ff2ba160dd04804f 100644 (file)
@@ -21,11 +21,15 @@ Timing_translator::do_try_music (Music*r)
     {
       for (int i=0; i < timing_req_l_arr_.size (); i++)
        {
+         /*
+           merge timing reqs.
+          */
          if (timing_req_l_arr_[i]->equal_b(t))
            return true;
          if (String (classname (timing_req_l_arr_[i])) == classname (r))
            {
              r->warning (_ ("conflicting timing request"));
+             timing_req_l_arr_[i]->warning (_("This is the other timing request")); 
              return false;
            }
        }
@@ -153,7 +157,7 @@ Timing_translator::set_time_signature (int l, int o)
   Moment len = Moment (l) * one_beat;
   daddy_trans_l_->set_property ("measureLength",
                                (new Moment (len))->smobify_self ());
-  daddy_trans_l_->set_property ("beatength",
+  daddy_trans_l_->set_property ("beatLength",
                                (new Moment (one_beat))->smobify_self ());
 }
 
index 8e5e8d376d5fdee88e14d50c12fb3617ad2e895d..02b560feb4fc8c25387d3fca8202ed838cc21b86 100644 (file)
@@ -146,7 +146,6 @@ Tuplet_spanner::calc_position_and_height (Real *offset, Real * dy) const
 void
 Tuplet_spanner::do_post_processing ()
 {
-
   Link_array<Note_column> column_arr=
     Group_interface__extract_elements (this, (Note_column*)0, "columns");
 
@@ -160,7 +159,7 @@ Tuplet_spanner::do_post_processing ()
   Direction d =   directional_element (this).get ();
   if (!d)
     {
-      d = UP;
+      d = get_default_dir ();
       directional_element (this).set (d);
 
     }
index 7c99d70ed93d068f63edd2bc7fa89f1f919ab86e..aca1c68fd8132e9fa21bc7f3081fb48c540ab306 100644 (file)
@@ -58,8 +58,7 @@ Vertical_align_engraver::do_removal_processing()
 bool
 Vertical_align_engraver::qualifies_b (Score_element_info i) const
 {
-  int sz = i.origin_trans_l_arr_.size()  ;
-
+  int sz = i.origin_trans_l_arr ((Translator*)this).size()  ;
 
   Axis_group_element * elt = dynamic_cast<Axis_group_element *> (i.elem_l_);
 
@@ -73,7 +72,10 @@ Vertical_align_engraver::acknowledge_element (Score_element_info i)
     {
       valign_p_->add_element (i.elem_l_);
     }
-  else if (dynamic_cast<Span_bar*>(i.elem_l_) && i.origin_trans_l_arr_.size ())
+  /*
+    ? huh
+   */
+  else if (dynamic_cast<Span_bar*>(i.elem_l_) && i.origin_trans_l_arr (this).size ())
     {
       i.elem_l_->add_dependency (valign_p_);
     }  
index 1f6c21307f0d80b14c1d54d21c971529660a610a..f77eb3f6b3a30dec939750d56452ff736dfdd5fc 100644 (file)
@@ -47,7 +47,7 @@ time3_4beamAutoEnd_16 = #(make-moment 1 4)
 %time3_4beamAutoBegin_32 = #(make-moment 1 8)
 time3_4beamAutoEnd_32 = #(make-moment 1 8)
 
-time3_8beamAutoBegin = #(make-moment 1 8)
+time3_8beamAutoBegin_16 = #(make-moment 1 8)
 time3_8beamAutoEnd = #(make-moment 3 8)
 
 % in common time:
index e71c5d7eb56c7f6a5a9340fc201c3b553579d53a..8d98ea97a6793c36fd27102084896ff17f090f50 100644 (file)
@@ -1,15 +1,15 @@
 Begin3
 Title: LilyPond
-Version: 1.3.22
-Entered-date: 02FEB00
+Version: 1.3.23
+Entered-date: 07FEB00
 Description: 
 Keywords: music notation typesetting midi fonts engraving
 Author: hanwen@cs.uu.nl (Han-Wen Nienhuys)
        janneke@gnu.org (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
-       1000k lilypond-1.3.22.tar.gz 
+       1000k lilypond-1.3.23.tar.gz 
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       1000k lilypond-1.3.22.tar.gz 
+       1000k lilypond-1.3.23.tar.gz 
 Copying-policy: GPL
 End
index c0a9a76337a24684dca0e1e77395f9e9d066c32a..36bcf2f7989411e5e9c3adeb3cbf4d9ab64307c7 100644 (file)
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 1.3.22
+Version: 1.3.23
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.22.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.23.tar.gz
 Summary: A program for printing sheet music.
 URL: http://www.cs.uu.nl/~hanwen/lilypond
 # get Packager from (undocumented?) ~/.rpmmacros!
index 6be444394494430d18421f59508f4a27508bd9a7..6b7d312993dd31b4944f592fcb5fb448f50f58bb 100644 (file)
    generic-text-properties
    generic-note-column-properties
    generic-crescendo-properties
+   generic-script-properties
    generic-All-properties
    ))