]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.1.26
authorfred <fred>
Tue, 26 Mar 2002 21:46:37 +0000 (21:46 +0000)
committerfred <fred>
Tue, 26 Mar 2002 21:46:37 +0000 (21:46 +0000)
56 files changed:
NEWS
TODO
VERSION
buildscripts/set-lily.sh
input/test/auto-staff-switch.ly [new file with mode: 0644]
input/test/extra-staff.ly [new file with mode: 0644]
lily/bar-script-engraver.cc
lily/clef-engraver.cc
lily/clef-item.cc
lily/g-staff-side.cc
lily/include/clef-engraver.hh
lily/include/interpretation-context-handle.hh [new file with mode: 0644]
lily/include/music-iterator.hh
lily/include/translator-group.hh
lily/include/translator.hh
lily/include/volta-spanner.hh
lily/interpretation-context-handle.cc [new file with mode: 0644]
lily/lexer.ll
lily/lookup.cc
lily/music-iterator.cc
lily/note.cc
lily/parser.yy
lily/repeat-engraver.cc
lily/scores.cc
lily/staff-margin-engraver.cc
lily/staff-switching-translator.cc [new file with mode: 0644]
lily/stem-engraver.cc
lily/translator-group.cc
lily/translator.cc
lily/volta-spanner.cc
ly/declarations.ly
ly/params.ly
make/lilypond.spec.in
make/toplevel.make.in
mf/TODO
mf/feta-generic.mf
mf/feta-nummer.mf
mf/feta-timesig.mf
mudela-mode.el
mutopia/Coriolan/GNUmakefile
mutopia/J.S.Bach/Solo-Cello-Suites/GNUmakefile
mutopia/J.S.Bach/Solo-Cello-Suites/allemande-cello.ly
mutopia/J.S.Bach/Solo-Cello-Suites/allemande-viola.ly
mutopia/J.S.Bach/Solo-Cello-Suites/courante-cello.ly
mutopia/J.S.Bach/Solo-Cello-Suites/courante-viola.ly
mutopia/J.S.Bach/Solo-Cello-Suites/gigue-cello.ly
mutopia/J.S.Bach/Solo-Cello-Suites/gigue-viola.ly
mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly
mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-viola.ly
mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-cello.ly
mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-viola.ly
mutopia/J.S.Bach/Solo-Cello-Suites/scs-paper.ly
ps/lily.ps
scm/lily.scm
tex/dyndefs.tex
tex/lily-ps-defs.tex

diff --git a/NEWS b/NEWS
index d182cc1488791ce844a6da72bbe5943136da2439..cb1223de2cb728da3aa4d7e3c39f000d6f57cc57 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,27 @@
+25.jcn2
+       - bf: staffside axis init
+       - bf: staffmargin stuff.
+       - Timesig C fixes
+
+
+pl 25.uu2
+       - junked Scarlatti clef
+       - fixed clef^8
+       - Interpretation_context_handle is interface to interpretation context 
+       - Staff_switching_translator: automatic staff switching for Piano staffs.
+
+pl25.jcn1
+       - volta-spanner: junked dot_p_; not so handy after all: kerning??
+       - feta-nummer: added : ,-.
+       - volta/tuplet thickness
+       - bf: scs-paper
+       - bf: ".|", and bar-thicknesses
+
+pl 25.uu1
+       - bf: default duration is 4
+
+**********
+pl 25
 
 pl 23.ms2
        - property noteheadStyle
diff --git a/TODO b/TODO
index 6fa02b569fd0b009a6366d629a7ffd49def2a6c1..05425d7e6e86597c1fa6e1cc67f775b6ee9c4bb9 100644 (file)
--- a/TODO
+++ b/TODO
@@ -7,6 +7,38 @@ done, or is an idea that I want to think about
 Most of the items are marked in the code as well, with full explanation. 
 grep for TODO and ugh/ugr/urg
 
+*In a piece such as the Zipoli piece in mutopia/... there is a stray
+`8' over every bar line when processed by LilyPond 1.1.25.
+
+TODO before 1.2
+
+       * junk Text_def, use G_text_item in stead.
+
+       * junk Script_def
+
+       * fix partial measures in meaningful way.
+
+       * fix AFM for BlueSky AFM files.
+
+       * working notehead style.
+
+       * add scripts to bars eg.  |^"bla" 
+
+       * relative mode for mi2mu
+
+       * uniformise recent feta contributions.
+       - use SCM and Molecules for {accordeon stuff, }
+       - bigger and fatter 4/4 C
+
+       * make a SMOB of Atom and Molecule
+
+       * use kerning for dynamics.
+
+       * sort out directory stuff.
+       - --prefix option?
+       - -I option per filetype?
+       - kpathsea?
+
 **************
 I also found a few bugs:
 
@@ -14,25 +46,99 @@ I also found a few bugs:
   don't work. The problem seems to be that you can't define a 
   a score identifier and then use it in the \score block.
 
-* Instrument names in the margin. Example: 
-  input/test/hara-kiri.ly. The text should of course
-  be to the left of the staff lines.
-**************
 
-- Textual scripts and dynamics are printed in the middle of the staff.
+       - make separate MF chars for endings of ledger lines, and calc rest of lines.
 
-       * fix AFM for BlueSky AFM files.
+       * support_l_arr_ empty in staff-margin's G_staff_side_item
 
-- I didn't find any working example of the Staff_margin-engraver in 
-  input/test, and I couldn't invent one myself either. 
-  bar-scripts.ly, score-bar-scripts.ly and hara-kiri.ly don't work
-  properly.
 
-       * check widths of TFM, something's wrong here. 
+************
 
-       * hang Item on Spanner
+How can I specify a chord whose duration is longer than a whole note?
 
-       * junk Text_def, use G_text_item in stead.
+ \type ChordNames { \chord{ A1*2-min } }
+
+gives me a parse error.  And \times doesn't work either.  I can't use
+a spacer note.  So it seems to be impossible to have long chords of
+general length.  Of course, in the example above I can use \breve.
+But what if I want a chord that lasts for 3 whole notes?  Or what
+about 2.5 whole notes?  Is there a mechanism for getting this kind of
+length?  
+
+
+Why does my second extender request get junked in the following:
+
+\score{
+< \notes \relative c''{ 
+     a4()b()c()d c()d()b()a }
+   \type Lyrics \lyrics {
+     foo1 __  bar2. __ _4 }
+> }
+
+It seems that \cr and \decr don't work any more.  
+
+\score{
+  \notes{
+    a \cr b \rc c }
+  \paper{linewidth=-1.;}
+}
+
+Gives me 
+
+qq.ly:3:9: warning: can't find (de)crescendo to end:
+    a \cr
+          b \rc c }
+
+
+
+Use of semicolons is still rather confusing.  They are obligatory
+after some types of assignments and illegal after others.  
+
+  \property foo=bar               illegal
+  foo = 3 at top level            illegal
+  foo = 3 inside \paper           obligatory               
+  foo = \notes{ ...} top level    illegal
+  foo = \translator{ } in \paper  obligatory
+
+As far as I can tell, the sole accomplishment of this syntactic
+irregularity is to keep the user as confused as possible.  
+
+
+I was trying to get interstaff beams to work and did this:
+
+\score{
+\type GrandStaff <
+\type Staff=one \notes\relative c'{
+  \stemup
+  [c8 c \translator Staff=two \stemup c c]
+  \translator Staff=one
+  \stemdown 
+  [ b8 \translator Staff=two a8]
+  \translator Staff=one 
+  c4 
+  }
+\type Staff=two \notes{ \clef bass; s1 }
+>
+\paper{
+               \translator{
+                       \GrandStaffContext
+                       minVerticalAlign = 3.0*\staffheight;
+                       maxVerticalAlign = 3.0*\staffheight;
+               }
+  linewidth = -1.;
+}
+}
+
+The beams are at the right angle, but they aren't in the right place.
+
+
+
+*******************
+
+
+       * fractional chord durs.
+
+       * hang Item on Spanner
 
        * remove Interval dim_ from Dimension_cache and rename the struct.
 
@@ -40,14 +146,10 @@ I also found a few bugs:
 
        * convert-mudela --output
 
-       * staff_margin (with a partial measure.)
+       * Staff_margin (with a partial measure.)
 
        * fix "I've been drinking too much"
 
-       * add scripts to bars eg.  |^"bla" 
-
-       * fix Staff_margin_engraver.
-
        * fix pletvisibility properties:
          - bracket on/off/no-bracket-when-beam
          - num on/off/no-num-when-beam
@@ -60,8 +162,6 @@ I also found a few bugs:
 
        * fix convert-mudela manpage
 
-       * automatic staff selection.
-
        * decimal point in \paper {}
 
        *{  \voiceone <a'4.*2/3  d''4.*2/3 fis''4.*2/3>  [g''8 fis'' e''] d''4 |}
@@ -157,8 +257,6 @@ BUGS:
        portato= \script { "portato" 0 -1 0 1 0 }
 
 STUFF
-       * uniformise recent feta contributions.
-
        * check out legal/(c) matters for scores.
 
        * check out GCC signatures?
@@ -208,8 +306,6 @@ STUFF
 
        * $DEPENDENCIES_OUTPUT support
 
-       * fix weird behaviour when .AFMs/.SCMs not found.
-
        * Xdvi zooming ?! Try to understand GS garbage collection.
                gs: Error: /undefined in draw_beam
                gs: Operand stack:
@@ -770,3 +866,48 @@ if you just sit there."
              --Will Rogers (1879-1935)
 
 ***************************
+
+> I am still muddling along with integrating GUILE in LilyPond, and I
+> have a question.  I want to replace an existing C++ implementation of
+> identifier tables by GUILE's code.  I've managed to replace
+> 
+>      Hash_table<String,Identifier*>
+> 
+> by
+> 
+>      Hash_table<SCM, Identifier*>
+> 
+> and use interning and GUILE symbols for doing the identifier lookup.
+> But I'd like to use GUILE's hash tables as well, and that's were my
+> question comes in: is there an interface that allows me to iterate
+> through the entries of a GUILE hash table?
+
+I use the following, which should definitely be provided somewhere
+in guile, but isn't, AFAIK:
+
+(define (hash-table-for-each fn ht)
+  (do ((i 0 (+ 1 i)))
+      ((= i (vector-length ht)))
+    (do ((alist (vector-ref ht i) (cdr alist)))
+       ((null? alist) #t)
+      (fn (car (car alist)) (cdr (car alist))))))
+
+(define (hash-table-map fn ht)
+  (do ((i 0 (+ 1 i))
+       (ret-ls '()))
+      ((= i (vector-length ht)) (reverse ret-ls))
+    (do ((alist (vector-ref ht i) (cdr alist)))
+       ((null? alist) #t)
+      (set! ret-ls (cons (fn (car (car alist)) (cdr (car alist))) ret-ls)))))
+
+If you want a C version, you can run the above code through hobbit, or
+tranlate it to C by hand.
+
+-russ
+
+
+--
+"Whenever you find yourself on the side of the majority, it is time to
+pause and reflect."
+             -- Mark Twain
+***********************
diff --git a/VERSION b/VERSION
index 29658f68d27f264919ba3b6070d94aba991c93b6..7f47bf5c61f874be33af31953c34dd226ab7e847 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=1
-PATCH_LEVEL=25
+PATCH_LEVEL=26
 MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
index f819163aa5204a3f9588d03ad32d4dbe4bf27a6e..39833eb7c07550362c0934f32cb0a2eb19fd8b7d 100644 (file)
@@ -48,6 +48,8 @@ ln -sf $LILYPOND_SOURCEDIR/scripts/out/mudela-book $prefix/bin/mudela-book
 chmod 755 $LILYPOND_SOURCEDIR/buildscripts/ps-to-gifs.sh
 ln -sf $LILYPOND_SOURCEDIR/buildscripts/ps-to-gifs.sh $prefix/bin/ps-to-gifs
 ln -sf $LILYPOND_SOURCEDIR/mf/out/ afm
+TFMDIR=`kpsewhich cmr10.tfm`
+ln -sf `dirname $TFMDIR` tfm
 mkdir -p $prefix/share/
 ln -sf $prefix/lilypond/ $sources/lilypond
 
diff --git a/input/test/auto-staff-switch.ly b/input/test/auto-staff-switch.ly
new file mode 100644 (file)
index 0000000..dfb2781
--- /dev/null
@@ -0,0 +1,32 @@
+
+\score  {
+\notes {
+       \type AutoSwitchGrandStaff \relative c' {
+       c8^8 d^8 b^8 a^8 [a,^8 f'^8 g,^8 ~ g]
+
+       }
+}
+
+\paper {
+\translator { \ScoreContext
+\accepts AutoSwitchGrandStaff;
+}
+\translator{
+       \type "Line_group_engraver_group";
+       \name AutoSwitchGrandStaff;
+       \consists "Span_bar_engraver";
+       \consists "Vertical_align_engraver";
+       \consists "Piano_bar_engraver";
+       minVerticalAlign = 2.*\staffheight;
+       maxVerticalAlign = 2.*\staffheight;     
+
+       \accepts "AutoSwitchContext";
+       \accepts "Staff";
+}
+\translator {
+       \type "Engraver_group_engraver";
+       \name "AutoSwitchContext";
+       \consists "Staff_switching_translator";
+}
+
+}}
diff --git a/input/test/extra-staff.ly b/input/test/extra-staff.ly
new file mode 100644 (file)
index 0000000..49a0e0e
--- /dev/null
@@ -0,0 +1,44 @@
+%{
+(Message vers:9)
+To: Adrian Mariano <adrian@cam.cornell.edu>
+cc: gnu-music-discuss@gnu.org
+Subject: Re: Switching from one staff to two staffs 
+Reply-To: janneke@gnu.org
+In-reply-to: Your message of "Tue, 19 Jan 1999 12:27:10 EST."
+             <199901191727.MAA29757@avalanche.cam.cornell.edu> 
+Date: Wed, 20 Jan 1999 09:39:22 +0100
+From: Jan Nieuwenhuizen <jan@beavis-nt>
+
+On Tuesday, 19 January 1999, Adrian Mariano writes:
+
+> I want to typeset something which starts out with just one staff and then
+> harmony comes in and there are two staffs.  I can't figure out how to do
+> this.  I get an extra blank staff during the second section (using
+> Lily 1.1.15):
+
+There used to be an example called 'multi.ly'...
+Try this (we'll include it in pl23/24):
+
+extra-staff.ly:
+%}
+
+\score {
+       <
+               \type Staff=i \notes\relative c''{ c1 c c c c }
+               \type StaffGroup=ii \notes\relative c''{ 
+                       \type Staff=ii
+                       c1 c
+                       < \type Staff=ii { c1 } \type Staff=iii { c1 } >
+                       c
+               }
+       >
+       \paper {
+               linewidth = -1.;
+               \translator{
+                       \ScoreContext
+                       minVerticalAlign = 2.0*\staffheight;
+                       maxVerticalAlign = 2.0*\staffheight;
+               }
+       }
+}
+
index 51cbfec3b917ee946b93c49989fc7587baa35116..cf741641df458873b038d39cd12d19d70439427f 100644 (file)
@@ -39,7 +39,9 @@ Bar_script_engraver::acknowledge_element (Score_element_info i)
       if (i.origin_grav_l_arr_.size () == 1)
        {
          staff_side_p_->dim_cache_[other_axis].parent_l_ =  &bar_l->dim_cache_[other_axis];
+         //      staff_side_p_->dim_cache_[axis_].parent_l_ =  &bar_l->dim_cache_[axis_];        
          staff_side_p_->add_support (i.elem_l_);
+         bar_l->add_dependency (staff_side_p_); // UGH. 
        }
     }
 }
index 737f4ff4ff0fb70f51e77d9c0667dddf3f8d41de..4c1588e7b992435a97ac462b2da7cf362d4f62f1 100644 (file)
@@ -4,6 +4,7 @@
   source file of the GNU LilyPond music typesetter
 
   (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>,
+
   Mats Bengtsson <matsb@s3.kth.se>
 */
 
@@ -20,6 +21,7 @@
 
 Clef_engraver::Clef_engraver()
 {
+  clef_p_ = 0;
   clef_req_l_ = 0;
   clef_type_str_ = "";
   c0_position_i_ = 0;
@@ -27,6 +29,9 @@ Clef_engraver::Clef_engraver()
   octave_dir_ = CENTER;
 }
 
+/*
+  ugh.  Should be configurable.
+ */
 struct Clef_settings {
   char const *name;
   char const *cleftype;
@@ -36,7 +41,6 @@ struct Clef_settings {
   {"violin", "treble", -2},
   {"G", "treble", -2},
   {"G2", "treble", -2},  
-  {"scarlatti", "scarlatti", 0 },
   {"french", "treble",-4 },
   {"soprano", "alto",-4 },
   {"mezzosoprano", "alto",-2 },
@@ -50,12 +54,6 @@ struct Clef_settings {
   {0,0,0}
 };
 
-
-
-
-/*
-  Ugh.  Should have support for Dictionaries in mudela.
- */
 bool
 Clef_engraver::set_type (String s)
 {
@@ -82,6 +80,7 @@ Clef_engraver::set_type (String s)
          found = 1;
        }
       }
+
   if (!found)
     {
       switch(toupper (s[0]))
@@ -107,8 +106,6 @@ Clef_engraver::set_type (String s)
     c0_position_i_ = clef_position_i_;
   else if (clef_type_str_ == "bass")
     c0_position_i_ = clef_position_i_ + 4;
-  else if (clef_type_str_ == "scarlatti")
-    c0_position_i_ = 0;
   else
     assert (false);
       
@@ -117,13 +114,6 @@ Clef_engraver::set_type (String s)
   return true;
 }
 
-void
-Clef_engraver::read_req (Clef_change_req*c_l)
-{
-  if (!set_type (c_l->clef_str_))
-    c_l->error (_ ("unknown clef type "));
-}
-
 
 /** 
   Generate a clef at the start of a measure. (when you see a Bar,
@@ -137,11 +127,7 @@ Clef_engraver::acknowledge_element (Score_element_info info)
     {
       create_clef();
       if (!clef_req_l_)
-       for (int i=0; i < clef_p_arr_.size (); i++)
-         {
-           clef_p_arr_[i]->default_b_ = true;
-         }
-
+       clef_p_->default_b_ = true;
     }
 
   /* ugh; should make Clef_referenced baseclass */
@@ -167,16 +153,15 @@ Clef_engraver::acknowledge_element (Score_element_info info)
 void
 Clef_engraver::do_creation_processing()
 {
-  Scalar def = get_property ("defaultClef", 0);
+  create_default_b_ = true;    // should read property.
+  Scalar def = get_property ("createInitdefaultClef", 0);
   if (def.to_bool ()) // egcs: Scalar to bool is ambiguous
     set_type (def);
   
   if (clef_type_str_.length_i ())
     { 
       create_clef();
-       for (int i=0; i < clef_p_arr_.size (); i++)
-
-           clef_p_arr_[i]->default_b_ = false;
+      clef_p_->default_b_ = false;
     }
 }
 
@@ -186,7 +171,9 @@ Clef_engraver::do_try_music (Music * r_l)
   if (Clef_change_req *cl = dynamic_cast <Clef_change_req *> (r_l))
     {
       clef_req_l_ = cl;
-      read_req (clef_req_l_);
+      if (!set_type (cl->clef_str_))
+       cl->error (_ ("unknown clef type "));
+
       return true;
     }
   else
@@ -197,37 +184,18 @@ Clef_engraver::do_try_music (Music * r_l)
 void
 Clef_engraver::create_clef()
 {
-  if (clef_type_str_ == "scarlatti")
+  if (!clef_p_)
     {
-      while (clef_p_arr_.size () < 2)
-       {
-         Clef_item *ct= new Clef_item;
-         ct->break_priority_i_ =  -2; // UGH
-         announce_element (Score_element_info (ct, clef_req_l_));
-         clef_p_arr_.push (ct);
-       }
-      clef_p_arr_[0]->symbol_ = "treble";
-      clef_p_arr_[0]->y_position_i_ = 4;
-      clef_p_arr_[1]->symbol_ = "bass";
-      clef_p_arr_[1]->y_position_i_ = -4;
+      Clef_item *c= new Clef_item;
+      c->break_priority_i_ = -2; // ugh
+      announce_element (Score_element_info (c, clef_req_l_));
+      clef_p_ = c;
     }
-  else
-    {
-      if (!clef_p_arr_.size ())
-       {
-         Clef_item *c= new Clef_item;
-         c->break_priority_i_ = -2; // ugh
-         announce_element (Score_element_info (c, clef_req_l_));
-         clef_p_arr_.push (c);
-       }
 
-      for (int i=0; i < clef_p_arr_.size (); i++)
-       {
-         clef_p_arr_[i]->symbol_ = clef_type_str_;
-         clef_p_arr_[i]->y_position_i_ = clef_position_i_;
-         clef_p_arr_[i]->octave_dir_ = octave_dir_;
-       }
-    }
+  
+  clef_p_->symbol_ = clef_type_str_;
+  clef_p_->y_position_i_ = clef_position_i_;
+  clef_p_->octave_dir_ = octave_dir_;
 }
 
 
@@ -237,19 +205,27 @@ Clef_engraver::do_process_requests()
   if (clef_req_l_)
     {
       create_clef();
-      for (int i=0; i < clef_p_arr_.size (); i++)
-       clef_p_arr_[i]->default_b_ = false;
+      clef_p_->default_b_ = false;
+    }
+  else if (create_default_b_)
+    {
+      String type = get_property ("defaultClef", 0);
+      set_type (type.length_i () ? type : "treble");
+      create_clef ();
+      clef_p_->default_b_ = false;
+      create_default_b_ =0;
     }
 }
 
 void
 Clef_engraver::do_pre_move_processing()
 {
-  for (int i=0; i <clef_p_arr_.size (); i++)
+  if (clef_p_)
     {
-      typeset_element (clef_p_arr_[i]);
+      typeset_element (clef_p_);
+      clef_p_ =0;
     }
-  clef_p_arr_.clear ();
+  create_default_b_ = false;
 }
 
 void
@@ -261,10 +237,7 @@ Clef_engraver::do_post_move_processing()
 void
 Clef_engraver::do_removal_processing()
 {
-  if (clef_p_arr_.size ())
-    {
-      assert (false);
-    }
+  assert (!clef_p_);
 }
 
 
index a41cb38f27b600b4990c2b2e7ae47e6e435dfff5..5e5fee9cbf1d2e6a1af704c84568d876e3983f05 100644 (file)
@@ -20,15 +20,7 @@ void
 Clef_item::do_pre_processing()
 {
   dim_cache_[Y_AXIS].translate (paper()->internote_f () * y_position_i_);
-  
-  bool b= (break_status_dir() != RIGHT);
-  change_b_ = b;
-
-  if (default_b_)
-    {
-      set_empty(b);
-      transparent_b_ = b;
-    }
+  change_b_ = (break_status_dir() != RIGHT);
 }
 
 /*
@@ -47,22 +39,33 @@ Clef_item::Clef_item()
 void
 Clef_item::do_add_processing ()
 {
-  if (!break_status_dir_       // broken stuff takes care of their own texts
-      && octave_dir_)
+  if (!break_status_dir_)      // broken stuff takes care of their own texts
     {
-      G_text_item *g = new G_text_item;
-      pscore_l_->typeset_element (g);
+      SCM defvis = gh_eval_str ("(lambda (d) (if (= d 1) '(#f . #f) '(#t . #t)))");
+      G_text_item *g =0;
+      if (octave_dir_)
+       {
+         g = new G_text_item;
+         pscore_l_->typeset_element (g);
       
-      g->text_str_ = "8";
-      g->style_str_ = "italic";
-      g->dim_cache_[Y_AXIS].parent_l_ = &dim_cache_[Y_AXIS];
-      g->dim_cache_[X_AXIS].parent_l_ = &dim_cache_[X_AXIS];
-      add_dependency (g);      // just to be sure.
-
-      Real r = do_height ()[octave_dir_] + g->extent (Y_AXIS)[-octave_dir_];
-      g->dim_cache_[Y_AXIS].set_offset (r);
+         g->text_str_ = "8";
+         g->style_str_ = "italic";
+         g->dim_cache_[Y_AXIS].parent_l_ = &dim_cache_[Y_AXIS];
+         g->dim_cache_[X_AXIS].parent_l_ = &dim_cache_[X_AXIS];
+         add_dependency (g);   // just to be sure.
+
+         Real r = do_height ()[octave_dir_] + g->extent (Y_AXIS)[-octave_dir_];
+         g->dim_cache_[Y_AXIS].set_offset (r);
+       }
+      if (default_b_)
+       {
+         visibility_lambda_ = defvis;
+         if (g)
+           g->visibility_lambda_ = defvis;
+       }
     }
 
+
 }
 
 
index 72f952d89f9294367a38cbf573fe95fe77366629..78bd34f7da25e726c1b61fa6a91f6a5c9cb5a7e2 100644 (file)
@@ -15,6 +15,7 @@ G_staff_side_item::G_staff_side_item ()
   to_position_l_ = 0;
   transparent_b_ = true;
   padding_f_ = 0;
+  axis_ = Y_AXIS;
 }
 
 
@@ -40,7 +41,7 @@ G_staff_side_item::set_victim (Score_element *e)
 {
   add_dependency (e);
   to_position_l_ = e;
-  to_position_l_->dim_cache_[Y_AXIS].parent_l_ = &dim_cache_[Y_AXIS];
+  to_position_l_->dim_cache_[axis_].parent_l_ = &dim_cache_[axis_];
 }
 
 void
@@ -63,20 +64,25 @@ G_staff_side_item::do_substitute_dependency (Score_element*o, Score_element*n)
 void
 G_staff_side_item::position_self ()
 {
-  if (!support_l_arr_.size ())
-    return ;
-  
-  Dimension_cache *common = common_group (typecast_array (support_l_arr_, (Graphical_element*)0),
-                                         axis_);
-
   Interval dim;
-  for (int i=0; i < support_l_arr_.size (); i++)
+  Dimension_cache *common = 0;
+  if (support_l_arr_.size ())
     {
-      Score_element * e = support_l_arr_ [i];
-      Real coord = e->relative_coordinate (common, axis_);
-      dim.unite (coord + e->extent (axis_));
+      common = common_group (typecast_array (support_l_arr_, (Graphical_element*)0),
+                            axis_);
+
+      for (int i=0; i < support_l_arr_.size (); i++)
+       {
+         Score_element * e = support_l_arr_ [i];
+         Real coord = e->relative_coordinate (common, axis_);
+         dim.unite (coord + e->extent (axis_));
+       }
+    }
+  else
+    {
+      dim = Interval(0,0);
+      common = dim_cache_[axis_].parent_l_;
     }
-
   Interval sym_dim = to_position_l_->extent (axis_);
   Real off = dim_cache_[axis_].relative_coordinate (common) - padding_f_ * dir_;
   
index 1e877683a22969bed8c2dd0e6136aa55543d60d6..b15736f6feba546013a1a3117ce1b7275999c9f8 100644 (file)
 
 /// where is c-0 in the staff?
 class Clef_engraver : public  Engraver {
-  Link_array<Clef_item> clef_p_arr_;
+  Clef_item * clef_p_;
   Clef_change_req * clef_req_l_;
   void create_clef();
-  void read_req (Clef_change_req*);
   bool set_type (String);
 protected:
   virtual void do_process_requests();
@@ -36,7 +35,7 @@ public:
   int clef_position_i_;
   Direction octave_dir_;
   String clef_type_str_;
-
+  bool create_default_b_;
    
   Clef_engraver();
   
diff --git a/lily/include/interpretation-context-handle.hh b/lily/include/interpretation-context-handle.hh
new file mode 100644 (file)
index 0000000..d990a02
--- /dev/null
@@ -0,0 +1,30 @@
+/*   
+  interpretation-context-handle.hh -- declare  Interpretation_context_handle
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#ifndef INTERPRETATION_CONTEXT_HANDLE_HH
+#define INTERPRETATION_CONTEXT_HANDLE_HH
+#include "lily-proto.hh"
+
+class Interpretation_context_handle
+{
+  Translator_group * report_to_l_;
+  void down ();
+  void up (Translator_group*);
+public:
+  ~Interpretation_context_handle ();
+  Interpretation_context_handle ();
+  void set_translator (Translator_group*);
+  bool try_music (Music *);
+  void operator =(Interpretation_context_handle const&);
+  Interpretation_context_handle (Interpretation_context_handle const&);
+  Translator_group * report_to_l () const;
+};
+
+#endif /* INTERPRETATION_CONTEXT_HANDLE_HH */
+
index 749baac14c741d2258fda04e812423b88c075ab0..f9d6953f9b07da1a1c56b10cce24cca879692bbb 100644 (file)
@@ -15,6 +15,7 @@
 #include "array.hh"
 #include "moment.hh"
 #include "virtual-methods.hh"
+#include "interpretation-context-handle.hh"
 
 /** Walk through music and deliver music to translation units, synced
   in time.  This classa provides both the implementation of the shared
@@ -25,9 +26,7 @@
   construct with one point in musical time.
  */
 class Music_iterator {
-  Array<Translator_group*>report_to_l_arr_;
-  void push_translator (Translator_group*);
-  void pop_translator();
+  Interpretation_context_handle handle_;
 
 protected:
   Music const * music_l_;
index a948fd82dfff2b2b702fa1b666dcc4fd78db379c..959022ac19d99bbceaeaf9bc7330faf787ff2e8c 100644 (file)
@@ -27,14 +27,19 @@ typedef void (Translator::*Const_method_pointer)(void) const;
 class Translator_group : public virtual Translator {
   Array<String> consists_str_arr_;
   Array<String> accepts_str_arr_;
+  Dictionary<Scalar> properties_dict_;
+
+  int iterator_count_;
+  friend class Interpretation_context_handle;
 
 public:
+  Scalar get_property (String type_str, Translator_group  **where_found_l) const;
+  void set_property (String var_name, Scalar value);
+
   Pointer_list<Translator *> trans_p_list_;
   String id_str_;
 
 
-  int iterator_count_;
-
   VIRTUAL_COPY_CONS(Translator);
   
 
index 7671f96aa5f9b2c5703c03c6150a4f8a47541dc7..f089df51b417f464f570999971bb6e25d7dcca74 100644 (file)
@@ -23,7 +23,6 @@
   hierarchically grouped #Translator#s
   */
 class Translator : public Input {
-  Dictionary<Scalar> properties_dict_;
 public:
   Music_output_def * output_def_l_;
   String  type_str_;
@@ -60,10 +59,8 @@ public:
   /**
     ask daddy for a feature
     */
-  Scalar get_property (String type_str, Translator const **where_found_l) const;
-  void set_property (String var_name, Scalar value);
   Music_output_def *output_def_l () const;
-  
+  Scalar get_property (String, Translator_group **) const;
   virtual Moment now_moment () const;  
 
 protected:
index eca97a825215afeade9381e334e1c911873d858e..74f037edaa6cab5e5ed436552f827bb263e55631 100644 (file)
@@ -22,7 +22,6 @@ public:
   void add_column (Bar*);
  
   P<Text_def>  number_p_;
-  P<Text_def>  dot_p_;
   Link_array<Bar> column_arr_;
   Link_array<Note_column> note_column_arr_;
   bool last_b_;
diff --git a/lily/interpretation-context-handle.cc b/lily/interpretation-context-handle.cc
new file mode 100644 (file)
index 0000000..185991b
--- /dev/null
@@ -0,0 +1,73 @@
+/*   
+  interpretation-context-handle.cc --  implement Interpretation_context_handle
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#include "interpretation-context-handle.hh"
+#include "translator-group.hh"
+
+void
+Interpretation_context_handle::up (Translator_group*t)
+{
+  report_to_l_ = t;
+  t->iterator_count_ ++;
+}
+
+void
+Interpretation_context_handle::down()
+{
+  report_to_l_->iterator_count_ --;
+  report_to_l_ = 0;
+}
+
+bool
+Interpretation_context_handle::try_music (Music *m)
+{
+  return  report_to_l_->try_music (m);
+}
+
+Interpretation_context_handle::Interpretation_context_handle (Interpretation_context_handle const&s)
+{
+  report_to_l_ =0;
+  if (s.report_to_l_)
+    up (s.report_to_l_ );
+}
+
+void
+Interpretation_context_handle::operator = (Interpretation_context_handle const &s)
+{
+  set_translator (s.report_to_l_);
+}
+
+void
+Interpretation_context_handle::set_translator (Translator_group*trans)
+{
+  if (report_to_l_ ==trans)
+    return;
+  if (report_to_l_)
+    down ();
+  if (trans)
+    up (trans);
+}
+
+Translator_group*
+Interpretation_context_handle::report_to_l ()const
+{
+  return report_to_l_;
+}
+
+Interpretation_context_handle::Interpretation_context_handle()
+{
+  report_to_l_ =0;
+}
+
+Interpretation_context_handle::~Interpretation_context_handle ()
+{
+  if (report_to_l_)
+    down ();
+}
+
index dc409d288a4b5981a5ba2468a644e105f3c30618..e2de809d0196bf0bbaad96d5c101fc2377963f9f 100644 (file)
@@ -92,7 +92,7 @@ RESTNAME      [rs]
 NOTECOMMAND    \\{A}+
 LYRICS         ({AA}|{TEX})[^0-9 \t\n\f]*
 ESCAPED                [nt\\'"]
-EXTENDER       [_][_]
+EXTENDER       __
 
 %%
 
index 7cc0d6b8a070ea45194e8b5468225c2e5504e035..d63f467384fefdf68143f4066aa3924d4c48da9a 100644 (file)
@@ -73,8 +73,15 @@ Atom
 Lookup::afm_find (String s, bool warn) const
 {
   if (!afm_l_)      
-    ((Lookup*)this)->afm_l_ = all_fonts_global_p->find_afm (font_name_);
-  
+    {
+      Lookup * me =     ((Lookup*)this);
+      me->afm_l_ = all_fonts_global_p->find_afm (font_name_);
+      if (!me->afm_l_)
+       {
+         warning (_f("Can't open `%s'\n", font_name_));
+         warning (_f("Search path %s\n", global_path.str ().ch_C()));
+       }
+    }
   Adobe_font_char_metric m = afm_l_->find_char (s, warn);
 
   Atom a;
@@ -149,8 +156,8 @@ Lookup::bar (String str, Real h) const
     }
   else if (str == ".|")
     {
-      m.add_at_edge (X_AXIS, RIGHT, thick, kern);
-      m.add_at_edge (X_AXIS, RIGHT, thin, 0);
+      m.add_at_edge (X_AXIS, RIGHT, thick, 0);
+      m.add_at_edge (X_AXIS, RIGHT, thin, kern);
     }
   else if (str == ":|")
     {
@@ -166,7 +173,7 @@ Lookup::bar (String str, Real h) const
     }
   else if (str == ":|:")
     {
-      m.add_at_edge (X_AXIS, LEFT, thick,kern/2);
+      m.add_at_edge (X_AXIS, LEFT, thick,thinkern);
       m.add_at_edge (X_AXIS, LEFT, colon,kern);      
       m.add_at_edge (X_AXIS, RIGHT, thick,kern);
       m.add_at_edge (X_AXIS, RIGHT, colon,kern);      
@@ -485,10 +492,18 @@ Atom
 Lookup::plet (Real dy , Real dx, Direction dir) const
 {
   Atom a;
+  SCM thick = ly_symbol ("tuplet_thick");
+  Real t = 0.1 PT;
+  if (paper_l_->scope_p_->elem_b (thick))
+    {
+      t = paper_l_->get_realvar (thick);
+    }
   a.lambda_ = gh_list(ly_symbol ("tuplet"),
                      gh_double2scm (dx),
                      gh_double2scm (dy),
-                     gh_int2scm (dir), SCM_UNDEFINED);
+                     gh_double2scm (t),
+                     gh_int2scm (dir),
+                     SCM_UNDEFINED);
   return a;
 }
 
@@ -534,8 +549,15 @@ Atom
 Lookup::volta (Real w, bool last_b) const
 {
   Atom a;
+  SCM thick = ly_symbol ("volta_thick");
+  Real t = 0.1 PT;
+  if (paper_l_->scope_p_->elem_b (thick))
+    {
+      t = paper_l_->get_realvar (thick);
+    }
   a.lambda_ = gh_list (ly_symbol ("volta"),
                       gh_double2scm (w),
+                      gh_double2scm (t),
                       gh_int2scm (last_b),
                       SCM_UNDEFINED);
 
index 3d22831fbfa9ecec925e97be98e3b583a0144cb4..40f2236f86f19e631142d14c67985573eec04c09 100644 (file)
@@ -57,50 +57,27 @@ Music_iterator::get_req_translator_l()
   return report_to_l();
 }
 
-void
-Music_iterator::push_translator (Translator_group*t)
-{
-  report_to_l_arr_.push (t);
-  t->iterator_count_ ++;
-}
-
-void
-Music_iterator::pop_translator()
-{
-  report_to_l()->iterator_count_ --;
-  assert (report_to_l()->iterator_count_ >=0);
-  report_to_l_arr_.pop();
-}
 
 Translator_group* 
 Music_iterator::report_to_l() const
 {
-  if (! report_to_l_arr_.size())
-    return 0;
-  return report_to_l_arr_.top();
+  return handle_.report_to_l ();
 }
 
 
 void
 Music_iterator::set_translator (Translator_group*trans)
-{   
-  if (report_to_l()==trans)
-    return;
-  if (report_to_l())
-    pop_translator();
-  if (trans)
-    push_translator (trans);
+{
+  handle_.set_translator (trans);
 }
 
 void
 Music_iterator::construct_children()
 {
-
 }
 
 Music_iterator::~Music_iterator()
 {
-  set_translator (0);
 }
 
 Moment
index a32cabab79ce880fc0885d28cee951e35963818b..dda34cb0fd4bd927194a93725dddab55b83e5ef9 100644 (file)
@@ -17,6 +17,9 @@
 
 
 
+/*
+  SHOULD JUNK THIS.
+ */
 String *
 get_scriptdef (char c)
 {
index e8f216ea509181d7cf813c30465284f2e4481fb4..73a7557a4758d7be0d0324e8012df4c010377889 100644 (file)
@@ -482,7 +482,9 @@ translator_spec_body:
                        THIS->parser_error (_("Wrong type for property value"));
 
                delete $4;
-               $$->set_property (*$2, str);
+               /* ugh*/
+               Translator_group * tr = dynamic_cast<Translator_group*>($$);
+               tr->set_property (*$2, str);
        }
        | translator_spec_body NAME STRING ';' {
                $$->type_str_ = *$3;
index 51a657dad4a356d0567039373954e7f07aac9111..ab634c71da15e37d9e1f17629d6ccda180305a19 100644 (file)
@@ -127,7 +127,7 @@ Repeat_engraver::do_process_requests ()
       if (i == alternative_music_arr_.size () - 1)
         v->last_b_ = true;
       Text_def* t = new Text_def;
-      t->text_str_ = to_str (i - bees + 1);
+      t->text_str_ = to_str (i - bees + 1) + ".";
       v->number_p_.set_p (t);
       volta_p_arr_.push (v);
       announce_element (Score_element_info (v, alternative_music_arr_[i]));
index 8ed0c3b163ff3ca97e90d5f28e88c553d7cf1af9..07b2492229bb2b4e573e0cfdfe10d65fa121da82 100644 (file)
@@ -109,6 +109,7 @@ do_one_file (String init_str, String file_str)
   if (init_str.length_i () && global_path.find (init_str).empty_b ())
     {
       warning (_f ("can't find file: `%s\'", init_str));
+      warning (_f ("Search path: %s", global_path.str ().ch_C()));
       return;
     }
   if ((file_str != "-") && global_path.find (file_str).empty_b ())
index 4a24e656a52dda1544eb3901e14ab27a69046d12..3b1301cbb8a59b19cb900079816b6bf700299271 100644 (file)
@@ -10,6 +10,7 @@
 #include "bar.hh"
 #include "time-description.hh"
 #include "g-text-item.hh"
+#include "g-staff-side.hh"
 
 ADD_THIS_TRANSLATOR (Staff_margin_engraver);
 
@@ -48,14 +49,15 @@ Staff_margin_engraver::acknowledge_element (Score_element_info i)
 
   String long_str = get_property ("instrument", 0);
   String str = get_property ("instr", 0);
-  if (now_moment () > Moment (0))
+  if (now_moment () > Moment (0) && str.length_i ())
     long_str = str;
 
-  if (!long_str.empty_b ())
+  if (long_str.empty_b ())
     return;
 
   create_items (0);
   text_p_->text_str_ = long_str;
+  staff_side_p_->dir_ = LEFT;
   Bar_script_engraver::acknowledge_element(i);
 }
 
diff --git a/lily/staff-switching-translator.cc b/lily/staff-switching-translator.cc
new file mode 100644 (file)
index 0000000..ffeda7f
--- /dev/null
@@ -0,0 +1,67 @@
+/*   
+  staff-switching-translator.cc -- implement Staff_switching_translator
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+#include "engraver.hh"
+#include "interpretation-context-handle.hh"
+#include "drul-array.hh"
+#include "engraver-group.hh"
+#include "musical-request.hh"
+
+class Staff_switching_translator : public Engraver
+{
+  Interpretation_context_handle my_voice_;
+  Drul_array<Interpretation_context_handle> staff_handle_drul_;
+protected:
+  virtual bool do_try_music (Music* m);
+  virtual void do_creation_processing ();
+public:
+  Staff_switching_translator ();
+  VIRTUAL_COPY_CONS(Translator);
+};
+
+Staff_switching_translator::Staff_switching_translator ()
+{
+}
+
+void
+Staff_switching_translator::do_creation_processing ()
+{
+  Translator_group * daddy =daddy_grav_l (); // staff switching context
+
+  staff_handle_drul_[UP].set_translator (daddy->daddy_trans_l_ -> find_create_translator_l ("Staff", "upper"));
+  staff_handle_drul_[DOWN].set_translator (daddy->daddy_trans_l_-> find_create_translator_l ("Staff", "lower"));  
+
+
+  staff_handle_drul_[DOWN].report_to_l ()->set_property ("defaultClef", "bass");
+  
+  my_voice_.set_translator (staff_handle_drul_[UP].report_to_l ()->find_create_translator_l ("Voice", daddy->id_str_));
+}
+
+bool
+Staff_switching_translator::do_try_music (Music*m)
+{
+  if (Note_req*nr = dynamic_cast<Note_req*> (m))
+    {
+      Direction staff =  (nr->pitch_.semitone_pitch () >= 0)
+       ? UP
+       : DOWN;
+
+
+      Translator_group * mv = my_voice_.report_to_l ();
+      Translator_group *dest_staff =staff_handle_drul_[staff].report_to_l ();
+      if (mv->daddy_trans_l_  != dest_staff)
+       {
+         mv->daddy_trans_l_->remove_translator_p (mv);
+         dest_staff->add_translator (mv);
+       }
+    }
+  
+  return my_voice_.try_music (m);
+}
+
+ADD_THIS_TRANSLATOR(Staff_switching_translator);
index 07998e448f26573002792eedc9ca4aa622e7b382..47ad3c1e0c47db3882e28526d00354e2b45c52c5 100644 (file)
@@ -14,6 +14,7 @@
 #include "misc.hh"
 #include "abbrev.hh"
 #include "staff-info.hh"
+#include "translator-group.hh"
 
 Stem_engraver::Stem_engraver()
 {
@@ -96,18 +97,18 @@ Stem_engraver::do_pre_move_processing()
          stem_p_->dir_forced_b_ = true;
        }
 
-      Translator const *which;
+      Translator_group const *which;
       prop = get_property ("stemLeftBeamCount", &which);
       if (prop.isnum_b ())
        {
          stem_p_->beams_i_drul_[LEFT] = prop;
-         ((Translator*)which)->set_property ("stemLeftBeamCount", "");
+         ((Translator_group*)which)->set_property ("stemLeftBeamCount", "");
        }
       prop = get_property ("stemRightBeamCount", &which);
       if (prop.isnum_b ())
        {
          stem_p_->beams_i_drul_[RIGHT] = prop;
-         ((Translator*)which)->set_property ("stemRightBeamCount", "");
+         ((Translator_group*)which)->set_property ("stemRightBeamCount", "");
        }
 
 
index 7b59009780d2d600a2ee7090e5d258f4c6526bce..b378cad83a0a5ace7287742686f7dc1210298fdf 100644 (file)
@@ -12,6 +12,7 @@
 #include "debug.hh"
 #include "pcursor.hh"
 #include "rational.hh"
+#include "dictionary-iter.hh"
 
 Translator_group::Translator_group (Translator_group const&s)
   : Translator(s)
@@ -19,6 +20,8 @@ Translator_group::Translator_group (Translator_group const&s)
   consists_str_arr_ = s.consists_str_arr_;
   accepts_str_arr_ = s.accepts_str_arr_;
   iterator_count_ =0;
+  properties_dict_ = s.properties_dict_;
+  
 }
 
 Translator_group::~Translator_group ()
@@ -331,6 +334,10 @@ Translator_group::do_print() const
 #ifndef NPRINT
   if (!check_debug)
     return ;
+  for (Dictionary_iter<Scalar> i (properties_dict_); i.ok (); i++)
+    {
+      DOUT << i.key () << "=" << i.val () << '\n';
+    }
   if (status == ORPHAN)
     {
       DOUT << "consists of: ";
@@ -392,3 +399,27 @@ Translator_group::do_add_processing ()
        add_translator (t->clone ());
     }
 }
+
+Scalar
+Translator_group::get_property (String id, Translator_group  **where_l) const
+{
+  if (properties_dict_.elem_b (id))
+    {
+      if (where_l)
+       *where_l = this;
+      return properties_dict_[id];
+    }
+  
+  if (daddy_trans_l_)
+    return daddy_trans_l_->get_property (id, where_l);
+
+  if (where_l)
+    *where_l = 0;
+  return "";
+}
+
+void
+Translator_group::set_property (String id, Scalar val)
+{
+  properties_dict_[id] = val;
+}
index 1629bf5e560ba481ce9cc9a21d71ae9cd826ab0d..30205ed7fd6e62e8fabd375c1422f8d81e8d37ab 100644 (file)
@@ -10,7 +10,7 @@
 #include "translator.hh"
 #include "debug.hh"
 #include "translator-group.hh"
-#include "dictionary-iter.hh"
+
 #include "rational.hh"
 
 Translator::~Translator ()
@@ -30,7 +30,6 @@ Translator::Translator (Translator const &s)
   status = ORPHAN;
   daddy_trans_l_ =0;
   output_def_l_ = s.output_def_l_;
-  properties_dict_ = s.properties_dict_;
   type_str_ = s.type_str_;
 }
 
@@ -76,10 +75,6 @@ Translator::print () const
   DOUT << classname (this) << " {";
   if (classname (this) != type_str_)
     DOUT << "type = " << type_str_;
-  for (Dictionary_iter<Scalar> i (properties_dict_); i.ok (); i++)
-    {
-      DOUT << i.key () << "=" << i.val () << '\n';
-    }
   do_print ();
   DOUT << "}\n";
 #endif
@@ -154,29 +149,6 @@ Translator::pre_move_processing ()
   status = CREATION_INITED;
 }
 
-Scalar
-Translator::get_property (String id, Translator const **where_l) const
-{
-  if (properties_dict_.elem_b (id))
-    {
-      if (where_l)
-       *where_l = this;
-      return properties_dict_[id];
-    }
-  
-  if (daddy_trans_l_)
-    return daddy_trans_l_->get_property (id, where_l);
-
-  if (where_l)
-    *where_l = 0;
-  return "";
-}
-
-void
-Translator::set_property (String id, Scalar val)
-{
-  properties_dict_[id] = val;
-}
 
 
 Music_output_def *
@@ -184,3 +156,10 @@ Translator::output_def_l () const
 {
   return output_def_l_;
 }
+
+Scalar
+Translator::get_property (String id, Translator_group **where_l) const
+{
+  return daddy_trans_l_->get_property (id, where_l);
+}
+
index 0a376776ac7939d61dad0c94f09556590d12638d..4ce91373f29f9ad32ea91fd1dd52b5f18054a218 100644 (file)
@@ -29,8 +29,6 @@ Volta_spanner::Volta_spanner ()
   visible_b_ = true;
   number_p_.set_p (new Text_def);
   number_p_->align_dir_ = LEFT;
-  dot_p_.set_p (new Text_def);
-  dot_p_->align_dir_ = LEFT;
 }
 
 Molecule*
@@ -50,7 +48,6 @@ Volta_spanner::do_brew_molecule_p () const
   Atom volta (lookup_l ()->volta (w, last_b_));
   Real h = volta.dim_.y ().length ();
   Atom num (number_p_->get_atom (paper (), LEFT));
-  Atom dot (dot_p_->get_atom (paper (), LEFT));
   Real dy = column_arr_.top ()->extent (Y_AXIS) [UP] > 
      column_arr_[0]->extent (Y_AXIS) [UP];
   dy += 2 * h;
@@ -64,14 +61,10 @@ Volta_spanner::do_brew_molecule_p () const
 
   Real gap = num.dim_.x ().length () / 2;
   Offset off (num.dim_.x ().length () + gap, 
-    (h - num.dim_.y ().length ()) / internote_f - gap);
+             h / internote_f - gap);
   num.translate (off);
-  Real dotheight = dot.dim_.y ().length () / 7;
-  off -= Offset (0, dotheight);
-  dot.translate (off);
   mol_p->add_atom (volta);
   mol_p->add_atom (num);
-  mol_p->add_atom (dot);
   mol_p->translate (Offset (0, dy));
   return mol_p;
 }
@@ -86,8 +79,6 @@ Volta_spanner::do_add_processing ()
     }
 
   number_p_->style_str_ = "number-1";
-  dot_p_->text_str_ = ".";
-  dot_p_->style_str_ = "bold";
 }
   
 Interval
index 69b33ac2ce1d4d04dc3217a81f933b89e4e4213a..14c25e424a97cb10f319ad6fbc5a20c84125b0ed 100644 (file)
@@ -28,6 +28,7 @@ left = -1
 right = 1
 up = 1
 down = -1
+
 % zillie spellink?
 center=0
 
@@ -41,5 +42,7 @@ minor = 3
 
 \scmfile "lily.scm";
 
+unusedEntry = \notes { c4 }            % reset default duration
+
 % music = "\melodic\relative c"
 
index 1989c2b2a2dd48b9691b49c6bd60f7339b3101f9..b94c31d875a993981174aaf070bdf67bf8ab0496 100644 (file)
@@ -90,6 +90,8 @@ notewidth = (\quartwidth + \wholewidth) / 2.0;
 % ugh
 barsize = \staffheight;
 rulethickness = \staffline;
+
+% stem should be thinner?
 stemthickness = \staffline;
 
 
@@ -103,11 +105,24 @@ castingalgorithm = \Gourlay;
 
 %{
 Ross. page 151
-%}
+
 bar_kern = 0.5 * \interline;
 bar_thinkern = 0.75 * \interline;
 barthick_thick = 0.5* \interline;
 barthick_thin = 0.1*\interline;
+Can't be, these are ugly!  Changed to old (TeX) values.
+
+% barline should be thicker!
+
+%}
+
+bar_kern = 3.0 * \staffline;
+bar_thinkern = 3.0 * \staffline;
+barthick_thick = 6.0* \staffline;
+barthick_thin = 1.6*\staffline;
+
+tuplet_thick = 1.0*\staffline;
+volta_thick = 1.6*\staffline;
 
 
 \include "engraver.ly";
index 3c0213304a27b8828cb8d2f9c75c0b331d967aad..d2592ab89aa126104a9b6a4946a67c2a97a15609 100644 (file)
@@ -19,9 +19,12 @@ Prereq: tetex
 %build
 ./configure --disable-checking --disable-debugging --enable-printing --prefix=/usr --disable-optimise --enable-shared
 make all
-make -C Documentation info || true
+ln -s /usr/share/texmf/fonts/tfm/public/cm/ tfm
+
+# make -C Documentation info || true
 make htmldoc || true
 
+
 %install
 rm -rf $RPM_BUILD_ROOT
 mkdir -p $RPM_BUILD_ROOT/tmp/lilypond-rpm-doc
@@ -61,7 +64,6 @@ cp buildscripts/out/lilypond-login $RPM_BUILD_ROOT/etc/profile.d/lilypond.csh
 /usr/share/locale/*/LC_MESSAGES/lilypond.mo
 /etc/profile.d/lilypond.*
 
-
 %post
 
 touch /tmp/.lilypond-install
index aefe381a0df6c605082a923c9d22fe80cc71e53d..00fcf03754d4d26c91fbc6496dd275fc48baa381 100644 (file)
@@ -34,3 +34,8 @@ examples:
        $(MAKE) CONFIGSUFFIX='www' -C mutopia WWW
        tar --exclude='*.dvi' --exclude='*.tex' --exclude='*.ps' -czf $(outdir)/examples.tar.gz  `find input mutopia -type d -name 'out-www' -print`
 
+CMR10DIR=$(dir $(shell kpsewhich cmr10.tfm))#ugh! Need kpsewhich
+TEX_TFMDIR=$(CMR10DIR)
+localinstall:
+       mkdir -p $(datadir)
+       ln -s $(TEX_TFMDIR) $(datadir)/tfm
diff --git a/mf/TODO b/mf/TODO
index 999e75eca3de93ea05ba4d1f3ec39470c20d2e98..9ff64e0230cb6a0071718de7ef62fe7ebccf10c0 100644 (file)
--- a/mf/TODO
+++ b/mf/TODO
@@ -1,4 +1,5 @@
        - design macro for penstroke with rounded endings
+       - timesig C: fat yet less curved.  Check out relations. 
        - design decent macro for bulbed endings
        - printer dependencies.
        - y-refpoint for rests should be the 4th staffline (gclef: b')
index 545a44775a65bd22d85d288229ce2b1e71d15efb..df9dc1ee074c59a5b1d8eceec52fa5317b3bc517 100644 (file)
@@ -42,5 +42,5 @@ else:
 %      input feta-schrift;
 %      input feta-schrift;
 %      input feta-haak;
-%      input feta-timesig;
+       input feta-timesig;
 fi
index 66a4649ac17c7d86f3f43dcbb26422834c7758ea..2ca82d771d6d3e85e58fc397836af5c2027e1c09 100644 (file)
@@ -7,7 +7,6 @@
 % (c) 1997, 1998 Jan Nieuwenhuizen <janneke@gnu.org>
 
 fet_begingroup("nummer")
-code := 47;
 
 define_pixels(height,thick,thick,thin,hair,flare);
 define_pixels(foot_top,foot_width);
@@ -81,6 +80,48 @@ def draw_six =
                ..z4l{left}..tension t..z10l{up}..tension t..cycle;
        enddef;
 
+save dot_diam;
+dot_diam# = 7/8flare#;
+define_pixels(dot_diam);
+
+code := 43;
+
+% urg
+fet_beginchar("Numeral comma", ",", "comma")
+       set_char_box(0, dot_diam#, 3/2dot_diam#, dot_diam#);
+       pickup pencircle scaled dot_diam;
+       draw (dot_diam/2,dot_diam/2);
+       z0=(w/3,0);
+       alpha=65;
+        penpos1(thin,alpha+90);
+        z1l=(w/2,-1.5h+hair);
+       z2=(w,h/2);
+       pickup pencircle;
+       filldraw z1l{dir(alpha)}..{up}z2..{z0-z2}z0{right}..{dir(180+alpha)}z1r..cycle;
+       labels(0,1,2);
+       penlabels(1);
+fet_endchar;
+
+fet_beginchar("Numeral dash", "-", "dash")
+       set_char_box(0, height#/3, 0, height#);
+       pickup pencircle scaled thin;
+       lft x1 = -b;
+       rt x2 = w;
+       y1 = y2 = h/3;
+       draw z1 .. z2;
+fet_endchar;
+
+fet_beginchar("Numeral dot", ".", "dot")
+       set_char_box(0, dot_diam#, 0, dot_diam#);
+       pickup pencircle scaled dot_diam;
+       draw (dot_diam/2,dot_diam/2);
+fet_endchar;
+
+
+% skip slash
+
+code := 47;
+
 fet_beginchar("Numeral 0", "0", "zero")
 %      set_char_box(0, 4/5height#*widen, 0, height#);
        set_char_box(0, 11/15height#*widen, 0, height#);
index 7cddd3215d33bdcce5330da3469f96e92342d125..3cb794c58687009060b219966aa9ed0900d0799f 100644 (file)
@@ -9,27 +9,30 @@ fet_begingroup("timesig");
 
 def set_C_width =
        save left_width, right_width;
-       left_width# := .8 interline#;
+       left_width# := 0.9 interline#;
        right_width# := .7 interline#;
        define_pixels(left_width,right_width);
 enddef;
 
 def draw_C =
-       save hair, bulb_rad;
+       save hair, bulb_rad, left_fatness;
+
+  
        hair# := stafflinethickness#;
-       bulb_rad# := interline# / 3;
+       bulb_rad# := 0.4 interline#;
        define_pixels(hair, bulb_rad);
-
-       x1r = x5;
-       y1r = .4 interline;
+       left_fatness = 0.55;
+       
+       x1r = x5r;
+       y1r = .45 interline;
        z2 = (0, interline);
        z3r = (-left_width, 0);
        z4 = (0, -interline);
-       z5r = (right_width, -2 stafflinethickness);
+       z5r = (right_width - stafflinethickness, -0.4 interline);
        
        penpos1(hair, 0);
        penpos2(stafflinethickness, 90);
-       penpos3(4 stafflinethickness, 180);
+       penpos3(left_fatness * interline, 180);
        penpos4(stafflinethickness, -90);
        penpos5(hair, -5);
        
@@ -57,7 +60,11 @@ fet_beginchar ("2/2 meter", "C2/2", "allabreve")
                1.4 interline#, 1.4 interline#);
        
        draw_C;
-       draw_block((-1.5stafflinethickness, -d), (0, h));
+       save excentricity;
+       pair excentricity;
+       excentricity = (-1.25 stafflinethickness, 0);
+
+       draw_block((- .75 stafflinethickness, -d) + excentricity, (.75 stafflinethickness , h) + excentricity);
 fet_endchar;
 
 path threequartercircle;
index d06d48bcda199c259020a23d1bb6456c8c553f3d..6565db77fdb5334e8b363e6b31c34718ec1926fe 100644 (file)
 ;; 
 
 (defconst mudela-font-lock-keywords
-  (let* ((keywords '(
+  (let* ((keywords '("alternative" "repeat"
                     "accepts" "accidentals" "break" "bar" "cadenza" 
-                    "clef" "cm" "consists" "contains" "duration" "absdynamic" 
-                    "in" "translator" "type" "lyric" "key" "maininput" "notes"
+                    "clef" "cm" "consists" "contains" "duration" 
+                    "absdynamic" "scmfile" "lyrics"
+                    "in" "translator" "type" "key" "maininput" "notes"
                     "musical_pitch" "time" "midi" "mm" "header"
                     "notenames" "octave" "output" "partial" "paper" "plet" "name"
                     "property" "pt" "shape" "relative" "include" "score"
index 201e77e30d12947379ca715d6ac45d335aaa68b7..ea6d442405eaa8a9f9a18d07dba912cb8bb23cb1 100644 (file)
@@ -4,7 +4,8 @@ depth = ../..
 
 # do Coriolan if you have plenty RAM / CPU
 #examples=coriolan oboi-part viola-part
-# examples= oboi-part viola-part
+
+examples= coriolan oboi-part viola-part
 
 LOCALSTEPMAKE_TEMPLATES=mutopia
 
index f08adc50298bfbf768ba0b9ca2d7005905f392d9..18e9385e3ff9607bdba4c3fdc6dbcfb2d30252c9 100644 (file)
@@ -4,7 +4,7 @@ depth = ../../..
 
 EXTRA_DIST_FILES=
 
-examples=
+examples=scsii-cello
 LOCALSTEPMAKE_TEMPLATES=mutopia
 
 include $(depth)/make/stepmake.make
index 5206232e4d109cf6df030740fd44e1b1730cc6b4..40ba14ccd477549dd10ead177e2914c709be28aa 100644 (file)
@@ -49,30 +49,10 @@ allemande_cello_staff = \type Staff <
 >
 
 \score{
-%{
-       urg, this breaks auto-beam-engraver?
-       really hairy bug: 1.1.23
-       extra bars get encountered!!
-       \paper{
-               \include "scs-paper.ly";
-               gourlay_maxmeasures = 4.0;
-       }
-%}
        \$allemande_cello_staff
-       % \paper{ \include "scs-paper.ly"; }
        \paper{
-
-               linewidth = 180.\mm;
-               \translator { \BarNumberingStaffContext }
-               \translator{
-                       \VoiceContext
-                       % add experimental auto-beaming
-                       \consists Auto_beam_engraver;
-                       beamAuto = 1.;
-                       beamAutoEnd8 = "1/4";
-                       beamAutoEnd16 = "1/4";
-                       beamAutoEnd32 = "1/4";
-               }
+               \include "scs-paper.ly";
+               gourlay_maxmeasures = 3.0;
        }
        \midi{ \tempo 4 = 45; }
        \header{ piece = "Allemande"; }
index f308a206129ba4f3970bf4ac99857346341ee365..f7474f22d77d186d1f2d91cbed127e2b1c827be9 100644 (file)
@@ -50,18 +50,9 @@ allemande_viola_staff = \type Staff <
 
 \score{
        \$allemande_viola_staff
-%      \include "scs-paper.ly";
        \paper{
-               linewidth = 180.\mm;
-               \translator{
-                       \VoiceContext
-                       % add experimental auto-beaming
-                       \consists Auto_beam_engraver;
-                       beamAuto = 1.;
-                       beamAutoEnd8 = "1/4";
-                       beamAutoEnd16 = "1/4";
-                       beamAutoEnd32 = "1/4";
-               }
+               \include "scs-paper.ly";
+               gourlay_maxmeasures = 3.0;
        }
        \midi{ \tempo 4 = 45; }
        \header{ piece = "Allemande"; }
index 94c9a8d0fab4f2eb03dbb247b2e1f3f10d6f84ab..9b29acde14ddb89250979c2f2c3ae064278e1aaf 100644 (file)
@@ -51,19 +51,9 @@ courante_cello_staff = \type Staff <
 
 \score{
        \$courante_cello_staff
-       % \paper { \include "scs-paper.ly"; }
        \paper{
-               linewidth = 180.\mm;
-               \translator { \BarNumberingStaffContext }
-               \translator{
-                       \VoiceContext
-                       % add experimental auto-beaming
-                       \consists Auto_beam_engraver;
-                       beamAuto = 1.;
-                       beamAutoEnd8 = "1/4";
-                       beamAutoEnd16 = "1/4";
-                       beamAutoEnd32 = "1/4";
-               }
+               \include "scs-paper.ly";
+               gourlay_maxmeasures = 4.0;
        }
        \midi{ \tempo 4 = 55; }
        \header{ piece = "Courante"; }
index b21bcca92acb29395b0c1d8800cff1082a5fccb4..ee0f6c4f9e93dfd08d4aa7995431d64231580226 100644 (file)
@@ -51,19 +51,9 @@ courante_viola_staff = \type Staff <
 
 \score{
        \$courante_viola_staff
-       %\paper { \include "scs-paper.ly"; }
        \paper{
-               linewidth = 180.\mm;
-               \translator { \BarNumberingStaffContext }
-               \translator{
-                       \VoiceContext
-                       % add experimental auto-beaming
-                       \consists Auto_beam_engraver;
-                       beamAuto = 1.;
-                       beamAutoEnd8 = "1/4";
-                       beamAutoEnd16 = "1/4";
-                       beamAutoEnd32 = "1/4";
-               }
+               \include "scs-paper.ly";
+               gourlay_maxmeasures = 4.0;
        }
        \midi{ \tempo 4 = 55; }
        \header{ piece = "Courante"; }
index 8a1feb0b6425efdfe02215830406bc41bfb0288f..32c983c8d28652b4661decff070dfffeb22840b5 100644 (file)
@@ -49,15 +49,11 @@ gigue_cello_staff = \type Staff <
 
 \score{
        \$gigue_cello_staff
-       % \paper { \include "scs-paper.ly"; }
        \paper{
-               linewidth = 180.\mm;
-               \translator { \BarNumberingStaffContext }
+               \include "scs-paper.ly";
+               gourlay_maxmeasures = 7.0;
                \translator{
                        \VoiceContext
-                       % add experimental auto-beaming
-                       \consists Auto_beam_engraver;
-                       beamAuto = 1.;
                        beamAutoEnd8 = "3/4";
                        beamAutoEnd16 = "3/4";
                }
index b52a1c798f88175cdcaed1f7b91fe5ae6f2be304..fbb79b2a0c49897d8fe9d31d3357754523abeae8 100644 (file)
@@ -49,15 +49,11 @@ gigue_viola_staff = \type Staff <
 
 \score{
        \$gigue_viola_staff
-       % \paper { \include "scs-paper.ly"; }
        \paper{
-               linewidth = 180.\mm;
-               \translator { \BarNumberingStaffContext }
+               \include "scs-paper.ly";
+               gourlay_maxmeasures = 7.0;
                \translator{
                        \VoiceContext
-                       % add experimental auto-beaming
-                       \consists Auto_beam_engraver;
-                       beamAuto = 1.;
                        beamAutoEnd8 = "3/4";
                        beamAutoEnd16 = "3/4";
                }
index 78e1b68390e3120885e61d7de743be14ba8fd937..8595daaadea44ec9b73968d7328f28d2503152d6 100644 (file)
@@ -63,15 +63,11 @@ menuetto_i_cello_staff = \type Staff <
 
 \score{
        \$menuetto_i_cello_staff
-       % \paper { \include "scs-paper.ly"; }
        \paper{
-               linewidth = 180.\mm;
-               \translator { \BarNumberingStaffContext }
+               \include "scs-paper.ly";
+               gourlay_maxmeasures = 7.0;
                \translator{
                        \VoiceContext
-                       % add experimental auto-beaming
-                       \consists Auto_beam_engraver;
-                       beamAuto = 1.;
                        beamAutoEnd8 = "3/4";
                }
        }
@@ -102,15 +98,11 @@ menuetto_ii_cello_staff = \type Staff <
 
 \score{
        \$menuetto_ii_cello_staff
-       % \paper { \include "scs-paper.ly"; }
        \paper{
-               linewidth = 180.\mm;
-               \translator { \BarNumberingStaffContext }
+               \include "scs-paper.ly";
+               gourlay_maxmeasures = 7.0;
                \translator{
                        \VoiceContext
-                       % add experimental auto-beaming
-                       \consists Auto_beam_engraver;
-                       beamAuto = 1.;
                        beamAutoEnd8 = "3/4";
                }
        }
index 36bd3e082c385af262f63b625619d6d58a96624c..90267514e0887497af43de8f7d1b2c9e1d3fd7aa 100644 (file)
@@ -63,13 +63,10 @@ menuetto_i_viola_staff = \type Staff <
 \score{
        \$menuetto_i_viola_staff
        \paper{
-               linewidth = 180.\mm;
-               \translator { \BarNumberingStaffContext }
+               \include "scs-paper.ly";
+               gourlay_maxmeasures = 7.0;
                \translator{
                        \VoiceContext
-                       % add experimental auto-beaming
-                       \consists Auto_beam_engraver;
-                       beamAuto = 1.;
                        beamAutoEnd8 = "3/4";
                }
        }
@@ -100,13 +97,10 @@ menuetto_ii_viola_staff = \type Staff <
 \score{
        \$menuetto_ii_viola_staff
        \paper{
-               linewidth = 180.\mm;
-               \translator { \BarNumberingStaffContext }
+               \include "scs-paper.ly";
+               gourlay_maxmeasures = 7.0;
                \translator{
                        \VoiceContext
-                       % add experimental auto-beaming
-                       \consists Auto_beam_engraver;
-                       beamAuto = 1.;
                        beamAutoEnd8 = "3/4";
                }
        }
index 226be714c7dd7ed056ca2bccc5ffec6eaae2b468..9abe3b887eb68108aac5d161afa25dd47b903e69 100644 (file)
@@ -41,19 +41,9 @@ sarabande_cello_staff = \type Staff <
 
 \score{
        \$sarabande_cello_staff
-       % \paper { \include "scs-paper.ly"; }
        \paper{
-               linewidth = 180.\mm;
-               \translator { \BarNumberingStaffContext }
-               \translator{
-                       \VoiceContext
-                       % add experimental auto-beaming
-                       \consists Auto_beam_engraver;
-                       beamAuto = 1.;
-                       beamAutoEnd8 = "1/4";
-                       beamAutoEnd16 = "1/4";
-                       beamAutoEnd32 = "1/4";
-               }
+               \include "scs-paper.ly";
+               gourlay_maxmeasures = 5.0;
        }
        \midi{ \tempo 4 = 40; }
        \header{ piece = "Sarabande"; }
index 7d2004711aa85f97938ccccf101240b491e4f2f1..9c1cea87a657c73927d435409ca28496220b005b 100644 (file)
@@ -41,19 +41,9 @@ sarabande_viola_staff = \type Staff <
 
 \score{
        \$sarabande_viola_staff
-       % \paper { \include "scs-paper.ly"; }
        \paper{
-               linewidth = 180.\mm;
-               \translator { \BarNumberingStaffContext }
-               \translator{
-                       \VoiceContext
-                       % add experimental auto-beaming
-                       \consists Auto_beam_engraver;
-                       beamAuto = 1.;
-                       beamAutoEnd8 = "1/4";
-                       beamAutoEnd16 = "1/4";
-                       beamAutoEnd32 = "1/4";
-               }
+               \include "scs-paper.ly";
+               gourlay_maxmeasures = 5.0;
        }
        \midi{ \tempo 4 = 40; }
        \header{ piece = "Sarabande"; }
index 926571ac475c89eaae201d8494bda2dc1f5f136a..3c909d4daf754f0f6f2023c0160ac3b241b89e5e 100644 (file)
@@ -2,7 +2,7 @@ linewidth = 180.\mm;
 gourlay_maxmeasures = 10.0;
 \translator { \BarNumberingStaffContext }
 \translator {
-       \StaffContext
+       \VoiceContext
        \consists Auto_beam_engraver;
        beamAuto = 1.0;
        beamAutoEnd8 = "1/4";
index 88477154c795641d97d1c0ce78d985fb3ff95931..90735771b948c9c10f8baa98a6bc7b61b1397e8b 100644 (file)
        1 copy mul exch 1 copy mul add sqrt
 } bind def
 
-/draw_tuplet
+/draw_tuplet % dx dy thick dir
 {
-       tuplet_t setlinewidth
 % urg: the only Level-2 PS, check effect in print
 %      true setstrokeadjust
+       /dir exch def
+       setlinewidth
        1 setlinecap
        1 setlinejoin
-       /dir exch def
        /tuplet_dy exch def
        /tuplet_dx exch def
        staffheight 2 div /tuplet_gapx exch def
        stroke
 } bind def
 
-/draw_volta % w last
+/draw_volta % w thick last
 {
        /last exch def
+       setlinewidth
        /volta_w exch def
        staffheight 2 div /volta_h exch def
-       volta_t setlinewidth
 % urg: the only Level-2 PS, check effect in print
 %      true setstrokeadjust
        1 setlinecap
index 7b8db27f8bfa552d36d9366bed71d025082c0af8..c215e827ad32b5840e7dcd039ac302ca687a99c4 100644 (file)
   (define (text f s)
     (string-append "\\set" f "{" (output-tex-string s) "}"))
   
-  (define (tuplet dx dy dir)
-    (embedded-ps ((ps-scm 'tuplet) dx dy dir)))
+  (define (tuplet dx dy thick dir)
+    (embedded-ps ((ps-scm 'tuplet) dx dy thick dir)))
 
-  (define (volta w last)
-    (embedded-ps ((ps-scm 'volta)  w last)))
+  (define (volta w thick last)
+    (embedded-ps ((ps-scm 'volta) w thick last)))
 
   (define (maatstreep h)
     (string-append "\\maatstreep{" (number->dim h) "}"))
     (string-append "(" s ") set" f " "))
 
 
-  (define (volta w last)
+  (define (volta w thick last)
     (string-append 
-     (numbers->string (list w (inexact->exact last)))
+     (numbers->string (list w thick (inexact->exact last)))
      "draw_volta"))
-  (define   (tuplet dx dy dir)
+
+  (define (tuplet dx dy thick dir)
     (string-append 
-     (numbers->string (list dx dy (inexact->exact dir)))
+     (numbers->string (list dx dy thick (inexact->exact dir)))
      "draw_tuplet"))
 
 
index 4032e1351a6089794185dbfba88f0506fac3b329..9ac3dae223574c3753ba7b223c75e82ce62e3feb 100644 (file)
 \def\dynp{{\dyn\dynnp}}
 \def\dynpp{{\dyn\kdynp\dynnp}}
 \def\dynppp{{\dyn\kdynp\kdynp\dynnp}}
+\def\dynpppp{{\dyn\kdynp\kdynp\kdynp\dynnp}}
+\def\dynppppp{{\dyn\kdynp\kdynp\kdynp\kdynp\dynnp}}
+\def\dynpppppp{{\dyn\kdynp\kdynp\kdynp\kdynp\kdynp\dynnp}}
 \def\dynmp{{\dyn\dynmm\kern -0.07em\dynnp}}
 \def\dynmf{{\dyn\dynm\kern -0.14em\dynnf}}
 \def\dynf{{\dyn\dynaf}}
 \def\dynff{{\dyn\kdynf\dynnf}}
 \def\dynfff{{\dyn\kdynf\kdynf\dynnf}}
+\def\dynffff{{\dyn\kdynf\kdynf\kdynf\dynnf}}
+\def\dynfffff{{\dyn\kdynf\kdynf\kdynf\kdynf\dynnf}}
+\def\dynffffff{{\dyn\kdynf\kdynf\kdynf\kdynf\kdynf\dynnf}}
 
 \def\dynfp{{\dyn\dynnf\kern -0.04em\dynnp}}
+\def\dynsp{{\dyn\dyns\kern -0.13em\dynnp}}
+\def\dynspp{{\dyn\dyns\kern -0.13em\kdynp\dynnp}}
 \def\dynsf{{\dyn\dyns\kern -0.13em\dynnf}}
+\def\dynsff{{\dyn\dyns\kern -0.13em\kdynf\dynnf}}
 \def\dynsfz{{\dyn\dynsf\dynz}}
 \def\dynfz{{\dyn\dynnf\dynz}}
 \def\dynrf{{\dyn\dynr\kern -0.1em\dynnf}}
+\def\dynfz{{\dyn\dynr\kern -0.1em\dynnf\dynz}}
 
 \endinput
index 9f60b99b262e4a30b6065f434f7100a343e70dae..57a8108ffe4db20430f2df55cccbcb257f12acad 100644 (file)
@@ -82,8 +82,6 @@ interline 1.5 mul /bracket_v exch def
 bracket_v /bracket_u exch def
 50 /bracket_alpha exch def
 staffheight 4 div /interline exch def
-stafflinethickness 1.2 mul /tuplet_t exch def
-stafflinethickness 2.5 mul /volta_t exch def
 1 setlinecap}
 }