]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.5.1
authorfred <fred>
Wed, 27 Mar 2002 01:20:21 +0000 (01:20 +0000)
committerfred <fred>
Wed, 27 Mar 2002 01:20:21 +0000 (01:20 +0000)
26 files changed:
CHANGES
lily/audio-staff.cc
lily/auto-beam-engraver.cc
lily/beam-engraver.cc
lily/grace-iterator.cc
lily/grace-music.cc
lily/include/grace-iterator.hh
lily/include/grace-music.hh
lily/include/midi-item.hh
lily/include/midi-walker.hh
lily/include/performance.hh
lily/local-key-engraver.cc
lily/lyric-phrasing-engraver.cc
lily/midi-item.cc
lily/midi-walker.cc
lily/parser.yy
lily/performance.cc
lily/phrasing-slur-engraver.cc
lily/rhythmic-column-engraver.cc
lily/script-engraver.cc
lily/sequential-music-iterator.cc
lily/slur-engraver.cc
lily/spacing-engraver.cc
lily/tuplet-engraver.cc
ly/performer-init.ly
scm/grob-description.scm

diff --git a/CHANGES b/CHANGES
index 6fe737d18570866922269712b22a5c85ffc37468..9d68061afb43a05f474c9801d871bb847c2fc9d6 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,32 @@
+1.5.0.jcn1
+==========
+
+* Added feature to ly2dvi to find feta pfa font files used in a
+postscript file to make printing of direct postscript a bit easier:
+
+    lilypond -fps input/trip.ly
+    cat $(ly2dvi -f trip.ps) trip.ps | lpr
+
+* Reincluded 1.4.3.jcn2.
+
+* Website fixes.
+
+* Ly2dvi now leaves .tex and .latex output if latex fails, and cleans
+the temp dir if anything fails.
+
+* Fixes for windows scripts.
+
+1.5.0.uu1
+=========
+
+* Hara kiri and span-bar.
+
+* Junk old grace stuff.
+
+* Don't crash on grace notes in MIDI output.
+
+
+
 1.5.0
 =====
 
index 791287ab25474c1c2533bde313642b4017fc8570..f89ebd62d4ac712602ac352231089865c28b69ef 100644 (file)
@@ -23,8 +23,8 @@ void
 Audio_staff::output (Midi_stream& midi_stream_r, int track_i)
 {
   Midi_track midi_track;
-  midi_track.number_i_ =  track_i;
-  midi_track.channel_i_ =  channel_i_;
+  midi_track.number_i_ = track_i;
+  midi_track.channel_i_ = channel_i_;
   for (Midi_walker i (this, &midi_track); i.ok (); i++)
     i.process ();
   midi_stream_r << midi_track;
index b4191f36bcfa18ec3ccd8e66e73be85a1b67d748..31e26d349c4d7eec324dbf32c5fff42c1dd84a7f 100644 (file)
@@ -337,20 +337,10 @@ Auto_beam_engraver::finalize ()
     junk_beam ();
 }
 
-bool
-Auto_beam_engraver::same_grace_state_b (Grob* e)
-{
-  bool gr = e->get_grob_property ("grace") == SCM_BOOL_T;
-  SCM wg =get_property ("weAreGraceContext");
-  return (to_boolean (wg)) == gr;
-}
 
 void
 Auto_beam_engraver::acknowledge_grob (Grob_info info)
 {
-  if (!same_grace_state_b (info.elem_l_))
-    return;
-  
   if (stem_l_arr_p_)
     {
       if (Beam::has_interface (info.elem_l_))
index e6f08096d6ae6dfe0ed15d319f6125a6190a6304..4445b79643e4192f3dd68bc5a82cec6ef988014e 100644 (file)
@@ -131,7 +131,7 @@ Beam_engraver::process_music ()
     }
 
 
-  if (beam_p_ && !to_boolean (get_property ("weAreGraceContext")))
+  if (beam_p_)
     {
       Score_engraver * e = 0;
       Translator * t  =  daddy_grav_l ();
@@ -244,14 +244,6 @@ Beam_engraver::acknowledge_grob (Grob_info info)
          if (Stem::beam_l (stem_l))
            return;
 
-         bool stem_grace = stem_l->get_grob_property ("grace") == SCM_BOOL_T;
-
-         SCM wg =get_property ("weAreGraceContext");
-         bool wgb= to_boolean (wg);
-
-         if (wgb!= stem_grace)
-           return;
-
          Rhythmic_req *rhythmic_req = dynamic_cast <Rhythmic_req *> (info.req_l_);
          if (!rhythmic_req)
            {
index f73e610bada19a1451a8cd037ef9d3f1e2914caa..9248e071f8c218301669fb6cf144ff90baa2f37a 100644 (file)
@@ -1,5 +1,5 @@
 /*   
-  grace-iterator.cc --  implement Grace_iterator
+  grace-music.cc --  implement Grace_music
   
   source file of the GNU LilyPond music typesetter
   
@@ -7,47 +7,45 @@
   
  */
 
+#include "grace-music.hh"
 #include "grace-iterator.hh"
+
+
 #include "global-translator.hh"
 #include "warn.hh"
 
+
 Grace_iterator::~Grace_iterator () 
 {
   //  child_iter_p_ = 0;
 }
 
+
 void
-Grace_iterator::construct_children () 
+Grace_iterator::process (Moment m )
 {
-  Translator_group * t = report_to_l ()->find_create_translator_l ("Grace", ""); // umgh.
-
-  if (t)
-    set_translator (t);
-  Music_wrapper_iterator::construct_children ();
+  Moment main ;
+  main.main_part_ = m.grace_mom_;
+  Music_wrapper_iterator::process (main);
 }
 
 void
-Grace_iterator::process (Moment)
+Grace_iterator::construct_children ()
 {
-  Global_translator * t = dynamic_cast<Global_translator*> (report_to_l ());
-  if (t)
-    {
-      t->start ();
-      t->run_iterator_on_me (child_iter_p_);
-      delete child_iter_p_;
-      child_iter_p_ = 0;
-      t->finish ();
-    }
-  else
-    {
-      warning (_ ("no Grace context available")); 
-    }
+  Music_wrapper_iterator::construct_children ();
 }
 
+
+
 Moment
 Grace_iterator::pending_moment () const
 {
-  return  0;
+  Moment cp =Music_wrapper_iterator::pending_moment();
+
+  Moment pending;
+  pending.grace_mom_ = - music_length_.main_part_  + cp.main_part_;
+
+  return pending;
 }
 
 
index 9121df5ff93728c4c588bfe1980751dc7e0f0dd2..9e88f7b835cb21d35933b7e8c969f618c2643b90 100644 (file)
 #include "grace-iterator.hh"
 
 void
-Grace_music::compress (Moment)
+Grace_music::compress (Moment m) 
 {
-  
+  Music_wrapper::compress (m); 
 }
 
 Moment
 Grace_music::length_mom () const
 {
-  return 0;
+  Moment l = Music_wrapper::length_mom ();
+  Moment gl;
+  gl.grace_mom_ = l.main_part_ + l.grace_mom_ ;
+  return gl;
+}
+
+
+Moment
+Grace_music::start_mom () const
+{
+  return Music::start_mom ();
 }
 
 Grace_music::Grace_music ()
index f51cbcbc238f01b4136b3069b667c4b99564e8fd..2ed8a81452e5bec06cb89552172a917656a2e2f2 100644 (file)
@@ -7,8 +7,8 @@
   
  */
 
-#ifndef GRACE_ITERATOR_HH
-#define GRACE_ITERATOR_HH
+#ifndef NEWGRACE_ITERATOR_HH
+#define NEWGRACE_ITERATOR_HH
 
 #include "music-wrapper-iterator.hh"
 
index 897146133d80087dff2fc332141bd5014e9f12ed..20c6e873a9078b91581c914c4be00dc7e429aadb 100644 (file)
@@ -7,8 +7,8 @@
   
  */
 
-#ifndef GRACE_MUSIC_HH
-#define GRACE_MUSIC_HH
+#ifndef NGRACE_MUSIC_HH
+#define NGRACE_MUSIC_HH
 
 #include "music-wrapper.hh"
 
@@ -21,17 +21,7 @@ public:
 protected:
   virtual void compress (Moment);
   virtual Moment length_mom () const;
-};
-
-class New_grace_music : public Music_wrapper
-{
-public:
-  VIRTUAL_COPY_CONS (Music);
-  New_grace_music (SCM);
-  New_grace_music ();
-protected:
-  virtual void compress (Moment);
-  virtual Moment length_mom () const;
+  virtual Moment start_mom () const;
 };
 
 #endif /* GRACE_MUSIC_HH */
index ef344797cbaf950e858f5f6c4b66073ef998914b..f723164f8e421fdb279ddf73f12c17fdb7b7c608 100644 (file)
@@ -194,6 +194,10 @@ class Midi_track : public Midi_chunk
 {
 public:
   int number_i_;
+
+  /*
+    Compensate for starting grace notes.
+   */
   Cons_list<Midi_event> event_p_list_;
   
   Midi_track ();
index 342983f5f16b5e5e5e7da799c88d9b8dcf61f775..83024f5dca064c6516b1a4e258542f0b1827ccd2 100644 (file)
@@ -32,11 +32,12 @@ public:
   void process ();
   void operator ++ (int);
   bool ok () const;
+
 private:
   void do_start_note (Midi_note* note_p);
   void do_stop_notes (Moment now_mom);
   void output_event (Moment now_mom, Midi_item* l);
-
+  
   Midi_track* track_l_;
   Audio_staff* staff_l_;
   int index_;
index af26a91ede27b7931c471a346821b70dae8ef03d..376e10ec549cd2a9001662efb64f94ead7430e8f 100644 (file)
@@ -29,7 +29,6 @@ public:
   void print () const;
   void process ();
 
-
   Link_array<Audio_staff> audio_staff_l_arr_;
   Cons<Audio_element> *audio_elem_p_list_;
   Midi_def  * midi_l_;
index 94e7980d04701022a93763183c084a986a7acb40..fb491fdf4c00743a55f5920bea3be7bc63aeb18b 100644 (file)
@@ -12,7 +12,7 @@
 #include "rhythmic-head.hh"
 #include "timing-translator.hh"
 #include "engraver-group-engraver.hh"
-#include "grace-align-item.hh"
+
 #include "staff-symbol-referencer.hh"
 #include "side-position-interface.hh"
 #include "engraver.hh"
@@ -56,14 +56,12 @@ public:
   Link_array<Item> forced_l_arr_;
   Link_array<Grob> tie_l_arr_;
   Local_key_engraver ();
-
-  Item * grace_align_l_;
 };
 
 Local_key_engraver::Local_key_engraver ()
 {
   key_item_p_ =0;
-  grace_align_l_ =0;
+
   last_keysig_ = SCM_EOL;
 }
 
@@ -196,11 +194,6 @@ Local_key_engraver::create_grobs ()
       daddy_trans_l_->set_property ("localKeySignature",  localsig);
     }
   
-  if (key_item_p_ && grace_align_l_)
-    {
-      Side_position_interface::add_support (grace_align_l_,key_item_p_);
-      grace_align_l_ =0;
-    }
 
   if (key_item_p_)
     {
@@ -221,7 +214,7 @@ Local_key_engraver::create_grobs ()
 void
 Local_key_engraver::finalize ()
 {
-  // TODO: if grace ? signal accidentals to Local_key_engraver the 
+
 }
 
 void
@@ -236,7 +229,7 @@ Local_key_engraver::stop_translation_timestep ()
       key_item_p_ =0;
     }
 
-  grace_align_l_ = 0;
+
   mel_l_arr_.clear ();
   arpeggios_.clear ();
   tie_l_arr_.clear ();
@@ -247,19 +240,6 @@ Local_key_engraver::stop_translation_timestep ()
 void
 Local_key_engraver::acknowledge_grob (Grob_info info)
 {
-  SCM wg= get_property ("weAreGraceContext");
-  
-  bool selfgr = gh_boolean_p (wg) &&gh_scm2bool (wg);
-  bool he_gr = to_boolean (info.elem_l_->get_grob_property ("grace"));
-
-  Item * item = dynamic_cast<Item*> (info.elem_l_);  
-  if (he_gr && !selfgr && item && Grace_align_item::has_interface (item))
-    {
-      grace_align_l_ = item;
-    }
-  if (he_gr != selfgr)
-    return;
-  
   Note_req * note_l =  dynamic_cast <Note_req *> (info.req_l_);
 
   if (note_l && Rhythmic_head::has_interface (info.elem_l_))
index b23e2d786eef25dd82e5809709bbf4a0990e5119..90a092ebdd57092c50ac003ffd3fdaca46212ff5 100644 (file)
@@ -182,12 +182,6 @@ Lyric_phrasing_engraver::acknowledge_grob (Grob_info i)
 
   if (Note_head::has_interface (h)) {
     /* caught a note head ... do something with it */
-    /* ... but not if it's a grace note ... */
-    bool grace= to_boolean (i.elem_l_->get_grob_property ("grace"));
-    SCM wg = get_property ("weAreGraceContext");
-    bool wgb = to_boolean (wg);
-    if (grace != wgb)
-      return;
 
     /* what's its Voice context name? */
     String voice_context_id = get_context_id (i.origin_trans_l_->daddy_trans_l_, "Voice");
index bf046d464442f02f2f131654ffaf2c01304c9d6f..e095fbc1252a4ef571cb4da958f0110a346ba1b7 100644 (file)
@@ -91,10 +91,15 @@ Midi_event::Midi_event (Moment delta_mom, Midi_item* midi_p)
   midi_p_ = midi_p;
 }
 
+/*
+  ugh. midi output badly broken since grace note hackage.
+ */
 String
 Midi_event::str () const
 {
-  int delta_i = delta_mom_ * Moment (384 * 4); // ugh.
+  Rational rat_dt = (delta_mom_.main_part_ * Rational (384) +
+    delta_mom_.grace_mom_ * Rational (100))*Rational (4);
+  int delta_i = int (rat_dt);
 
   String delta_str = Midi_item::i2varint_str (delta_i);
   String midi_str = midi_p_->str ();
index d9637672fbfca8b2c95cc207a1c126ea6458b5ad..078dada743f831413de56619228b29de5eafff8b 100644 (file)
@@ -31,6 +31,7 @@ Midi_walker::Midi_walker (Audio_staff* audio_staff_l, Midi_track* track_l)
   track_l_ = track_l;
   index_= 0;
   item_l_arr_l_ = &audio_staff_l->audio_item_l_arr_;
+
   last_mom_ = 0;
 }
 
@@ -116,7 +117,18 @@ void
 Midi_walker::output_event (Moment now_mom, Midi_item* l)
 {
   Moment delta_t = now_mom - last_mom_ ;
-  last_mom_ += delta_t;
+  last_mom_ = now_mom;
+
+  /*
+    this is not correct, but at least it doesn't crash when you
+    start with graces
+   */
+  if (delta_t < Moment(0))
+    {
+      delta_t = Moment (0);
+    }
+
+  
   track_l_->add (delta_t, l);
 }
 
@@ -126,10 +138,6 @@ Midi_walker::process ()
   Audio_item* audio_p = (*item_l_arr_l_)[index_];
   do_stop_notes (audio_p->audio_column_l_->at_mom ());
 
-  /*
-    THIS IS A MEMORY LEAK. FIXME.
-    where's the leak?  Everything goet to Midi_track, in a killing_cons.
- */
   if (Midi_item* midi_p = Midi_item::midi_p (audio_p))
     {
       midi_p->channel_i_ = track_l_->channel_i_;
index 95caa860e01fdfcc8c474f096d477a2cc9ab0f20..46db204f928cac7de02ca5a69e6dd5d7a3a99696 100644 (file)
@@ -834,11 +834,11 @@ Composite_music:
                Music* seq = new Sequential_music (SCM_EOL);
                seq->set_mus_property ("elements", ms);
 
-               $$ = new New_grace_music (SCM_EOL);
+               $$ = new Grace_music (SCM_EOL);
                $$->set_mus_property ("element", seq->self_scm ());
                scm_unprotect_object (seq->self_scm ());
 #else
-               $$ = new New_grace_music (SCM_EOL);
+               $$ = new Grace_music (SCM_EOL);
                $$->set_mus_property ("element", $2->self_scm ());
                scm_unprotect_object ($2->self_scm ());
 #endif
index 5aa7abaa53667e44daabbb0370a87c28df294329..55122e302a43f1cb649421e527d07a8107d360c3 100644 (file)
@@ -57,7 +57,6 @@ Performance::output (Midi_stream& midi_stream)
        progress_indication ("[" + to_str (i)) ;
 
       /*
-       Aargh, let's hear it for the MIDI standard.
        MIDI players tend to ignore instrument settings on
        channel 10, the percussion channel by default.
        */
@@ -71,6 +70,7 @@ Performance::output (Midi_stream& midi_stream)
     }
 }
 
+
 void
 Performance::output_header_track (Midi_stream& midi_stream)
 {
index 319c2668834fd627c89e707570be4463872be8eb..ed78313be55c5664b4a02c61eb69f918b7dcfc16 100644 (file)
@@ -111,9 +111,7 @@ Phrasing_slur_engraver::finalize ()
 #endif     
     }
   phrasing_slur_l_stack_.clear ();
-  SCM wg = get_property ("weAreGraceContext");
-  bool wgb = to_boolean (wg);
-  if (!wgb)
+
     for (int i=0; i < requests_arr_.size (); i++)
       {
        requests_arr_[i]->origin ()->warning (_ ("unterminated phrasing slur"));
index f5287f998c96dbe382ababbe3988559e3e99b544..1ebea18a43b3b8d0bc7d6729ca140c52defcbd85 100644 (file)
@@ -19,7 +19,6 @@
 class Rhythmic_column_engraver :public Engraver
 {
   Link_array<Grob> rhead_l_arr_;
-  Link_array<Grob> grace_slur_endings_;
   Grob * stem_l_;
   Grob *ncol_p_;
   Grob *dotcol_l_;
@@ -81,25 +80,12 @@ Rhythmic_column_engraver::create_grobs ()
          stem_l_ = 0;
        }
 
-      SCM wg = get_property ("weAreGraceContext");
-      bool wegrace = to_boolean (wg);
-
-      if (!wegrace)
-       for (int i=0; i < grace_slur_endings_.size (); i++)
-         Slur::add_column (grace_slur_endings_[i], ncol_p_);
-      grace_slur_endings_.clear ();
     }
 }
 
 void
 Rhythmic_column_engraver::acknowledge_grob (Grob_info i)
 {
-  SCM wg = get_property ("weAreGraceContext");
-  bool wegrace = to_boolean (wg);
-  if (wegrace != to_boolean (i.elem_l_->get_grob_property ("grace"))
-    && !Slur::has_interface (i.elem_l_))
-    return ;
-  
   Item * item =  dynamic_cast <Item *> (i.elem_l_);
   if (item && Stem::has_interface (item))
     {
@@ -113,15 +99,6 @@ Rhythmic_column_engraver::acknowledge_grob (Grob_info i)
     {
       dotcol_l_ = item;
     }
-  else if (Slur::has_interface (i.elem_l_))
-    {
-      /*
-       end slurs starting on grace notes
-       */
-      
-      if (to_boolean (i.elem_l_->get_grob_property ("grace")))
-       grace_slur_endings_.push (i.elem_l_);
-   }
 }
 
 void
@@ -137,7 +114,6 @@ Rhythmic_column_engraver::stop_translation_timestep ()
 void
 Rhythmic_column_engraver::start_translation_timestep ()
 {
-  grace_slur_endings_.clear ();
   dotcol_l_ =0;
   stem_l_ =0;
 }
index 256acd3dc47ef9c3ab6831b8d00a04d454ae48ac..70844dc5b6f62558d834012dc7c24330e92c4830 100644 (file)
@@ -116,12 +116,6 @@ Script_engraver::process_music ()
 void
 Script_engraver::acknowledge_grob (Grob_info inf)
 {
-  bool them_grace = to_boolean (inf.elem_l_->get_grob_property ("grace"));
-  bool us_grace = to_boolean (get_property ("weAreGraceContext"));
-
-  if (us_grace != them_grace)
-    return;
-  
   if (Stem::has_interface (inf.elem_l_))
     {
       for (int i=0; i < script_p_arr_.size (); i++)
index 0f0f82d89886f97546419266aed3786cd8fad560..e02847f991f3cbdb18683cfacc47518d362313f9 100644 (file)
@@ -5,7 +5,7 @@
 
   (c)  1997--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
-#include "grace-iterator.hh"
+
 #include "translator-group.hh"
 #include "debug.hh"
 #include "sequential-music-iterator.hh"
@@ -164,9 +164,6 @@ Sequential_music_iterator::descend_to_child ()
   Translator_group  * child_report = child_report = iter_p_->report_to_l ();
   Translator_group * me_report = report_to_l ();
 
-  if (dynamic_cast<Grace_iterator*> (iter_p_))
-    child_report = child_report->daddy_trans_l_;
-
   Translator_group * c = child_report;
   while (c && c != me_report)
     {
index 6f57a925c39113bc58a85c027831ff554a46d540..6eb8973f7700daa1ea3ba53aa4460aa49b6e4ea2 100644 (file)
@@ -119,10 +119,8 @@ Slur_engraver::finalize ()
 #endif     
     }
   slur_l_stack_.clear ();
-  SCM wg = get_property ("weAreGraceContext");
-  bool wgb = to_boolean (wg);
-  if (!wgb)
-    for (int i=0; i < requests_arr_.size (); i++)
+
+  for (int i=0; i < requests_arr_.size (); i++)
       {
        requests_arr_[i]->origin ()->warning (_ ("unterminated slur"));
       }
index b02847bf66bd9d9548e2f7476789b0df4f8b5b0b..edeb8ebb9eac696725e4fe49d3277cc953b42327 100644 (file)
@@ -93,9 +93,6 @@ Spacing_engraver::finalize ()
 void
 Spacing_engraver::acknowledge_grob (Grob_info i)
 {
-  if (to_boolean (i.elem_l_->get_grob_property ("grace")))
-    return;
-
   if (to_boolean (i.elem_l_->get_grob_property ("non-rhythmic")))
     return;
   
index 992ce316728a3c852fddfcfcd5e8a343e99fe56d..65b38e8a48fe01f9456b7df1adf96c08d779ffd0 100644 (file)
@@ -25,9 +25,9 @@ public:
 protected:
   Link_array<Time_scaled_music> time_scaled_music_arr_;
   /// when does the scaled music stop? Array order is synced with time_scaled_music_arr_
-  Array<Moment> stop_moments_;
+  Array<Rational> stop_moments_;
   /// when does the current spanner stop? Array order is synced with time_scaled_music_arr_
-  Array<Moment> span_stop_moments_;
+  Array<Rational> span_stop_moments_;
   
   /// The spanners. Array order is synced with time_scaled_music_arr_
   Link_array<Spanner> started_span_p_arr_;
@@ -48,12 +48,12 @@ Tuplet_engraver::try_music (Music *r)
       if (!dynamic_cast<Request_chord*> (el))
        {
          time_scaled_music_arr_.push (c);
-         Moment m = now_mom () + c->length_mom ();
+         Rational m = now_mom ().main_part_ + c->length_mom ().main_part_;
          stop_moments_.push (m);
 
          SCM s = get_property ("tupletSpannerDuration");
          if (unsmob_moment (s))
-           m = m <? (now_mom () + *unsmob_moment (s));
+           m = m <? (now_mom () + *unsmob_moment (s)).main_part_;
          
          span_stop_moments_.push (m);
        }
@@ -96,12 +96,6 @@ Tuplet_engraver::create_grobs ()
 void
 Tuplet_engraver::acknowledge_grob (Grob_info i)
 {
-  bool grace= to_boolean (i.elem_l_->get_grob_property ("grace"));
-  SCM wg = get_property ("weAreGraceContext");
-  bool wgb = to_boolean (wg);
-  if (grace != wgb)
-    return;
-  
   if (Note_column::has_interface (i.elem_l_))
     {
       for (int j =0; j  <started_span_p_arr_.size (); j++)
@@ -118,11 +112,11 @@ Tuplet_engraver::start_translation_timestep ()
   Moment tsd;
   SCM s = get_property ("tupletSpannerDuration");
   if (unsmob_moment (s))
-    tsd = *unsmob_moment (s);
+    tsd = unsmob_moment (s)->main_part_;
 
   for (int i= started_span_p_arr_.size (); i--;)
     {
-      if (now >= span_stop_moments_[i])
+      if (now.main_part_ >= span_stop_moments_[i])
        {
          if (started_span_p_arr_[i])
            {
@@ -131,10 +125,10 @@ Tuplet_engraver::start_translation_timestep ()
            }
          
          if (tsd)
-           span_stop_moments_[i] += tsd;
+           span_stop_moments_[i] += tsd.main_part_;
        }
 
-      if (now >= stop_moments_[i])
+      if (now.main_part_ >= stop_moments_[i])
        {
          started_span_p_arr_.del (i);
          stop_moments_.del (i);
index 8cfa8204bd42543df4c7b53c5350b67f57b7b7df..6ab401df96ee3ff8b1350200e8f6f48f4651f631 100644 (file)
@@ -25,28 +25,20 @@ VoiceContext = \translator {
        \consists "Dynamic_performer"
        \consists "Span_dynamic_performer"
        \consists "Piano_pedal_performer"
-       \consists "Grace_position_performer"
-       \accepts Thread
-       \accepts Grace
+       \consists "Note_performer"
+       \consists "Tie_performer"
 }
 \translator { \VoiceContext }
 
 ThreadContext = \translator {
        \type "Performer_group_performer"
        \name Thread
-       \consists "Note_performer"
-       \consists "Tie_performer"
 }
 \translator { \ThreadContext }
 
 \translator {
-       \type "Grace_performer_group"
+       \type "Performer_group_performer"
        \name Grace
-       \consists "Note_performer"
-       \consists "Tie_performer"
-        \consists "Swallow_performer"
-
-        weAreGraceContext = #t
 }
 
 \translator
index 4ee94ca8516230b3d64f939cc5b50d999a224d79..916afa7884afdfaf0e1366fd1a13e214543208d4 100644 (file)
                (meta . ,(grob-description "Fingering" finger-interface  font-interface text-script-interface text-interface side-position-interface))
        ))
 
-       (GraceAlignment . (
-               (axes . (0))
-               (horizontal-space . 1.2)
-               (padding . 1.0)
-               (before-line-breaking-callback . ,Grace_align_item::before_line_breaking)
-               (meta . ,(grob-description "GraceAlignment" axis-group-interface align-interface grace-alignment-interface))
-       ))
        
        (HaraKiriVerticalGroup . (
                (Y-offset-callbacks . (,Hara_kiri_group_spanner::force_hara_kiri_callback))