]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.3.89
authorfred <fred>
Tue, 26 Mar 2002 23:55:59 +0000 (23:55 +0000)
committerfred <fred>
Tue, 26 Mar 2002 23:55:59 +0000 (23:55 +0000)
45 files changed:
VERSION
input/test/beam-cross-staff.ly
input/test/part-combine-score.ly
lily/align-interface.cc
lily/align-note-column-engraver.cc
lily/bar-number-engraver.cc
lily/bar.cc
lily/beam.cc
lily/break-align-item.cc
lily/crescendo.cc
lily/cross-staff.cc
lily/dynamic-engraver.cc
lily/grace-align-item.cc
lily/include/align-interface.hh
lily/include/beam.hh
lily/include/part-combine-music-iterator.hh
lily/include/slur-bezier-bow.hh
lily/include/slur.hh
lily/line-of-score.cc
lily/music-wrapper-iterator.cc
lily/part-combine-music-iterator.cc
lily/script.cc
lily/sequential-music-iterator.cc
lily/slur-bezier-bow.cc
lily/slur.cc
lily/system-start-delimiter-engraver.cc
lily/tie.cc
lily/vertical-align-engraver.cc
lilypond-mode.el
ly/declarations.ly
ly/engraver.ly
ly/paper-as9.ly
ly/params.ly
mutopia/Coriolan/bassi-part.ly
mutopia/Coriolan/bassi.ly [new file with mode: 0644]
mutopia/Coriolan/contrabasso.ly
mutopia/Coriolan/coriolan.ly
mutopia/Coriolan/viola-1.ly
mutopia/Coriolan/viola-2.ly
mutopia/Coriolan/violi-part.ly
mutopia/Coriolan/violi.ly [new file with mode: 0644]
mutopia/Coriolan/violoncello.ly
scm/basic-properties.scm
scm/generic-property.scm
scripts/as2text.scm

diff --git a/VERSION b/VERSION
index b283fed4ca9b5dface0cd3240658d3a22f6088ea..23eb5f64a874dce5c43724cce33d363bd386d793 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
-PATCH_LEVEL=88
+PATCH_LEVEL=89
 MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
index fd96d8c81cbaabce582d51193069ce17db463f45..08e442157f5152f0738b8fc264c9795771478f1b 100644 (file)
                s1
        }
        >
-       \paper{
-               \translator{
-                       \PianoStaffContext
-                       minVerticalAlign = 3.0*\staffheight;
-                       maxVerticalAlign = 3.0*\staffheight;
-               }
-%              linewidth=-1.;
-       }
 }
 
 \version "1.3.59"; 
index 17244b7d77dc208cee0076b571847dd2f872f200..59f4bf94eba9f192a1201c590c472bdf966e257e 100644 (file)
                                        a2 \property VoiceCombineThread.soloADue = ##f a
                                }
                >
-       \context PianoStaff <
-               \context StaffCombineStaff=one \skip 1*9;
-               \context StaffCombineStaff=two \skip 1*9;
-               \context StaffCombineStaff=one \partcombine StaffCombineStaff
-                       \context StaffCombineVoice=one \notes\relative c''
-                       %\context StaffCombineThread=one \notes\relative c''
+       \context PianoStaff = violi <
+               \context StaffCombineStaff=oneVioli { \clef alto; \skip 1*9;}
+               \context StaffCombineStaff=twoVioli { \clef alto; \skip 1*9;}
+               \context StaffCombineStaff=oneVioli \partcombine StaffCombineStaff
+                       \context StaffCombineVoice=one \notes\relative c'
                                {
                                        c4 d e f
                                        c d e f
                                        c d e f
                                        c d e f
                                        c4 d e f
-                                       a8 a a a
-                                       b b b b
+                                       a8 a a a b b b b
                                        d1
                                }
-                       \context StaffCombineVoice=two \notes\relative c''
-                       %\context StaffCombineThread=two \notes\relative c''
+                       \context StaffCombineVoice=two \notes\relative c'
                                {
                                        c4 d e f
                                        c d e f
                                        c4 d e f
                                        c2 e2
                                        c,4 d e f
-                                       a8 a a a
-                                       b b b b
+                                       a8 a a a b b b b
                                        b1
                                }
                >
+       \context PianoStaff = lower <
+               \context StaffCombineStaff=oneBassi { \clef bass; \skip 1*9;}
+               \context StaffCombineStaff=twoBassi { \clef bass; \skip 1*9;}
+               \context StaffCombineStaff=oneBassi \partcombine StaffCombineStaff
+                       \context StaffCombineVoice=oneB \notes\relative c
+                               {
+                                       \clef bass;
+                                       c1
+                                       d
+                                       e
+                                       f
+                                       c
+                                       d
+                                       e
+                                       f
+                                       c
+                               }
+                       \context StaffCombineVoice=twoB \notes\relative c
+                               {
+                                       \clef bass;
+                                       c1
+                                       d4 e d e
+                                       e1
+                                       f4 g f g
+                                       c1
+                                       d4 e d e
+                                       e
+                                       f4 g f g
+                                       c1
+                               }
+               >
        >
        \paper {
 
index 4527bbf41b56cdfc80e43db89942ab1b776b87ba..621c691203bad975ea5f660e673f2fb8d13a620c 100644 (file)
@@ -12,6 +12,7 @@
 #include "score-element.hh"
 #include "group-interface.hh"
 #include "axis-group-interface.hh"
+#include "paper-def.hh"
 
 /*
   This callback is set in the children of the align element. It does
@@ -98,8 +99,9 @@ Align_interface::do_side_processing (Score_element * me, Axis a)
   SCM thr = me->get_elt_property ("threshold");
   if (gh_pair_p (thr))
     {
-      threshold[SMALLER] = gh_scm2double (gh_car (thr));
-      threshold[BIGGER] = gh_scm2double (gh_cdr (thr));      
+      Real ss = me->paper_l ()-> get_var ("staffspace");
+      threshold[SMALLER] = ss *gh_scm2double (gh_car (thr));
+      threshold[BIGGER] = ss * gh_scm2double (gh_cdr (thr));      
     }
 
   Real where_f=0;
index 162d74441ce85b9beb9116d0fd82ffce18df6ab0..f8adafad7da48b639c0233159fab38a424155aee 100644 (file)
@@ -15,6 +15,7 @@
 #include "directional-element-interface.hh"
 #include "side-position-interface.hh"
 #include "local-key-item.hh"
+#include "paper-def.hh"
 
 /**
    Catch notes, and put them in a row. Used for aligning grace notes.
@@ -96,14 +97,15 @@ Align_note_column_engraver::process_acknowledged ()
         UGH UGH: separate note-spacing into  separate class,  and
         use that to space grace notes.  
       */
-      SCM grsp = get_property ("graceAccidentalSpace");
+      SCM grsp = get_property ("graceAccidentalSpace") ;
       if (gh_number_p(grsp))
        {
          /*
            ugh.
          */
          Real extra_space = gh_scm2double(grsp);
-         SCM e = gh_cons (gh_double2scm (-extra_space), gh_double2scm (0.0));
+         SCM e = gh_cons (gh_double2scm (-extra_space * paper_l ()->get_var ("staffspace")),
+                          gh_double2scm (0.0));
          now_column_l_->set_elt_property ("extra-space", e);
        }
     }
index 4fe7d7172f13a6684cf52acfc673978cd75b733c..8c698b6e12d39318f60c3615c20ac12d49559642 100644 (file)
@@ -115,26 +115,6 @@ Bar_number_engraver::create_items ()
   text_p_ = new Item (b);
   Side_position::set_axis(text_p_,Y_AXIS);
 
-  SCM prop = get_property ("barNumberDirection");
-  if (!isdir_b (prop))
-    {
-      prop = gh_int2scm (UP);
-    }
-  text_p_->set_elt_property ("direction", prop);
-
-  SCM padding = get_property ("barNumberScriptPadding");
-  if (gh_number_p(padding))
-    {
-      text_p_->set_elt_property ("padding", padding);
-    }
-  else
-    {
-      text_p_
-       ->set_elt_property ("padding",
-                           gh_double2scm(paper_l ()->get_var ("interline")));
-    }
-
-
   announce_element (text_p_, 0);
 }
 
index 5419f3fa4b37f22d27390d30ff29c8f54b8847b6..721c807da494a5c251e0f4ce218a717d79843f0e 100644 (file)
@@ -68,10 +68,6 @@ Bar::compound_barline (Score_element*me, String str, Real h)
     {
       return me->lookup_l ()->blank (Box (Interval(0, 0), Interval (-h/2, h/2)));
     }
-  if (str == "scorepostbreak")
-    {
-      return simple_barline (me, me->paper_l ()->get_var ("barthick_score"), h);
-    }
   else if (str == "|")
     {
       return thin;
index f619e04b9c4fdd4cbc3db45384f3934b3c8d097f..124dc7f9c06f70fa03f4f8d58492e2e480def09b 100644 (file)
@@ -403,10 +403,11 @@ Beam::suspect_slope_b (Score_element*me, Real y, Real dy)
   /*
     steep slope running against lengthened stem is suspect
   */
+  Real ss = me->paper_l ()->get_var ("staffspace");
   Real first_ideal = Stem::calc_stem_info (first_visible_stem (me)).idealy_f_;
   Real last_ideal = Stem::calc_stem_info (last_visible_stem (me)).idealy_f_;
-  Real lengthened = me->paper_l ()->get_var ("beam_lengthened");
-  Real steep = me->paper_l ()->get_var ("beam_steep_slope");
+  Real lengthened = gh_scm2double (me->get_elt_property ("outer-stem-length-limit")) * ss;
+  Real steep = gh_scm2double (me->get_elt_property ("slope-limit"));
 
   // ugh -> use commonx
   Real dx = last_visible_stem (me)->relative_coordinate (0, X_AXIS) - first_visible_stem (me)->relative_coordinate (0, X_AXIS);
index c325aa1aa3d134891df5f2d9b8234b9e8bd997e0..91ea3fea3eb6eeba8048081075f92e5f1df5acf7 100644 (file)
@@ -66,7 +66,7 @@ Break_align_item::do_alignment (Score_element *me)
       me->add_offset_callback (Align_interface::center_on_element, X_AXIS);
     }
 
-  Real interline= me->paper_l ()->get_var ("interline");       
+  Real interline= me->paper_l ()->get_var ("staffspace");      
   Link_array<Score_element> elems;
   Link_array<Score_element> all_elems
     = Pointer_group_interface__extract_elements (me, (Score_element*)0,
index c21897facaee943190f1950b9304f38845ce23fc..35177fac012d30b5f2e18e69b43e625a7fcc61d6 100644 (file)
@@ -24,12 +24,31 @@ Crescendo::set_interface (Score_element*s)
 
 
 MAKE_SCHEME_CALLBACK(Crescendo,brew_molecule);
+
+/*
+
+  TODO:
+
+  * should span the crescendo on any dynamic-text items, and
+  calculate their dimensions to determine shortening; junk shortening
+  code and related elt props.
+
+  * separate the dashed-line version and the hairpin version into two
+  brew_molecule functions.
+
+  * generalise dashed-line into generic text spanner, for ottava, accelerando, etc.
+
+  
+*/
 SCM
 Crescendo::brew_molecule (SCM smob) 
 {
   Score_element *me= unsmob_element (smob);
   Spanner * sp = dynamic_cast<Spanner*>(me);
-  Real absdyn_dim = me->paper_l ()-> get_var ("crescendo_shorten");
+  Real ss = me->paper_l ()->get_var ("staffspace");
+  Real sl = me->paper_l ()->get_var ("stafflinethickness");  
+  
+  Real absdyn_dim = gh_scm2double (me->get_elt_property ("shorten-for-letter"));
   Real extra_left =  sp->get_broken_left_end_align ();
 
   SCM dir = me->get_elt_property("grow-direction");
@@ -87,7 +106,7 @@ Crescendo::brew_molecule (SCM smob)
                                                  me->paper_l ()));
       m.add_molecule (start_text);
 
-      pad = me->paper_l ()->get_var ("interline") / 2;
+      pad = me->paper_l ()->get_var ("staffspace") / 2;        //  ugh.
 
       width -= start_text.extent (X_AXIS).length ();
       width -= pad;
@@ -97,10 +116,12 @@ Crescendo::brew_molecule (SCM smob)
   SCM at;
   s =me->get_elt_property ("spanner");
   Real height;
+
   if (gh_string_p (s) && ly_scm2string (s) == "dashed-line")
     {
-      Real thick = me->paper_l ()->get_var ("crescendo_dash_thickness");
-      Real dash = me->paper_l ()->get_var ("crescendo_dash");
+      Real thick = gh_scm2double (me->get_elt_property ("dash-thickness")) * sl ;
+      Real dash = gh_scm2double (me->get_elt_property  ("dash-length")) * ss;
+      
       height = thick;
       at = gh_list (ly_symbol2scm (ly_scm2string (s).ch_C ()),
                    gh_double2scm (thick),
@@ -111,8 +132,8 @@ Crescendo::brew_molecule (SCM smob)
   else
     {
       bool continued = broken[Direction (-gd)];
-      height = me->paper_l()->get_var ("crescendo_height");
-      Real thick = me->paper_l ()->get_var ("crescendo_thickness");
+      height = ss * gh_scm2double (me->get_elt_property ("height"));
+      Real thick = sl * gh_scm2double (me->get_elt_property ("thickness"));
       
       const char* hairpin = (gd < 0)? "decrescendo" :  "crescendo";
 
index 68a18a9de41b6f07acc5bc414a584a97eaa98244..ccd424ce8eded44f9f4019e0b294b8d6ca7b7237 100644 (file)
@@ -3,7 +3,7 @@
 #include "align-interface.hh"
 #include "spanner.hh"
 #include "warn.hh"
-
+#include "paper-def.hh"
 /*
   JUNKME
  */
@@ -21,9 +21,11 @@ calc_interstaff_dist (Item  *item, Spanner  *span)
          || !scm_equal_p (gh_car (threshold), gh_cdr (threshold)))
        warning (_ ("minVerticalAlign != maxVerticalAlign: cross staff spanners may be broken"));
 
-      interstaff = 0.0;
+
+      
+      interstaff = item->paper_l ()->get_var ("staffspace");
       if (gh_pair_p (threshold))
-       interstaff =  gh_scm2double (gh_car (threshold));
+       interstaff =  gh_scm2double (gh_car (threshold)) * interstaff;
 
       Score_element  * span_refpoint = span;
       while (span_refpoint->parent_l  (Y_AXIS) != common)
index a2da4e1b2b32db16712b4286b72c20f3e1cd8544..8b2df51acdaf0c6e508b598738c504acb5fd1a0a 100644 (file)
@@ -268,7 +268,10 @@ Dynamic_engraver::do_process_music ()
            {
              index_set_cell (cresc_p_->get_elt_property ("dynamic-drul"),
                              LEFT, text_p_->self_scm ());
-             if (finished_cresc_p_)
+
+             if (finished_cresc_p_
+             // I don't see why, but we need this check
+                 && gh_pair_p (finished_cresc_p_->get_elt_property ("dynamic-drul")))
                index_set_cell (finished_cresc_p_->get_elt_property ("dynamic-drul"),
                                RIGHT, text_p_->self_scm ());
            }
@@ -302,6 +305,7 @@ Dynamic_engraver::do_removal_processing ()
     {
       current_cresc_req_->origin ()->warning (_ ("unterminated (de)crescendo"));
       cresc_p_->suicide ();
+      cresc_p_ = 0;
     }
 }
 
index d58bd8e7b3c4192dddd7b733438b616b45ef83c9..fb11733906bee7d4e16a7727f67f3c55c4a4319a 100644 (file)
@@ -20,11 +20,9 @@ Grace_align_item::before_line_breaking (SCM smob)
   Score_element*me = unsmob_element (smob);
 
   SCM space = me->get_elt_property ("horizontal-space");
-  Real ss = me->paper_l ()->get_var ("staffspace");
-  
   me->set_elt_property ("threshold",
-                   gh_cons (gh_double2scm (ss  *gh_scm2double (space)),
-                            gh_double2scm (infinity_f)));
+                       gh_cons (space,
+                                gh_double2scm (infinity_f)));
   dynamic_cast<Item*>(me)->column_l ()->set_elt_property ("contains-grace", SCM_BOOL_T);
 
   return SCM_UNSPECIFIED;
index d17392f3b35bd8138b15840b606156327d46fbd3..f570a60509603c28bf7a2e2f42ff61ba34089fdb 100644 (file)
 #include "lily-proto.hh"
 
 /*
-  TODO: rewrite this comment.
-  
+  Order elements top to bottom/left to right/right to left etc.
+
+
+  *******
   
-  Order elements top to bottom/left to right/right to left etc..
+  element properties
+
+  stacking-dir -- stack contents of elements in which direction ?
 
-  TODO: implement padding.
+  align-dir -- Which side to align? -1: left side, 0: centered (around
+    center_l_ if not nil, or around center of width), 1: right side
 
-  document usage of this.
+  threshold -- (cons MIN MAX), where MIN and MAX are dimensions in
+    staffspace
 
+  alignment-done -- boolean to administrate whether we've done the alignment already (to ensure that the process is done only once)
 
+  group-center-element -- element which will be at the center of the group
+    after aligning (when using Align_interface::center_on_element)
 
+  elements -- to be aligned elements 
+
+  axes -- list of axis numbers. Should contain only one number.
+  
   *******
   
-  element properties
+  Reads the following from its elements
+  
+  
+  minimum-space --  (cons LEFT RIGHT)
 
-  stacking-dir
-  Which side to align? -1: left side, 0: centered (around
-  center_l_ if not nil, or around center of width), 1: right side
+  extra-space -- (cons LEFT RIGHT)
+  
 */
 struct Align_interface {
   static Real alignment_callback (Score_element *,Axis);
index 2310752807e88100c5da759bbe9b3a356dabf963..cd917f8d60c4d0f2add069551df003347a41a0df 100644 (file)
 
    damping -- damping factor (real).
 
-   
+   outer-stem-length-limit -- catch suspect beam slopes, set slope to zero if
+     outer stem is lengthened more than this (in staffspace)
+
+   slope-limit -- set slope to zero if slope is running away steeper than this.
+
 */
 class Beam
 {
index 4400e458ee5b9438209c4f54e18d24c6130b8be4..32a6bc951c5f9da369573d112043801d9543d545 100644 (file)
@@ -18,6 +18,8 @@ public:
   VIRTUAL_COPY_CONS (Music_iterator);
   Part_combine_music_iterator ();
 
+  enum State { UNKNOWN, UNRELATED=1, SOLO1=2, SOLO2=4, UNIRHYTHM=8, UNISON=16, UNISILENCE=32, SPLIT_INTERVAL=64 };
 protected:
   virtual ~Part_combine_music_iterator ();
 
@@ -30,11 +32,14 @@ protected:
 
 private:
   void change_to (Music_iterator*, String, String);
+  int get_state (Moment m);
 
   Music_iterator * first_iter_p_;
   Music_iterator * second_iter_p_;
   Moment first_until_;
   Moment second_until_;
+  int state_;
+  String suffix_;
 };
 
 #endif /* PART_COMBINE_MUSIC_ITERATOR_HH */
index 96b6cd0420999a84be31304b58b4e4a29bd408d3..a899dc46f664ddb7d2259d3c006caa90684ddc89 100644 (file)
@@ -34,7 +34,7 @@ public:
                   Real hinf, Real r0);
   Bezier get_bezier () const;
 
-  void minimise_enclosed_area (Paper_def* paper_l);
+  void minimise_enclosed_area (Paper_def* paper_l, Real beauty);
   Real fit_factor () const;
   void blow_fit ();
   Real enclosed_area_f () const;
index 001c8fa19f1d2b4fef5b8c8a426cb458079bd307..349b549dad355254ec9b8562d7c84f6ed6cf58f2 100644 (file)
      valid areas for the middle control points. Used in de_uglyfy.
      They are a bit empirical.
 
-     
+   details -- alist containing contaning a few magic constants.
+
+   note-columns -- list of elt pointers to note columns.
+
+   attachment -- cons of symbols, '(LEFT-TYPE . RIGHT-TYPE), where
+     both types may be alongside-stem, stem, head or loose-end
+   
+   direction -- up or down?
+
+   y-free -- ? 
+   
  */
 class Slur
 {
index 9af28cc404ac0d90858fc6ff97992a3d8e16fc22..bc70174dbce6fb8c07add3353799a4b9dfcf605f 100644 (file)
@@ -322,7 +322,7 @@ Line_of_score::post_processing (bool last_line)
                          gh_double2scm (height),
                          SCM_UNDEFINED));
   
-  Real il = paper_l ()->get_var ("interline");
+  Real il = paper_l ()->get_var ("staffspace");
 
   /*
     all elements.
index 834494c88d1db95fc19bf8fc4a3cea04aa298cc9..132ba004d4be482a1dc50f8f55eb85161e82c736 100644 (file)
@@ -18,7 +18,10 @@ Music_wrapper_iterator::Music_wrapper_iterator ()
 Music_wrapper_iterator::Music_wrapper_iterator (Music_wrapper_iterator const &src)
   : Music_iterator (src)
 {
-  child_iter_p_ = src.child_iter_p_->clone ();
+  if (src.child_iter_p_)
+    child_iter_p_ = src.child_iter_p_->clone ();
+  else
+    child_iter_p_ = 0;
 }
 
 Music_wrapper_iterator::~Music_wrapper_iterator ()
@@ -39,6 +42,20 @@ Music_wrapper_iterator::ok () const
 {
   return child_iter_p_ && child_iter_p_->ok ();
 }
+void
+Music_wrapper_iterator::skip (Moment m)
+{
+  /*
+    FIXME: should make sure that the initial try_music () is skipped as
+    well, if you would do
+
+    iter = get_iterator (Side_effect_music); // eg. property setting
+    iter->skip (1/2)
+    iter->process ()
+
+  */
+  child_iter_p_->skip (m);
+}
 
 void
 Music_wrapper_iterator::process (Moment m)
index 9fa9bd7fe3b26f042fbe13428776fabd34c00d88..754b1023bbf74d8e7affd0ec0a61bf64284f55af 100644 (file)
@@ -43,7 +43,6 @@ Part_combine_music_iterator::pending_moment () const
 bool
 Part_combine_music_iterator::ok () const
 {
-  //hmm
   return first_iter_p_->ok () || second_iter_p_->ok ();
 }
 
@@ -107,170 +106,257 @@ Part_combine_music_iterator::change_to (Music_iterator *it, String to_type,
     error (_f ("none of these in my family: `%s'", to_id.ch_C ()));
 }
 
-void
-Part_combine_music_iterator::process (Moment m)
-{
 
-  /*
-    TODO:
-    - Use three named contexts (be it Thread or Voice): one, two, solo.
-      Let user pre-set (pushproperty) stem direction, remove
-      dynamic-engraver, and such.
-    - staff-combiner must switch only on per-measure basis (maybe even on
-      per-line-basis, but that's not feasible).  Maybe set minimum lengths
-      of matching rhythm for combine/split?
-   */
-  Part_combine_music const * p = dynamic_cast<Part_combine_music const* > (music_l_);
-
-  Moment now = pending_moment ();
-
-  Array<Musical_pitch> first_pitches;
-  Array<Duration> first_durations;
-  if (first_iter_p_->ok ())
+static void
+get_music_info (Moment m, Music_iterator* iter, Array<Musical_pitch> *pitches, Array<Duration> *durations)
+{
+  if (iter->ok ())
     {
-      /* get_music () also performs next, modifying iterator */
-      Music_iterator *mi = first_iter_p_->clone ();
-      for (SCM i = mi->get_music (now); gh_pair_p (i); i = gh_cdr (i))
+      for (SCM i = iter->get_music (m); gh_pair_p (i); i = gh_cdr (i))
        {
          Music *m = unsmob_music (gh_car (i));
          if (Melodic_req *r = dynamic_cast<Melodic_req *> (m))
-           first_pitches.push (r->pitch_);
+           pitches->push (r->pitch_);
          if (Rhythmic_req *r = dynamic_cast<Rhythmic_req *> (m))
-                   first_durations.push (r->duration_);
+           durations->push (r->duration_);
        }
-      delete mi;
     }
+}
   
-  Array<Musical_pitch> second_pitches;
-  Array<Duration> second_durations;
-  if (second_iter_p_->ok ())
-    {
-      Music_iterator *mi = second_iter_p_->clone ();
-      for (SCM i = mi->get_music (now); gh_pair_p (i); i = gh_cdr (i))
-       {
-         Music *m = unsmob_music (gh_car (i));
-         if (Melodic_req *r = dynamic_cast<Melodic_req *> (m))
-           second_pitches.push (r->pitch_);
-         if (Rhythmic_req *r = dynamic_cast<Rhythmic_req *> (m))
-           second_durations.push (r->duration_);
-       }
-      delete mi;
-    }
+int
+Part_combine_music_iterator::get_state (Moment)
+{
+  int state = UNKNOWN;
+  Part_combine_music const *p = dynamic_cast<Part_combine_music const* > (music_l_);
+  Translator_group *first_translator = first_iter_p_->report_to_l ()->find_create_translator_l (p->what_str_, "one" + suffix_);
+
+  SCM s = first_translator->get_property (ly_symbol2scm ("changeMoment"));
+  if (!gh_pair_p (s))
+    return state;
+
+  Moment change_mom = *unsmob_moment (gh_car (s));
+  Moment diff_mom = *unsmob_moment (gh_cdr (s));
   
-  SCM interval = SCM_BOOL_F;
-  if (first_pitches.size () && second_pitches.size ())
-    {
-      first_pitches.sort (Musical_pitch::compare);
-      second_pitches.sort (Musical_pitch::compare);
-      interval = gh_int2scm (first_pitches.top ().steps ()
-                            - second_pitches[0].steps ());
-    }
-  if (first_durations.size ())
-    {
-      first_durations.sort (Duration::compare);
-      Moment new_until = now + first_durations.top ().length_mom ();
-      if (new_until > first_until_)
-       first_until_ = new_until;
-    }
+  Moment now = pending_moment ();
 
-    if (second_durations.size ())
+  if (!now.mod_rat (change_mom))
     {
-      second_durations.sort (Duration::compare);
-      Moment new_until = now + second_durations.top ().length_mom ();
-      if (new_until > second_until_)
-       second_until_ = new_until;
+      SCM interval = SCM_BOOL_F;
+      if (first_until_ < now)
+       first_until_ = now;
+      if (second_until_ < now)
+       second_until_ = now;
+
+      Moment first_mom = first_until_;
+      Moment second_mom = second_until_;
+      Moment diff_until = diff_mom + now;
+
+      bool first = true;
+      Music_iterator *first_iter = first_iter_p_->clone ();
+      Music_iterator *second_iter = second_iter_p_->clone ();
+
+      Moment last_pending (-1);
+      Moment pending = now;
+      while (now < diff_until
+             && (first_iter->ok () || second_iter->ok ())
+
+            // urg, this is a hack, haven't caught this case yet
+            && (pending != last_pending))
+       {
+         if (!second_iter->ok ())
+           pending = first_iter->pending_moment ();
+         else if (!first_iter->ok ())
+           pending = second_iter->pending_moment ();
+         else
+           pending = first_iter->pending_moment () <? second_iter->pending_moment ();
+         last_pending = pending;
+
+         Array<Musical_pitch> first_pitches;
+         Array<Duration> first_durations;
+         get_music_info (pending, first_iter, &first_pitches, &first_durations);
+      
+         Array<Musical_pitch> second_pitches;
+         Array<Duration> second_durations;
+         get_music_info (pending, second_iter, &second_pitches, &second_durations);
+
+         if (first_pitches.size () && second_pitches.size ())
+           {
+             first_pitches.sort (Musical_pitch::compare);
+             second_pitches.sort (Musical_pitch::compare);
+             interval = gh_int2scm (first_pitches.top ().steps ()
+                                    - second_pitches[0].steps ());
+           }
+         if (first_durations.size ())
+           {
+             first_durations.sort (Duration::compare);
+             first_mom += first_durations.top ().length_mom ();
+           }
+
+         if (second_durations.size ())
+           {
+             second_durations.sort (Duration::compare);
+             second_mom += second_durations.top ().length_mom ();
+           }
+
+         if (!first_pitches.empty () && second_pitches.empty ()
+              && !(second_until_ > now))
+           {
+             state |= UNRELATED;
+             state &= ~UNISILENCE;
+             if (!(state & ~(UNRELATED | SOLO1 | UNISILENCE)))
+               state |= SOLO1;
+           }
+         else
+           state &= ~SOLO1;
+
+         if (first_pitches.empty () && !second_pitches.empty ()
+             && !(first_until_ > now))
+           {
+             state |= UNRELATED;
+             state &= ~UNISILENCE;
+             if (!(state & ~(UNRELATED | SOLO2 | UNISILENCE)))
+               state |= SOLO2;
+           }
+         else
+           state &= ~SOLO2;
+
+         if (!compare (&first_durations, &second_durations))
+           {
+             state &= ~UNISILENCE;
+             if (!(state & ~(UNIRHYTHM | UNISON)))
+               state |= UNIRHYTHM;
+           }
+         else
+           state &= ~(UNIRHYTHM | UNISILENCE);
+         
+         if (!first_pitches.empty ()
+             &&!compare (&first_pitches, &second_pitches))
+           {
+             state &= ~UNISILENCE;
+             if (!(state & ~(UNIRHYTHM | UNISON)))
+               state |= UNISON;
+           }
+         else
+           state &= ~(UNISON);
+           
+         if (first_pitches.empty () && second_pitches.empty ())
+           {
+             if (!(state & ~(UNIRHYTHM | UNISILENCE)))
+               state |= UNISILENCE;
+           }
+         else if (!state)
+           state |= UNRELATED;
+         else
+           state &= ~(UNISILENCE);
+
+         if (gh_number_p (interval))
+           {
+             SCM s = first_translator->get_property (ly_symbol2scm ("splitInterval"));
+             int i = gh_scm2int (interval);
+             if (gh_pair_p (s)
+                 && gh_number_p (gh_car (s))
+                 && gh_number_p (gh_cdr (s))
+                 && i >= gh_scm2int (gh_car (s))
+                 && i <= gh_scm2int (gh_cdr (s)))
+               {
+                 if (!(state & ~(SPLIT_INTERVAL | UNIRHYTHM | UNISON)))
+                   state |= SPLIT_INTERVAL;
+               }
+             else
+               state &= ~(SPLIT_INTERVAL);
+           }
+
+         if (first && !first_pitches.empty ())
+           first_until_ = first_mom;
+         if (first && !second_pitches.empty ())
+           second_until_ = second_mom;
+         first = false;
+
+         if (first_iter->ok ())
+           first_iter->skip (pending);
+         if (second_iter->ok ())
+           second_iter->skip (pending);
+         now = pending;
+       }
+      delete first_iter;
+      delete second_iter;
     }
+  return state;
+}
 
-#if 0 /* DEBUG */
-  printf ("now: %s\n", now.str ().ch_C ());
-  printf ("first: ");
-  for (int i = 0; i < first_pitches.size (); i++)
-    {
-      printf ("%s, ", first_pitches[i].str ().ch_C ());
-    }
-  printf ("\nsecond: ");
-  for (int i = 0; i < second_pitches.size (); i++)
-    {
-      printf ("%s, ", second_pitches[i].str ().ch_C ());
-    }
-  printf ("\n");
-#endif
+void
+Part_combine_music_iterator::process (Moment m)
+{
 
-  Translator_group * fir = first_iter_p_->report_to_l ();
-  Translator_group * sir = second_iter_p_->report_to_l ();
+  /*
+    TODO:
+    - Use three named contexts (be it Thread or Voice): one, two, solo.
+      Let user pre-set (pushproperty) stem direction, remove
+      dynamic-engraver, and such.
 
-  bool solo_b = (first_pitches.empty () != second_pitches.empty ())
-    && !(first_until_ > now && second_until_ > now);
+      **** Tried this, but won't work:
 
-  bool unirhythm_b = !solo_b && !compare (&first_durations, &second_durations);
-  bool unison_b = unirhythm_b && !first_pitches.empty ()
-    &&!compare (&first_pitches, &second_pitches);
-  bool unisilence_b = unirhythm_b && first_pitches.empty ();
+      Consider thread switching: threads "one", "two" and "both".
+      User can't pre-set the (most important) stem direction at
+      thread level!
+   */
+  if (suffix_.empty_b ())
+    suffix_ = first_iter_p_->report_to_l ()->daddy_trans_l_->id_str_.cut_str (3, INT_MAX);
 
-  Translator_group * fd = fir->find_create_translator_l (p->what_str_, "one");
-  Translator_group * sd = sir->find_create_translator_l (p->what_str_, "two");
+  int state = get_state (m);
+  if (state)
+    state_ = state;
+  else
+    state = state_;
+  
+  Part_combine_music const *p = dynamic_cast<Part_combine_music const* > (music_l_);
 
-  bool split_interval_b = false;
-  if (gh_number_p (interval))
-    {
-      SCM s = fd->get_property (ly_symbol2scm ("splitInterval"));
-      int i = gh_scm2int (interval);
-      if (gh_pair_p (s)
-         && gh_number_p (gh_car (s))
-         && gh_number_p (gh_cdr (s))
-         && i >= gh_scm2int (gh_car (s))
-         && i <= gh_scm2int (gh_cdr (s)))
-       split_interval_b = true;
-    }
 
-  bool combined_b = first_iter_p_->report_to_l ()->daddy_trans_l_
+  bool previously_combined_b = first_iter_p_->report_to_l ()->daddy_trans_l_
     == second_iter_p_->report_to_l ()->daddy_trans_l_;
 
-  String to_id =  combined_b ? "one" : "two";
-  if ((!unirhythm_b && combined_b)
-      || (split_interval_b && combined_b)
-      || (solo_b && combined_b)
-      /*|| (unisilence_b && combined_b) */
-      || ((unirhythm_b || unison_b || unisilence_b)
-         && !combined_b && !split_interval_b && !solo_b))
-    {
-      combined_b = !combined_b;
-      to_id =  combined_b ? "one" : "two";
-      change_to (second_iter_p_, p->what_str_, to_id);
-    }
-
-  if (!combined_b)
-    sir = second_iter_p_->report_to_l ();
+  bool combine_b = previously_combined_b;
 
-  SCM b = unirhythm_b ? SCM_BOOL_T : SCM_BOOL_F;
-  fd->set_property ("unirhythm", b);
-  sd->set_property ("unirhythm", b);
+  if (!(state & UNIRHYTHM)
+      || (state & SPLIT_INTERVAL)
+      || (state & (SOLO1 | SOLO2)))
+    combine_b = false;
+  else if (state & (UNIRHYTHM | UNISILENCE))
+    combine_b = true;
 
-  b = split_interval_b ? SCM_BOOL_T : SCM_BOOL_F;
-  fd->set_property ("split-interval", b);
-  sd->set_property ("split-interval",  b);
+  if (combine_b != previously_combined_b)
+    change_to (second_iter_p_, p->what_str_, (combine_b ? "one" : "two")
+              + suffix_);
 
-  b = unisilence_b ? SCM_BOOL_T : SCM_BOOL_F;
-  fd->set_property ("unisilence", b);
-  sd->set_property ("unisilence", b);
+  Translator_group *first_translator = first_iter_p_->report_to_l ()->find_create_translator_l (p->what_str_, "one" + suffix_);
+  Translator_group *second_translator = second_iter_p_->report_to_l ()->find_create_translator_l (p->what_str_, "two" + suffix_);
 
-  b = unison_b ? SCM_BOOL_T : SCM_BOOL_F;
-  fd->set_property ("unison", b);
-  sd->set_property ("unison", b);
-
-  b = solo_b  ? SCM_BOOL_T : SCM_BOOL_F;
-  if (first_pitches.size ())
-    {
-      fd->set_property ("solo", b);
-      sd->set_property ("solo", SCM_BOOL_F);
-    }
-
-  if (second_pitches.size ())
-    {
-      fd->set_property ("solo", SCM_BOOL_F);
-      sd->set_property ("solo", b);
-    }
+  /*
+    hmm
+   */
+  SCM b = (state & UNIRHYTHM) ? SCM_BOOL_T : SCM_BOOL_F;
+  first_translator->set_property ("unirhythm", b);
+  second_translator->set_property ("unirhythm", b);
+
+  b = (state & SPLIT_INTERVAL) ? SCM_BOOL_T : SCM_BOOL_F;
+  first_translator->set_property ("split-interval", b);
+  second_translator->set_property ("split-interval",  b);
+
+  b = (state & UNISILENCE) ? SCM_BOOL_T : SCM_BOOL_F;
+  first_translator->set_property ("unisilence", b);
+  second_translator->set_property ("unisilence", b);
+
+  // difference in definition...
+  //b = ((state & UNISON) ? SCM_BOOL_T : SCM_BOOL_F;
+  b = ((state & UNISON) && (state & UNIRHYTHM)) ? SCM_BOOL_T : SCM_BOOL_F;
+  first_translator->set_property ("unison", b);
+  second_translator->set_property ("unison", b);
+
+  SCM b1 = (state & SOLO1) ? SCM_BOOL_T : SCM_BOOL_F;
+  SCM b2 = (state & SOLO2) ? SCM_BOOL_T : SCM_BOOL_F;
+  first_translator->set_property ("solo", b1);
+  second_translator->set_property ("solo", b2);
 
   if (first_iter_p_->ok ())
     first_iter_p_->process (m);
index c4c875f5639a6fd5e4b1fedb7fdcac1e35df7da9..333593a2d8e12cf6db475e343b7f04ac04c15ae1 100644 (file)
@@ -28,7 +28,7 @@ Script::get_molecule(Score_element * me, Direction d)
     }
   else if (key == ly_symbol2scm ("accordion"))
     {
-      return me->lookup_l ()->accordion (gh_cdr (s), me->paper_l()->get_var("interline"));
+      return me->lookup_l ()->accordion (gh_cdr (s), me->paper_l()->get_var("staffspace"));
     }
   else
     assert (false);
index 975f46018739ba7563b7f213e61e33e5485a25c5..bfeb3cd9254c92f01d42cf0d7fbb5971907a2e86 100644 (file)
@@ -24,22 +24,24 @@ Sequential_music_iterator::Sequential_music_iterator (Sequential_music_iterator
 {
   cursor_ = src.cursor_;
   here_mom_ = src.here_mom_;
-  iter_p_ = src.iter_p_->clone ();
+  if (src.iter_p_)
+    iter_p_ = src.iter_p_->clone ();
+  else
+    iter_p_ = 0;
 }
 
 Sequential_music_iterator::~Sequential_music_iterator()
 {
   if (iter_p_)
     {
-      /*      if (iter_p_->ok () )
+#if 0
+      if (iter_p_->ok () )
        music_l_->origin ()->warning (_ ("Must stop before this music ends"));
-      */
+#endif
       delete iter_p_;
-      iter_p_ = 0;
     }
 }
 
-
 void
 Sequential_music_iterator::construct_children()
 {
@@ -47,39 +49,28 @@ Sequential_music_iterator::construct_children()
   
   while (gh_pair_p (cursor_ ))
     {
-      start_next_element();
-      if (!iter_p_->ok()) 
-       {
-         leave_element();
-       }
-      else 
+      iter_p_ =  get_iterator_p (unsmob_music (gh_car (cursor_)));
+      
+      if (iter_p_->ok()) 
        {
-         set_sequential_music_translator();
-         break;
+         descend_to_child ();
+         return;
        }
-    }
-}
-
-void 
-Sequential_music_iterator::leave_element()
-{
-  delete iter_p_;
-  iter_p_ =0;
-  Moment elt_time = unsmob_music (gh_car (cursor_))->length_mom ();
-  here_mom_ += elt_time;
-  cursor_ =gh_cdr (cursor_);
-}
 
-void
-Sequential_music_iterator::start_next_element()
-{
-  assert (!iter_p_);
-  iter_p_ = get_iterator_p (unsmob_music (gh_car (cursor_)));
+      delete iter_p_ ;
+      iter_p_ =0;
+      cursor_ = gh_cdr (cursor_);
+    }
 }
+ /*
+  move to context of child iterator if it is deeper down in the
+  hierarchy.
+  */
 
 void
-Sequential_music_iterator::set_sequential_music_translator()
+Sequential_music_iterator::descend_to_child ()
 {
+       
   Translator_group  * child_report = child_report = iter_p_->report_to_l ();
   if (dynamic_cast<Grace_iterator*> (iter_p_))
     child_report = child_report->daddy_trans_l_;
@@ -88,8 +79,9 @@ Sequential_music_iterator::set_sequential_music_translator()
     set_translator (child_report);
 }
 
+
 /*
-  [todo: translate]
+  
   
   Hier staat in feite: haal alle muziek op (startend op tijd HERE) tot
   je iets met lengte L > 0 tegenkomt.  Aangezien de preconditie is dat
@@ -114,6 +106,9 @@ SCM
 Sequential_music_iterator::get_music (Moment until)const
 {
   SCM s = SCM_EOL;
+  if (until <  pending_moment ())
+    return s;
+
   SCM curs = cursor_;
   Music_iterator * iter = iter_p_->clone ();
   while (1)
@@ -138,36 +133,71 @@ Sequential_music_iterator::get_music (Moment until)const
     }
   return s;
 }
+/*
+  Skip events till UNTIL. We don't do any other side effects (such as
+  moving descending to child iterator contexts, because they might
+  depend on \context specs and \translator changes being executed
+    
+ */
+void
+Sequential_music_iterator::skip (Moment until)
+{
+  SCM curs = cursor_;
+  while (1)
+    {
+      Moment l =iter_p_->music_length_mom ();
+      if (l >= until - here_mom_)
+       iter_p_->skip (until - here_mom_);
+
+      if (iter_p_->ok ())
+       return ; 
+      
+      here_mom_ = here_mom_ + l;
+      delete iter_p_;
+      iter_p_ =0;
+
+      curs = gh_cdr (curs);
+
+      if (!gh_pair_p (curs))
+       return ;
+      else
+       iter_p_ = get_iterator_p (unsmob_music (gh_car (curs)));
+    }
+}
+
 void
 Sequential_music_iterator::process (Moment until)
 {
-  if (ok ())
+  while (1)
     {
-      while (1) 
-       {
-         Moment local_until = until - here_mom_;
-         while (iter_p_->ok ()) 
-           {
-             Moment here = iter_p_->pending_moment ();
-             if (here != local_until)
-               return ;
-             
-             iter_p_->process (local_until);
-           }
+      iter_p_->process (until - here_mom_);
+
+      /*
+       if the iter is still OK, there must be events left that have
+       
+         TIME > LEFT
          
-         if (!iter_p_->ok ()) 
-           {
-             set_sequential_music_translator ();
-             leave_element ();
-             
-             if (gh_pair_p (cursor_))
-               start_next_element ();
-             else 
-               return ;
-           }
-       }
+      */
+      if (iter_p_->ok ())
+       return ;
+
+      here_mom_ += iter_p_->music_length_mom ();
+
+      descend_to_child ();
+      delete iter_p_;
+      iter_p_ =0;
+
+      cursor_ = gh_cdr (cursor_);
+
+      if (!gh_pair_p (cursor_))
+       return ;
+      else
+       {
+         delete iter_p_;
+         iter_p_ = get_iterator_p (unsmob_music (gh_car (cursor_)));
+       }      
     }
+
 }
 
 Moment
index e23f528a24a387f466b8d6978e61f527fbae529e..0240e99f87a2dbc45c1aa0c560e481788f45ce34 100644 (file)
@@ -144,12 +144,10 @@ Slur_bezier_bow::area_x_gradients_array (Real area)
   algorithm, instead of this homebrew.
 */
 void
-Slur_bezier_bow::minimise_enclosed_area (Paper_def* paper_l)
+Slur_bezier_bow::minimise_enclosed_area (Paper_def* paper_l, Real beauty)
 {
   Real length = curve_.control_[3][X_AXIS]; 
-
-  Real sb = paper_l->get_var ("slur_beautiful");
-  Real beautiful = sb * length * slur_height (length, h_inf_, r_0_);
+  Real beautiful = beauty * length * slur_height (length, h_inf_, r_0_);
 
   DEBUG_OUT << to_str ("Beautiful: %f\n", beautiful);
   DEBUG_OUT << to_str ("Length: %f\n", length);
index ca200b2b243ca80fd342b74e70794c9e1cf9d0d1..0ef9b482993d750a14c5e65bae3655798b41d10a 100644 (file)
@@ -135,6 +135,8 @@ Slur::set_extremities (Score_element*me)
        {
          
          // for (SCM s = get_elt_property ("slur-extremity-rules"); s != SCM_EOL; s = gh_cdr (s))
+
+         // FIXME: global GUILE scope used!
          for (SCM s = scm_eval2 (ly_symbol2scm ("slur-extremity-rules"),
                                  SCM_EOL);
               s != SCM_EOL; s = gh_cdr (s))
@@ -190,9 +192,9 @@ Slur::broken_trend_offset (Score_element *me, Direction dir)
   Offset o;
   if (Spanner *mother =  dynamic_cast<Spanner*> (me->original_l_))
     {
-      for (int i = dir == LEFT ? 0 : mother->broken_into_l_arr_.size ();
-          dir == LEFT ? i < mother->broken_into_l_arr_.size () : i;
-          dir == LEFT ? i++ : --i)
+      for (int i = dir == LEFT ? 0 : mother->broken_into_l_arr_.size () - 1;
+          dir == LEFT ? i < mother->broken_into_l_arr_.size () : i > 0;
+          dir == LEFT ? i++ : i--)
        {
          if (mother->broken_into_l_arr_[i - dir] == me)
            {
@@ -286,7 +288,9 @@ Slur::get_attachment (Score_element*me,Direction dir,
        }
        
     }
-         
+
+
+  // FIXME
   SCM l = scm_assoc
     (scm_listify (a,
                  gh_int2scm (stem ? Stem::get_direction (stem) : 1 * dir),
@@ -353,7 +357,8 @@ Slur::encompass_offset (Score_element*me,
   /*
    leave a gap: slur mustn't touch head/stem
    */
-  o[Y_AXIS] += dir * me->paper_l ()->get_var ("slur_y_free");
+  o[Y_AXIS] += dir * gh_scm2double (me->get_elt_property ("y-free")) *
+    me->paper_l ()->get_var ("staffspace");
   return o;
 }
 
@@ -478,10 +483,14 @@ Slur::brew_molecule (SCM smob)
 void
 Slur::set_control_points (Score_element*me)
 {
-  Real staff_space = Staff_symbol_referencer::staff_space ((Score_element*)me);  
-  Real h_inf = me->paper_l ()->get_var ("slur_height_limit_factor") *
-    staff_space;
-  Real r_0 = me->paper_l ()->get_var ("slur_ratio");
+  Real staff_space = Staff_symbol_referencer::staff_space ((Score_element*)me);
+
+  SCM details = me->get_elt_property ("details");
+  SCM h_inf_scm = scm_assq (ly_symbol2scm ("height-limit"), details);
+  SCM r_0_scm = scm_assq (ly_symbol2scm ("ratio"), details);
+
+  Real r_0 = gh_scm2double (gh_cdr (r_0_scm));
+  Real h_inf = staff_space * gh_scm2double (gh_cdr (h_inf_scm));
   
   Slur_bezier_bow bb (get_encompass_offset_arr (me),
                      Directional_element_interface::get (me),
@@ -491,14 +500,21 @@ Slur::set_control_points (Score_element*me)
     {
       Real length = bb.curve_.control_[3][X_AXIS]; 
       Real default_height = slur_height (length, h_inf, r_0);
-      bb.minimise_enclosed_area (me->paper_l());
-      
-      Real bff = me->paper_l ()->get_var ("slur_force_blowfit");
+
+      SCM ssb = scm_assq (ly_symbol2scm ("beautiful"), details);
+      Real sb =gh_scm2double (gh_cdr (ssb));
+
+      bb.minimise_enclosed_area (me->paper_l(), sb);
+      SCM sbf = scm_assq (ly_symbol2scm ("force-blowfit"), details);
+      Real bff = 1.0;
+      if (gh_pair_p (sbf) && gh_number_p (gh_cdr (sbf)))
+         bff = gh_scm2double (gh_cdr (sbf));
+
       bb.curve_.control_[1][Y_AXIS] *= bff;
       bb.curve_.control_[2][Y_AXIS] *= bff;
       bb.blow_fit ();
 
-      Real sb = me->paper_l ()->get_var ("slur_beautiful");
+      
       Real beautiful = length * default_height * sb;
       Real area = bb.enclosed_area_f ();
       
index 35189db93972b515fcd2d84ec64a4dd2c8fd7cec..493be5a6672df6b47510cba885d325844bfa2b80 100644 (file)
@@ -52,7 +52,7 @@ System_start_delimiter_engraver::acknowledge_element (Score_element_info inf)
        */
       if (gh_symbol_p (gl) && gl  == ly_symbol2scm ("brace")
          && gh_symbol_p (my_gl) && my_gl == ly_symbol2scm ("bracket"))
-       inf.elem_l_->translate_axis ( -paper_l ()->get_var ("interline"), X_AXIS); // ugh
+       inf.elem_l_->translate_axis ( -paper_l ()->get_var ("staffspace"), X_AXIS); // ugh
     }
 
 }
index d40b0c33694dfcbb9a23f4dc6429820759a113aa..645f04b9b2aa802b0c8c9e974b95ca94e60909a7 100644 (file)
@@ -127,7 +127,7 @@ Tie::get_control_points (SCM smob)
   
   Real staff_space = Staff_symbol_referencer::staff_space (me);
 
-  Real x_gap_f = me->paper_l ()->get_var ("tie_x_gap");
+  Real x_gap_f = gh_scm2double (me->get_elt_property ("x-gap"));
 
   Score_element* commonx = me->common_refpoint (me->get_bound (LEFT), X_AXIS);
   commonx = me->common_refpoint (me->get_bound (RIGHT), X_AXIS);
@@ -167,10 +167,14 @@ Tie::get_control_points (SCM smob)
     }
   
   Direction dir = Directional_element_interface::get(me);
-  
-  Real h_inf = me->paper_l ()->get_var ("tie_height_limit_factor") * staff_space;
-  Real r_0 = me->paper_l ()->get_var ("tie_ratio");
 
+  SCM details = me->get_elt_property ("details");
+
+  SCM lim // groetjes aan de chirurgendochter.
+    = scm_assq (ly_symbol2scm ("height-limit"),details);
+  
+  Real h_inf = gh_scm2double (gh_cdr (lim)) *  staff_space;
+  Real r_0 = gh_scm2double (gh_cdr (scm_assq (ly_symbol2scm ("ratio"),details)));
 
   Bezier b  = slur_shape (width, h_inf, r_0);
   
@@ -224,8 +228,11 @@ Tie::get_control_points (SCM smob)
       Real ry = rint (y/staff_space) * staff_space;
       Real diff = ry - y;
       Real newy = y;
-      if (fabs (y) <= Staff_symbol_referencer::staff_radius (me)
-         && fabs (diff) < me->paper_l ()->get_var ("tie_staffline_clearance"))
+
+      Real clear = staff_space * gh_scm2double (me->get_elt_property ("staffline-clearance"));
+
+       if (fabs (y) <= Staff_symbol_referencer::staff_radius (me)
+         && fabs (diff) < clear)
        {
          newy = ry - 0.5 * staff_space * sign (diff) ;
        }
index 40eba8acf785a277a13433b993c4c390690c259f..fa4d80f0a8c1df18a4fe9b65bb0f1783a51c2bf4 100644 (file)
@@ -34,7 +34,7 @@ Vertical_align_engraver::Vertical_align_engraver()
 void
 Vertical_align_engraver::do_creation_processing()
 {
-  valign_p_ =new Spanner (SCM_EOL); // todo -> basic props
+  valign_p_ =new Spanner (get_property ("basicVerticalAlignmentProperties"));
   Align_interface::set_interface (valign_p_);
   Align_interface::set_axis (valign_p_,Y_AXIS);
   valign_p_->set_elt_property ("stacking-dir",
@@ -58,6 +58,7 @@ Vertical_align_engraver::do_removal_processing()
       valign_p_->set_elt_property ("threshold",
                                   gh_cons (min,max));
     }
+  
   valign_p_->set_bound(RIGHT,unsmob_element (get_property ("currentCommandColumn")));
   typeset_element (valign_p_);
   valign_p_ =0;
index 237f0a347db869defadb1e73ae5ccc8cbecfe07f..65e7b340b0bb3ff49fbd6034e3183bf761cac695 100644 (file)
@@ -79,8 +79,8 @@
   (mapcar (function
           (lambda (x) (modify-syntax-entry
                        (car x) (cdr x) lily-mode-syntax-table)))
-         '(( ?\( . "." ) ( ?\) . "." )
-           ( ?\[ . "." ) ( ?\] . "." )
+         '(( ?\( . "()" ) ( ?\) . ")(" )   ; need matching parens for inline lisp
+           ( ?\[ . "." ) ( ?\] . "." )
            ( ?\{ . "(}" ) ( ?\} . "){" )
            ( ?\< . "(>" )( ?\> . ")>") 
            ( ?\$ . "." ) ( ?\% . "." ) ( ?\& . "." )
index a5af61a2c011d6c753159d77ee635f9f29bd4e9b..452bc2b2ca8eb28e160b1254df5ab53b8b34d4c3 100644 (file)
@@ -37,7 +37,7 @@ melismaEnd = \property Staff.melismaBusy = ##f
 
 
 papersize = "a4"
-
+\include "engraver.ly"
 \include "generic-paper.ly"
 \include "paper20.ly"
 
index 0fdd838bea38dc310be20df3c92b87a1653bf8fd..f41e94da6f6025d34973bff6ff57ad58fb289462 100644 (file)
@@ -43,10 +43,9 @@ StaffContext=\translator {
 
          
        \accepts "Voice";
-};
+}
 
-\translator{\StaffContext }
-\translator {
+ChoirStaffContext = \translator {
        \type "Engraver_group_engraver";
        \name ChoirStaff;
        alignmentReference = \center;
@@ -69,13 +68,11 @@ RhythmicStaffContext=\translator{
        \consists "Output_property_engraver";   
 
        Generic_property_list = #generic-staff-properties
-       
-       barSize =   4.0 * \staffspace ; % JUNKME
 
        \consists "Pitch_squash_engraver";
        \consists "Separating_line_group_engraver";     
        \name RhythmicStaff;
-
+       basicBarProperties \push #'bar-size = #4
        basicVoltaSpannerProperties \push #'minimum-space =  #15  % urg, in \pt
        basicVoltaSpannerProperties \push #'padding =  #5  % urg, in \pt
        basicStaffSymbolProperties \push #'line-count = #1      
@@ -86,8 +83,8 @@ RhythmicStaffContext=\translator{
        \consists "Staff_symbol_engraver";
        \consistsend "Axis_group_engraver";
        \accepts "Voice";
-};
-\translator{\RhythmicStaffContext}
+}
+
 
 VoiceContext = \translator {
        \type "Engraver_group_engraver";
@@ -133,7 +130,7 @@ VoiceContext = \translator {
        \consists "Skip_req_swallow_translator";
        \accepts Thread; % bug if you leave out this!
        \accepts Grace;
-};
+}
 
 GraceContext=\translator {
        \type "Grace_engraver_group";
@@ -174,11 +171,8 @@ GraceContext=\translator {
        basicBeamProperties \push #'beam-space-function = #(lambda (x) 0.5)
        
        weAreGraceContext = ##t   
-       graceAccidentalSpace= 1.5 * \staffspace; % JUNKME
-};
-
-\translator{\GraceContext}
-\translator {\VoiceContext}
+       graceAccidentalSpace= 1.5 ; % in staff space
+}
 
 ThreadContext = \translator{
        \type Engraver_group_engraver;
@@ -188,9 +182,8 @@ ThreadContext = \translator{
        Generic_property_list = #generic-thread-properties
        \consists "Property_engraver";
        \name Thread;
-};
+}
 
-\translator{\ThreadContext}
 GrandStaffContext=\translator{
        \type "Engraver_group_engraver";
        \name GrandStaff;
@@ -201,23 +194,19 @@ GrandStaffContext=\translator{
        \consists "Property_engraver";  
        Generic_property_list = #generic-grand-staff-properties
        \accepts "Staff";
-};
-\translator{\GrandStaffContext}
+}
 
 PianoStaffContext = \translator{\GrandStaffContext
        alignmentReference = \center;
 
        \consists "Vertical_align_engraver";
 
-       % JUNKME
-       minVerticalAlign = 3.0*\staffheight;
-       maxVerticalAlign = 3.0*\staffheight;
+       basicVerticalAlignmentProperties \push #'threshold = #'(12 . 12) 
 
 %      \consistsend "Axis_group_engraver";
        \name "PianoStaff";
-       
-};
-\translator{\PianoStaffContext}
+}
+
 StaffGroupContext= \translator {
        \type "Engraver_group_engraver";
        \consists "Span_bar_engraver";
@@ -237,9 +226,8 @@ StaffGroupContext= \translator {
        
        \accepts "Lyrics";
        \accepts "ChordNames";
-};
+}
 
-\translator { \StaffGroupContext }
 
 % UGH! JUNKME
 LyricsVoiceContext= \translator{
@@ -255,8 +243,14 @@ LyricsVoiceContext= \translator{
        \consists "Stanza_number_engraver";
        phrasingPunctuation = #".,;:!?\""
        
-};
-\translator{ \LyricsVoiceContext }
+}
+NoteNamesContext = \translator {
+       \type "Engraver_group_engraver";
+       \name NoteNames;
+       \consistsend "Axis_group_engraver";
+       \consists "Note_name_engraver";
+       \consists "Separating_line_group_engraver";
+}
 
 LyricsContext = \translator {
        \type "Engraver_group_engraver";
@@ -267,8 +261,7 @@ LyricsContext = \translator {
        \consistsend "Axis_group_engraver";
        
        \accepts "LyricVoice";
-};
-\translator { \LyricsContext }
+}
 
 ChordNameVoiceContext = \translator {
        \type "Engraver_group_engraver";
@@ -278,9 +271,7 @@ ChordNameVoiceContext = \translator {
        \consistsend "Axis_group_engraver";
        \consists "Separating_line_group_engraver";
        \consists "Chord_name_engraver";
-};
-\translator {\ChordNameVoiceContext}
-
+}
 ChordNameContext = \translator {
        \type "Engraver_group_engraver";
        \name ChordNames;
@@ -290,8 +281,7 @@ ChordNameContext = \translator {
        \consists "Output_property_engraver";   
        \accepts "ChordNameVoice";
        \consistsend "Axis_group_engraver";
-       };
-\translator { \ChordNameContext }
+       }
 
 
 ScoreWithNumbers = \translator {
@@ -299,20 +289,20 @@ ScoreWithNumbers = \translator {
 
        % uncomment to bar numbers on a whole system.
        \consists "Bar_number_engraver";
-};
+}
 
 StupidScore = \translator {
        \type "Score_engraver";
        \name Score;
        \consists "Note_heads_engraver";
-};
+}
 
 
 
 BarNumberingStaffContext = \translator {
        \StaffContext
        \consists "Mark_engraver";
-};
+}
 
 HaraKiriStaffContext = \translator {
        \StaffContext
@@ -320,7 +310,7 @@ HaraKiriStaffContext = \translator {
        \consistsend "Hara_kiri_engraver";        
        \consists "Instrument_name_engraver";
        \accepts "Voice";
-};
+}
 %{
   The HaraKiriStaffContexts doesn't override \name,
   so it is still named `Staff'.
@@ -331,7 +321,7 @@ HaraKiriStaffContext = \translator {
 OrchestralPartStaffContext = \translator {
        \StaffContext
        \consists "Mark_engraver";
-};
+}
 
 ScoreContext = \translator {
        \type Score_engraver;
@@ -366,6 +356,7 @@ ScoreContext = \translator {
        aDueText = #"\\`a2"
        soloADue = ##t
        splitInterval = #'(0 . 1)
+       changeMoment = #`(,(make-moment 0 0) . ,(make-moment 1 512))
 
        defaultClef = #"treble"
 
@@ -456,6 +447,8 @@ ScoreContext = \translator {
                (breakable . #t)
                (visibility-lambda . ,begin-of-line-visible)
                (name . "barnumber")
+               (padding . 1.0)
+               (direction . 1)
        )
 
        basicBeamProperties = #basic-beam-properties
@@ -503,6 +496,11 @@ ScoreContext = \translator {
        basicCrescendoProperties = #`(
                (molecule-callback . ,Crescendo::brew_molecule)
                (interfaces . (crescendo-interface dynamic-interface))
+               (thickness . 1.0)
+               (shorten-for-letter  .  4.0)
+               (height . 0.6666)
+               (dash-thickness . 1.2)
+               (dash-length . 4.0)
                (name . "crescendo")
        )
        basicDotColumnProperties = #`(
@@ -678,6 +676,8 @@ ScoreContext = \translator {
                (after-line-breaking-callback . ,Slur::after_line_breaking)
 
                (de-uglify-parameters . ( 1.5  0.8  -2.0))
+               (details . ((height-limit . 2.0) (ratio . 0.333) (force-blowfit . 0.5) (beautiful . 0.5)))
+               (y-free . 0.75)
                (name . "slur")
        )
        basicSpacingSpannerProperties =#`(
@@ -745,7 +745,10 @@ ScoreContext = \translator {
                (interfaces . (tie-interface))
                (molecule-callback . ,Tie::brew_molecule)
                (spacing-procedure . ,Tie::set_spacing_rods)
+               (staffline-clearance . 0.24)
+               (details . ((ratio . 0.333) (height-limit . 1.0)))
                (thickness . 1.2)
+               (x-gap . 0.2)
                (minimum-length  . 2.5)
                (name . "tie")
        )
@@ -829,24 +832,19 @@ ScoreContext = \translator {
                (minimum-space . 25)
                (name . "volta brace")
        )       
+       basicVerticalAlignmentProperties = #`(
+               (axes 1)
+               (interfaces . (align-interface axis-group-interface))
+               (name . "vertical alignment")
+       )
        basicVerticalAxisGroupProperties = #`(
                (axes 1)
                (interfaces . (axis-group-interface))
                (name . "Y-axis group")
        )
-};
-
-\translator { \ScoreContext }
+}
 
 OrchestralScoreContext= \translator {
        \ScoreContext
-
-};
-
-\translator {
-       \type "Engraver_group_engraver";
-       \name NoteNames;
-       \consistsend "Axis_group_engraver";
-       \consists "Note_name_engraver";
-       \consists "Separating_line_group_engraver";
 }
+
index ba07ca88323b739483d97d8d7852d093729a85fb..2c1fdb044ee24589647bfc79f5ae594f17e993cc 100644 (file)
@@ -5,8 +5,11 @@
 paper_as_nine = \paper {
        staffheight = 9.\char;
 
-       font_large = 4.;
-       font_Large = 4.;        
+%      font_large = 4.;
+%      font_Large = 4.;        
+%      font_normal = 4.;
+       font_large = 1.;
+       font_Large = 1.;        
        font_normal = 4.;
        font_script = 1.;
 
index 85661e39d6938e61f1f0e31edb7ceff7cb42f088..640a60346463ea9ed703ae84e87ff5a3755e5a49 100644 (file)
@@ -7,9 +7,8 @@ TODO:
 
 * cleanup
 * use elt properties, iso. paper variables.
-%}
-
 
+%}
 
 paperfile = \papersize + ".ly";
 % paperfile = "a4.ly";
@@ -19,9 +18,6 @@ paperfile = \papersize + ".ly";
 staffspace = \staffheight / 4.0;
 stafflinethickness = \staffspace / 10.0;
 
-% deprecated
-interline = \staffspace;
-
 %{
 The space taken by a note is determined by the formula 
 
@@ -69,43 +65,6 @@ arithmetic_multiplier = 0.9 * 1.32 * \staffspace ;
 arithmetic_basicspace = 2.0;
 
 
-% 
-% UGH; junk these!
-%
-
-% catch suspect beam slopes, set slope to zero if
-% outer stem is lengthened more than
-beam_lengthened = 0.2 * \staffspace;
-% and slope is running away steeper than
-beam_steep_slope = 0.2 / 1.0;
-
-
-
-%{
-  Slur parameters.
-  
-  See Documentation/programmer/fonts.doc
-
-  TODO: -> elt-properties.
-%}
-% Height-limit (h_inf) = factor * staff_space
-slur_height_limit_factor = 2.0;
-slur_ratio = 1.0 / 3.0;
-
-slur_thickness = 1.2 * \stafflinethickness;
-
-slur_force_blowfit = 0.5;
-slur_beautiful = 0.5;
-
-
-%{
-Horizontal space between centre of notehead and slur.
-%}
-% OSU: suggested gap = ss / 5;
-slur_x_gap = \staffspace / 5.0;
-slur_y_gap = 0.25 * \staffspace;
-slur_y_free = 0.75 * \staffspace;
-slur_x_minimum = 1.5 * \staffspace;
 
 % URG: the magic constants for area asymmetry
 bezier_pct_c0 = -0.2;
@@ -115,27 +74,9 @@ bezier_pct_in_max = 1.2;
 bezier_area_steps = 1.0;
 
 
-%{
-  Tie parameters
-%}
-
-tie_height_limit_factor = 1.0 ; 
-tie_ratio = \slur_ratio;
-
-% OSU: tie gap == slur gap
-tie_x_gap = 0.2 * \staffspace;
-tie_staffline_clearance = 2.0 *\slur_thickness;
-
 % vertical space between lines of text.
 line_kern = \staffspace;
 
-% chop off this much when next to pp / ff sign.
-crescendo_shorten = 4.0 * \staffspace;
-crescendo_thickness   = \stafflinethickness;
-crescendo_height = 0.666 * \staffspace;
-crescendo_dash_thickness = 1.2*\stafflinethickness;
-crescendo_dash = 4.0*\staffspace;
-
 
 % optical correction amount.
 stemSpacingCorrection = 0.5*\staffspace;
@@ -175,10 +116,23 @@ will cause scores to be set looser
 
 compression_energy_factor = 0.6;
 
+\translator { \NoteNamesContext }
+\translator { \ScoreContext }
+\translator { \ChoirStaffContext}
+\translator { \GraceContext}
+\translator { \RhythmicStaffContext}
+\translator { \StaffContext }
+\translator { \VoiceContext}
+\translator { \StaffGroupContext }
+\translator { \ChordNameContext }
+\translator { \ChordNameVoiceContext}
+\translator { \GrandStaffContext}
+\translator { \LyricsContext }
+\translator { \ThreadContext}
+\translator { \PianoStaffContext}
+\translator { \LyricsVoiceContext }
 
 
-\include "engraver.ly";
-
 
 
 
index ab28f5de689dd7caf56b7eae550fee4d0798cfa3..00184d02d0d949c47352aa0757b393a68244987b 100644 (file)
@@ -9,29 +9,7 @@ copyright =     "public domain";
 
 \version "1.3.59";
 
-\include "global.ly"
-\include "violoncello.ly"
-\include "contrabasso.ly"
-
-bassiGroup = \context PianoStaff = bassi_group \notes <
-        %\global
-       \context StaffCombineStaff=one {
-               \clef "bass"; 
-               \key es \major;
-               \skip 1*314; 
-               \bar "|."; 
-       }
-       \context StaffCombineStaff=two {
-               \clef "bass"; 
-               \key es \major;
-               \skip 1*314; 
-               \bar "|."; 
-       }
-
-       \context StaffCombineStaff=one \partcombine StaffCombineStaff
-               \context StaffCombineVoice=one \violoncello
-               \context StaffCombineVoice=two \contrabasso
->
+\include "bassi.ly"
 
 \score{
        \bassiGroup
diff --git a/mutopia/Coriolan/bassi.ly b/mutopia/Coriolan/bassi.ly
new file mode 100644 (file)
index 0000000..785c840
--- /dev/null
@@ -0,0 +1,41 @@
+\header{
+filename =      "bassi.ly";
+% %title =      "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
+description =   "";
+composer =      "Ludwig van Beethoven (1770-1827)";
+enteredby =     "JCN";
+copyright =     "public domain";
+}
+
+\version "1.3.59";
+
+\include "global.ly"
+\include "violoncello.ly"
+\include "contrabasso.ly"
+
+bassiGroup = \context PianoStaff = bassi_group \notes <
+        %\global
+       \context StaffCombineStaff=oneBassi {
+               \property StaffCombineStaff.midiInstrument = #"cello"
+               \property StaffCombineStaff.instrument = #"Violoncello\ne\nContrabasso"
+               \property StaffCombineStaff.instr = #"Vc."
+               \clef "bass"; 
+               \key es \major;
+               \skip 1*314; 
+               \bar "|."; 
+       }
+       \context StaffCombineStaff=twoBassi {
+               \property StaffCombineStaff.midiInstrument = #"contrabass"
+               \property StaffCombineStaff.instrument = #"Contrabasso"
+               \property StaffCombineStaff.instr = #"Cb."
+%              \property StaffCombineStaff.transposing = #-12
+               \clef "bass"; 
+               \key es \major;
+               \skip 1*314; 
+               \bar "|."; 
+       }
+
+       \context StaffCombineStaff=oneBassi \partcombine StaffCombineStaff
+               \context StaffCombineVoice=one \violoncello
+               \context StaffCombineVoice=two \contrabasso
+>
index 1e8f4c1a2493f7deadce7694c0d22472d8a4f603..77544490e52407db1dafe7534cfa8f87087483e1 100644 (file)
@@ -18,7 +18,6 @@ contrabasso = \notes \relative c {
        c'1\ff ~ |
        c |
        f,4-. r r2 |
-       \property Staff.instr = #"Vc.\nCb."
        r1 |
        c'1\ff ~ |
        c |
@@ -30,8 +29,8 @@ contrabasso = \notes \relative c {
        c4 r4 r2 |
        c4 r4 r2 |
        r1 |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        c'4.\< c8 bes4. bes8 |
 
        %20
@@ -46,8 +45,8 @@ contrabasso = \notes \relative c {
 
        % copied 14 from cello
 
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        bes'4.\< bes8 as4. as8 |
        g4 \!g4-.\f r2 |
        R1
@@ -82,8 +81,8 @@ contrabasso = \notes \relative c {
        )as,4 r r r8 as(|
        )g4 r r r8 g(|
        )d'4 r r r8 d(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )es4\< r r r8 es(|
        )as,4 r r r8 as(|
        )g4 r r r8 g(|
@@ -98,15 +97,15 @@ contrabasso = \notes \relative c {
        )bes4 r r r8 bes(|
        )as4 r r r8 as(|
        )e4 r r r8 e(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )f4\< r r r8 f(|
        )bes4 r r r8 bes(|
        %70
        \!)as2\ff g |
        fis d' |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        g,4\p\< r r r8 g(|
        )c4 r r r8 c(|
        % )<b1\sf\> { s2 s4 \!s8}> |
@@ -119,8 +118,8 @@ contrabasso = \notes \relative c {
        d4\pp r d r |
        d r d r |
        %80
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        d r d\< r |
        d r d r |
        d r d r |
@@ -196,6 +195,7 @@ contrabasso = \notes \relative c {
        f |
        b,2\sf r |
        b2\sf r |
+       %160
        R1*3 |
        bes2\ff r |
        bes2\sf r |
@@ -216,8 +216,8 @@ contrabasso = \notes \relative c {
        %180
        )e4 r r r8 e(|
        )b'4 r r r8 b(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )c4\< r r r8 c(|
        )f,4 r r r8 f(|
        )e4 r r r8 e'(|
@@ -232,8 +232,8 @@ contrabasso = \notes \relative c {
        )g,4 r r r8 g(|
        )f4 r r r8 f(|
        )cis'4 r r r8 cis(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )d4\< r r r8 d(|
 
        %195
@@ -242,40 +242,40 @@ contrabasso = \notes \relative c {
        dis b |
        es4\p r r r8 es(|
        )a,4 r r r8 a(|
+       )g1 |
 
        %200
-       )g1 |
        f |
        % copied 18 from cello
-       [f8(g f g][f g f)g] |
-       es!4\fp r e r |
+       es'!4\fp r e r |
        f r g r |
-       
-       %205
        as r g r |
        f r fis r |
+
+       %205
        g r g r |
        g r g r |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        g r g\< r |
+       g r g r |
        
        %210
        g r g r |
        g r g r |
-       g r g r |
        \!f2.\ff()es4 |
        d( c d )c |
+       f2.\ff()es4 |
 
        %215
-       f2.\ff()es4 |
        d( c d )c |
        bes2.\ff()as4 |
        g( f g )f |
        bes2.\ff()as4 |
+       g( f g )f |
 
        %220
-       f'4 r r2 |
+       f4 r r2 |
        f'4 r r2 |
        f4 r r2 |
        f4 r r2 |
@@ -288,7 +288,7 @@ contrabasso = \notes \relative c {
 
        %230
        f4 r8 f g4 r8 g |
-       c,4\p r r2 |
+       c4\p r r2 |
        r2 r4 r8 b\f |
        c4 r r2 |
        r2 r4 r8 b\f |
@@ -297,7 +297,7 @@ contrabasso = \notes \relative c {
        R1*3 |
 
        %copied 59 from cello
-       [c,8\f e g as][bes, d fis g]|
+       [c8\f e g as][bes, d fis g]|
 
        %240
        [as, c e f!][g, bes d es]|
@@ -315,8 +315,8 @@ contrabasso = \notes \relative c {
        %250
        )es4 r r r8 es(|
        )b4 r r r8 b(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )c4\< r r r8 c(|
        )f4 r r r8 f,(|
        )es1 |
@@ -329,8 +329,8 @@ contrabasso = \notes \relative c {
        bes\f |
 
        %260
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        as4.\p\< as'8 g4. g8 |
        f4. f8 es4. es8 |
        as4. as8 g4. g8 |
@@ -373,8 +373,8 @@ contrabasso = \notes \relative c {
        f,4-. g-. r2 |
 
        %290
-       \property Voice.decrescendoText = "dim."
-       \property Voice.decrescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.decrescendoText = "dim."
+       \property StaffCombineVoice.decrescendoSpanner = "dashed-line"
        as4\> r b r |
        R1 |
        \!c4\p r r2|
@@ -387,30 +387,23 @@ contrabasso = \notes \relative c {
        r2 r4 f, |
        c' r r2 |
        r2 r4 f, |
+
+       %300
        c' r r2 |
        R1 |
        f,4 r r2 |
        R1 |
        c'4 r r2 |
+
+       %305
        R1 |
        f,4 r r2 |
        R1*3 |
+
+       %310
        c'4\pp r r2 |
        R1 |
        c4 r r2 |
        c4 r r2 |
        c4 r r2 |
 }
-
-%%%contrabassoStaff = \context Staff = contrabasso <
-%%%    \property Staff.midiInstrument = #"contrabass"
-%%%    \property Staff.instrument = #"Contrabasso"
-%%%    \property Staff.instr = #"Cb."
-%%%    \property Staff.transposing = #-12
-%%%    \clef "bass";
-%%%    \notes \context Voice=one< 
-%%%            \global
-%%%            \contrabasso
-%%%    >
-%%%>
-
index ea8f927ad3aefe468d6b9b473eb49b7d8ac5af9b..0c9a454a814d4a5c374ebdfa23bb08102302fef8 100644 (file)
@@ -13,7 +13,7 @@ copyright =    "public domain";
 \include "global.ly"
 \include "paper16.ly"
 
-\include "contrabasso.ly"
+\include "bassi.ly"
 \include "clarinetti.ly"
 \include "corni.ly"
 \include "fagotti.ly"
@@ -21,11 +21,9 @@ copyright =   "public domain";
 \include "oboi.ly"
 \include "timpani.ly"
 \include "trombe.ly"
-\include "viola-1.ly"
-\include "viola-2.ly"
+\include "violi.ly"
 \include "violino-1.ly"
 \include "violino-2.ly"
-\include "violoncello.ly"
 
 
 legniGroup = \context StaffGroup = legni_group <
@@ -51,45 +49,6 @@ violiniGroup = \context GrandStaff = violini_group <
        \violinoIIStaff
 >
 
-violiGroup = \context PianoStaff = violi_group \notes <
-       \context StaffCombineStaff=one {
-               \clef "alto"; 
-               \key es \major;
-               \skip 1*314; 
-               \bar "|."; 
-       }
-       \context StaffCombineStaff=two {
-               \clef "alto"; 
-               \key es \major;
-               \skip 1*314; 
-               \bar "|."; 
-       }
-
-       \context StaffCombineStaff=one \partcombine StaffCombineStaff
-               \context StaffCombineVoice=one \violaI
-               \context StaffCombineVoice=two \violaII
->
-
-bassiGroup = \context PianoStaff = bassi_group \notes <
-       \context StaffCombineStaff=one {
-               \clef "bass"; 
-               \key es \major;
-               \skip 1*314; 
-               \bar "|."; 
-       }
-       \context StaffCombineStaff=two {
-               \clef "bass"; 
-               \key es \major;
-               \skip 1*314; 
-               \bar "|."; 
-       }
-
-       \context StaffCombineStaff=one \partcombine StaffCombineStaff
-               \context StaffCombineVoice=one \violoncello
-               \context StaffCombineVoice=two \contrabasso
->
-
-
 archiGroup = \context StaffGroup = archi_group <
        \violiniGroup
        \violiGroup
index 3649bdd732b9aed3f8fe7579a25f53d97f4e8560..03ffeb7e1bb07b57e1cf076d973c4bb7eb802604 100644 (file)
@@ -32,8 +32,8 @@ violaI = \notes \relative c {
        [c,8-. es-.] [es()d] [d-. g-.] g4-"ten." |
        [c,8-. es-.] [es()d] [d-. as'-.] [as()g] |
        [g8-. c-.] [c()b] [b-. f'-.] [f()es] |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        es4.\< es8 d4. d8 |
        %20
        c4. c8 \!b4\f r4 |
@@ -43,15 +43,15 @@ violaI = \notes \relative c {
        r4 [des8\p()c][c-. ges'-.][ges()f] |
        %25
        [f-. bes-.][bes()a][a-. es'-.][es()des] |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        des4.\< des8 c4. c8 |
        bes4 \!bes4-.\f r2 |
        R1
        % same rhythm as violins...
        r8 c-.\p c4. c8-. c4~ |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [c8\< c-.]c2.~ |
        %30
        [c8 c-.]c2.~ |
@@ -84,8 +84,8 @@ violaI = \notes \relative c {
        )g4 r r r8 g(|
        %55
        )d4 r r r8 d(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )es4 r\< r  r8 es(|
        )as4 r r r8 as(|
        )g4 r r r8 g(|
@@ -100,15 +100,15 @@ violaI = \notes \relative c {
        )bes4 r r r8 bes(|
        )as4 r r r8 as(|
        )e4 r r r8 e(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )f4\< r r r8 f(|
        )bes4 r r r8 bes |
        %70
        \!c2:\ff bes: |
        a: fis: |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        g4\p\< r r r8 g(|
        )c,4 r r r8 c |
        [\!f8\sf(\>as f as][f g d)\!g] |
@@ -119,8 +119,8 @@ violaI = \notes \relative c {
        [d,-.\pp d'-.] es4. es8-. d4 ~ |
        [d8 d-.] es4. es8-. d4 ~ |
        %80
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [d8\< d-.] es4. es8-. d4 ~ |
        [d8 d-.] es4. es8-. d4 ~ |
        [d8 d-.] es4. es8-. d4 ~ |
@@ -187,8 +187,8 @@ violaI = \notes \relative c {
        [e g b c][des c g e]|
        [f as c des][c des as f]|
        [g bes d es][d es bes g]|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [as\< c d es][f es c as]|
        %131
        [g bes d es][f es bes g]|
@@ -211,8 +211,8 @@ violaI = \notes \relative c {
        [g,: bes: c: des:][f,: bes: c: des:]|
        [e,: g: bes: des:][c,: e: g: c:]|
        %shared with cello from here on
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [f,8\p\< as c des][es, g b c]|
        [des, f a bes][c, es g as]|
        % uhuh, still 'same as cello';
@@ -268,8 +268,8 @@ violaI = \notes \relative c {
        %180
        )e4 r r r8 e8(|
        )b'4 r r r8 b8(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )c4 r\< r r8 c,8(|
        % copied
        )f4 r r r8 f8(|
@@ -284,8 +284,8 @@ violaI = \notes \relative c {
        d,4\p r r r8 d8(|
        )g4 r r r8 g8(|
        )f4 r r r8 f8(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )cis4\< r r r8 cis8(|
        )d4 r r r8 d8(|
        %195
@@ -306,8 +306,8 @@ violaI = \notes \relative c {
        r[c\p(as)c]r[c(a)c] |
        [b-. g'-.] as4. as8-. g4 ~ |
        [g8 g-.] as4. as8-. g4 ~ |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [g8 g-.\<] as4. as8-. g4 ~ |
        [g8 g-.] as4. as8-. g4 ~ |
        %210
@@ -350,8 +350,8 @@ violaI = \notes \relative c {
        %240
        f,4 r r2 |
        R1*11 |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        c'4\p\< r r r8 c8(|
        )f4 r r r8 f,8(|
        )es1 |
@@ -364,8 +364,8 @@ violaI = \notes \relative c {
        e'2:16\f e: |
        
        %260
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [as,8\p\< f']f4. es8 es4 ~ |
        [es8 as]as4. g8 g4 ~ |
        [g8 f]f4. es8 es4 ~ |
@@ -400,8 +400,8 @@ violaI = \notes \relative c {
        es4-. e-. r2 |
        f4-. g-. r2 |
        %290
-       \property Voice.decrescendoText = "dim."
-       \property Voice.decrescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.decrescendoText = "dim."
+       \property StaffCombineVoice.decrescendoSpanner = "dashed-line"
        as4\> r g r |
        R1 |
        \!c4\p r r2 |
@@ -414,18 +414,3 @@ violaI = \notes \relative c {
        c4 r r2 |
        c4 r r2 |
 }
-
-%%% urg
-%%%\include "viola-2.ly";
-%%%
-%%%violaIStaff = \context Staff = violai <
-%%%    \property Staff.midiInstrument = #"viola"
-%%%    \property Staff.instrument = #"Viola"
-%%%    \property Staff.instr = #"Vla."
-%%%    \clef "alto";
-%%%    \notes \context Voice=one < 
-%%%            \global
-%%%            \violaI
-%%%    >
-%%%>
-
index 05b75c0f8ea47a39b4d5d32cf9a68653015195b1..b7f3effbd6fb05109b0ee0160cc89ba0a10bd178 100644 (file)
@@ -32,8 +32,8 @@ violaII = \notes \relative c {
        [c,8-. es-.] [es()d] [d-. g-.] g4-"ten." |
        [c,8-. es-.] [es()d] [d-. as'-.] [as()g] |
        [g8-. c-.] [c()b] [b-. f'-.] [f()es] |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        es4.\< es8 d4. d8 |
        %20
        c4. c8 \!b4\f r4 |
@@ -43,15 +43,15 @@ violaII = \notes \relative c {
        r4 [des8\p()c][c-. ges'-.][ges()f] |
        %25
        [f-. bes-.][bes()a][a-. es'-.][es()des] |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        des4.\< des8 c4. c8 |
        bes4 \!bes4-.\f r2 |
        R1
        % same rhythm as violins...
        r8 c,-.\p c4. c8-. c4~ |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [c8\< c-.]c2.~ |
        %30
        [c8 c-.]c2.~ |
@@ -84,8 +84,8 @@ violaII = \notes \relative c {
        )g4 r r r8 g(|
        %55
        )d4 r r r8 d(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )es4 r\< r  r8 es(|
        )as4 r r r8 as(|
        )g4 r r r8 g(|
@@ -100,15 +100,15 @@ violaII = \notes \relative c {
        )bes4 r r r8 bes(|
        )as4 r r r8 as(|
        )e4 r r r8 e(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )f4\< r r r8 f(|
        )bes4 r r r8 bes |
        %70
        \!as2:\ff g: |
        fis: d: |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        g4\p\< r r r8 g(|
        )c,4 r r r8 c |
        [\!f8\sf(\>as f as][f g d)\!g] |
@@ -119,8 +119,8 @@ violaII = \notes \relative c {
        [d-.\pp d'-.] es4. es8-. d4 ~ |
        [d8 d-.] es4. es8-. d4 ~ |
        %80
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [d8\< d-.] es4. es8-. d4 ~ |
        [d8 d-.] es4. es8-. d4 ~ |
        [d8 d-.] es4. es8-. d4 ~ |
@@ -187,8 +187,8 @@ violaII = \notes \relative c {
        [e g b c][des c g e]|
        [f as c des][c des as f]|
        [g bes d es][d es bes g]|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [as\< c d es][f es c as]|
        %131
        [g bes d es][f es bes g]|
@@ -211,8 +211,8 @@ violaII = \notes \relative c {
        [g,: bes: c: des:][f,: bes: c: des:]|
        [e,: g: bes: des:][c,: e: g: c:]|
        %shared with cello from here on
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [f,8\p\< as c des][es, g b c]|
        [des, f a bes][c, es g as]|
        % uhuh, still 'same as cello';
@@ -268,8 +268,8 @@ violaII = \notes \relative c {
        %180
        )e4 r r r8 e8(|
        )b'4 r r r8 b8(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )c4 r\< r r8 c,8(|
        % copied
        )f4 r r r8 f8(|
@@ -284,8 +284,8 @@ violaII = \notes \relative c {
        d,4\p r r r8 d8(|
        )g4 r r r8 g8(|
        )f4 r r r8 f8(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )cis4\< r r r8 cis8(|
        )d4 r r r8 d8(|
        %195
@@ -306,8 +306,8 @@ violaII = \notes \relative c {
        r[as\p(d,)as']r[a(es)a] |
        [g-. g'-.] as4. as8-. g4 ~ |
        [g8 g-.] as4. as8-. g4 ~ |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [g8 g-.\<] as4. as8-. g4 ~ |
        [g8 g-.] as4. as8-. g4 ~ |
        %210
@@ -350,8 +350,8 @@ violaII = \notes \relative c {
        %240
        f,4 r r2 |
        R1*11 |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        c'4\p\< r r r8 c8(|
        )f4 r r r8 f,8(|
        )es1|
@@ -364,8 +364,8 @@ violaII = \notes \relative c {
        bes2:16\f bes: |
        
        %260
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [as8\p\< f']f4. es8 es4 ~ |
        [es8 as]as4. g8 g4 ~ |
        [g8 f]f4. es8 es4 ~ |
@@ -400,8 +400,8 @@ violaII = \notes \relative c {
        es4-. e-. r2 |
        f4-. g-. r2 |
        %290
-       \property Voice.decrescendoText = "dim."
-       \property Voice.decrescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.decrescendoText = "dim."
+       \property StaffCombineVoice.decrescendoSpanner = "dashed-line"
        as4\> r g r |
        R1 |
        \!c4\p r r2 |
index ffb79d3d959d9db9e1e4ef093f6387389e3ee11d..0116a65afbfb4109d9d6b178e50c32c99a1c6dd0 100644 (file)
@@ -9,28 +9,7 @@ copyright =     "public domain";
 
 \version "1.3.59";
 
-\include "global.ly"
-\include "viola-1.ly"
-\include "viola-2.ly"
-
-violiGroup = \context PianoStaff = violi_group \notes <
-       \context StaffCombineStaff=one {
-               \clef "alto"; 
-               \key es \major;
-               \skip 1*314; 
-               \bar "|."; 
-       }
-       \context StaffCombineStaff=two {
-               \clef "alto"; 
-               \key es \major;
-               \skip 1*314; 
-               \bar "|."; 
-       }
-
-       \context StaffCombineStaff=one \partcombine StaffCombineStaff
-               \context StaffCombineVoice=one \violaI
-               \context StaffCombineVoice=two \violaII
->
+\include "violi.ly"
 
 \score{
        \violiGroup
diff --git a/mutopia/Coriolan/violi.ly b/mutopia/Coriolan/violi.ly
new file mode 100644 (file)
index 0000000..ac753a8
--- /dev/null
@@ -0,0 +1,39 @@
+\header{
+filename =      "violi.ly";
+% %title =      "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
+description =   "";
+composer =      "Ludwig van Beethoven (1770-1827)";
+enteredby =     "JCN";
+copyright =     "public domain";
+}
+
+\version "1.3.59";
+
+\include "global.ly"
+\include "viola-1.ly"
+\include "viola-2.ly"
+
+violiGroup = \context PianoStaff = violi_group \notes <
+       \context StaffCombineStaff=oneVioli {
+               \property StaffCombineStaff.midiInstrument = #"viola"
+               \property StaffCombineStaff.instrument = #"Viola"
+               \property StaffCombineStaff.instr = #"Vla."
+               \clef "alto"; 
+               \key es \major;
+               \skip 1*314; 
+               \bar "|."; 
+       }
+       \context StaffCombineStaff=twoVioli {
+               \property StaffCombineStaff.midiInstrument = #"viola"
+               \property StaffCombineStaff.instrument = #"Viola II"
+               \property StaffCombineStaff.instr = #"Vla. II"
+               \clef "alto"; 
+               \key es \major;
+               \skip 1*314; 
+               \bar "|."; 
+       }
+
+       \context StaffCombineStaff=oneVioli \partcombine StaffCombineStaff
+               \context StaffCombineVoice=one \violaI
+               \context StaffCombineVoice=two \violaII
+>
index 1a07ac60e402c03b8a9d1167c50d90d12e4f5c55..7877ef4c1f9f11d10be737d24e233271f8ecb2ac 100644 (file)
@@ -17,7 +17,7 @@ violoncello = \notes \relative c {
        c'1\ff ~ |
        c |
        f,4-. r r2 |
-       \property Staff.instr = #"Vc.\nCb."
+       \property StaffCombineStaff.instr = #"Vc.\nCb."
        r1 |
        c'1\ff ~ |
        c |
@@ -29,8 +29,8 @@ violoncello = \notes \relative c {
        c4 r4 r2 |
        c4 r4 r2 |
        r1 |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        c'4.\< c8 bes4. bes8 |
 
        %20
@@ -43,8 +43,8 @@ violoncello = \notes \relative c {
 
        %25
        [f-. bes-.][bes()a][a-. es'-.][es()des]|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        bes4.\< bes8 as4. as8 |
        g4 \!g4-.\f r2 |
        R1
@@ -85,8 +85,8 @@ violoncello = \notes \relative c {
 
        %55
        [bes(as'f as][bes as f)bes,~] |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [bes\<(g'es g][bes g es)bes~] |
        [bes(f'd f][bes f d)bes~] |
        [bes(g'es g][bes g es)bes~] |
@@ -107,8 +107,8 @@ violoncello = \notes \relative c {
        %70
        as2\ff g |
        fis d |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [g8\p\<(bes' g bes][d bes g)d~] |
        [d8(a' fis a][d a fis)d] |
        [\!f!8\sf\>(as f as][f g d)g] |
@@ -121,8 +121,8 @@ violoncello = \notes \relative c {
        r4 r8 d d4. d8 |
 
        %80
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        r4 r8 d d4.\< d8 |
        r4 r8 d d4. d8 |
        r4 r8 d d4. d8 |
@@ -198,8 +198,8 @@ violoncello = \notes \relative c {
        [e g b c][des c g e]|
        [f as c des][c des as f]|
        [g bes d es][d es bes g]|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [as\< c d es][f es c as]|
 
        %131
@@ -223,8 +223,8 @@ violoncello = \notes \relative c {
        [g,: bes: c: des:][f,: bes: c: des:]|
        [e,: g: bes: des:][c: e: g: c:]|
        %shared with cello from here on
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [f,8\p\< as c des][es, g b c]|
        [des, f a bes][c, es g as]|
        % uhuh, still 'same as cello';
@@ -284,8 +284,8 @@ violoncello = \notes \relative c {
        %180
        [g(e' c d][g e c )g~] |
        [g(f' d f][g f d )g,~] |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [g\<(e' c d][g e c )g~] |
        [g(d' b d][g d b )g~] |
 
@@ -304,8 +304,8 @@ violoncello = \notes \relative c {
        [a( g' e g][a g e )a,!~] |
 
        %195
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [a8\<( f' d f][a f d )a!~] |
        [a( e' cis e][a e c )g] |
        \!f2\ff e |
@@ -324,8 +324,8 @@ violoncello = \notes \relative c {
        f r fis r |
        g r g r |
        g r g r |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        g r g\< r |
        
        %210
@@ -386,8 +386,8 @@ violoncello = \notes \relative c {
        %250
        )es4 r r r8 es(|
        )b4 r r r8 b(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )c4\< r r r8 c(|
        )f4 r r r8 f,(|
        )es1 |
@@ -400,8 +400,8 @@ violoncello = \notes \relative c {
        bes\f |
 
        %260
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        as4.\p\< as'8 g4. g8 |
        f4. f8 es4. es8 |
        as4. as8 g4. g8 |
@@ -444,8 +444,8 @@ violoncello = \notes \relative c {
        f,4-. g-. r2 |
 
        %290
-       \property Voice.decrescendoText = "dim."
-       \property Voice.decrescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.decrescendoText = "dim."
+       \property StaffCombineVoice.decrescendoSpanner = "dashed-line"
        as4\> r b r |
        R1 |
        \!c4\p r r2|
@@ -457,8 +457,8 @@ violoncello = \notes \relative c {
        c4 r r2 |
        [c8-.-"arco" es-.][es()d][d-. as'-.][as()g] |
        R1
-       \property Voice.decrescendoText = "sempre pi\\`u piano"
-       \property Voice.decrescendoSpanner = ""
+       \property StaffCombineVoice.decrescendoText = "sempre pi\\`u piano"
+       \property StaffCombineVoice.decrescendoSpanner = ""
        \times 2/3 {  c,4\> ( es c ~ } \times 2/3 {  c as' )g } |
 
        %300
@@ -482,15 +482,3 @@ violoncello = \notes \relative c {
        c4 r r2 |
        c4 r r2 |
 }
-
-%%%violoncelloStaff = \context Staff = violoncello <
-%%%    \property Staff.midiInstrument = #"cello"
-%%%    \property Staff.instrument = #"Violoncello\ne\nContrabasso"
-%%%    \property Staff.instr = #"Vc."
-%%%    \clef "bass";
-%%%    \notes \context Voice=one< 
-%%%            \global
-%%%            \violoncello
-%%%    >
-%%%>
-
index 28c1bec72b506d4fc33e2fbb1320d9f835e08ebd..469cc1e3fea762aa7a3c828f15bc9f389731fd58 100644 (file)
@@ -42,7 +42,8 @@
     (before-line-breaking-callback . ,Beam::before_line_breaking)
     (after-line-breaking-callback . ,Beam::after_line_breaking)
     (default-neutral-direction . 1)
-    
+    (outer-stem-length-limit . 0.2)
+    (slope-limit . 0.2)
     (beam-flag-width-function . ,default-beam-flag-width-function)
     (beam-space-function . ,default-beam-space-function)
     (damping . 1)
index befcda71bce6c7355f507973609a3fe5f7d884c8..6de64074616b6fdc052417bc852406fdf6f46b1b 100644 (file)
        )
   )    
 
+(define generic-bar-number-properties
+  (cons 'bar-number-interface
+       (list
+        (list 'barNumberScriptPadding number? 'padding)
+        (list 'barNumberDirection dir? 'direction)      
+        )
+       
+       )
+  )
+
+  
 ; don't do this yet. Depends on whennn the staff is really announced
 (define generic-staff-symbol-properties
   (cons 'staff-symbol-interface
index b322842de80381307c4b916f1c5a671f8be56b89..e4e80e262d50d7be0c2dda1d1ee6723fea100735 100644 (file)
@@ -237,7 +237,7 @@ Options:
 
 (define (get-font name)
   ;; urg
-  (if (equal? name "as-dummy")
+  (if (equal? (substring name 0 (min (string-length name) 8)) "as-dummy")
       (get-font "default")
       (let ((entry (assoc name fonts)))
           (if entry
@@ -334,7 +334,7 @@ Options:
 
 (define (load-font name mag)
   ;; urg: don't load dummy font
-  (if (not (equal? name "as-dummy"))
+  (if (not (equal? (substring name 0 (min (string-length name) 8)) "as-dummy"))
       (let ((text (af-gulp-file (string-append name ".af"))))
           (if (< 0 (string-length text))
               (let* ((char-list (cdr 
@@ -375,7 +375,8 @@ Options:
       (begin
        (set! fonts (cons (cons "default" (generate-default-font)) fonts))
        (display "\n" (current-error-port))
-       (if (defined? 'mudelapaperlinewidth)
+       (if (and (defined? 'mudelapaperlinewidth)
+               (> (string->number mudelapaperlinewidth) 0))
           (set! canvas-width 
                 (inexact->exact (string->number mudelapaperlinewidth))))))
   (set! canvas-height height)