]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 0.1.37 release/0.1.37
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Fri, 12 Dec 1997 12:26:08 +0000 (13:26 +0100)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Fri, 12 Dec 1997 12:26:08 +0000 (13:26 +0100)
40 files changed:
AUTHORS.text
Documentation/lilypond.pod
Documentation/mudela-course.doc
Documentation/mudela-man.doc
INSTALL.text
NEWS
TODO
VERSION
bin/make-website.pl
init/feta16.ly
init/feta20.ly
input/font.ly
lily/VERSION
lily/beam-grav.cc
lily/directional-spanner.cc
lily/dynamic-grav.cc
lily/grouping.cc
lily/include/beam-grav.hh
lily/include/lily-proto.hh
lily/include/main.hh
lily/include/slur-grav.hh
lily/include/slur.hh
lily/lookup.cc
lily/main.cc
lily/p-score.cc
lily/score-elem.cc
lily/score-grav.cc
lily/slur-grav.cc
lily/slur.cc
lily/tie.cc
make/lelievijver.lsm
make/lilypond.lsm
make/lilypond.spec
mf/Makefile
mf/README [new file with mode: 0644]
mf/TODO
mf/feta-schrift.mf
tex/feta16.tex
tex/feta20.tex
tex/fetdefs.tex

index 36f05e91fec0b4cf7c2d55ef2773e21f32e4ac1b..d3ff5f02c856084f99b0d7df285bd8fdd2a720e6 100644 (file)
@@ -61,6 +61,6 @@ C\bC\bC\bCO\bO\bO\bON\bN\bN\bNT\bT\bT\bTR\bR\bR\bRI\bI\bI\bIB\bB\bB\bBU\bU\bU\bUT\bT\bT\bTO\bO\bO\bOR\bR\bR\bRS\bS
 
 
 
-25/Nov/97                LilyPond 0.1.36                        1
+25/Nov/97                LilyPond 0.1.37                        1
 
 
index 0dc1ea97ca27b3ab111960d2174d2c4d305f2278..fdee2203875e88b8ad0c517a2227bad8418b73aa 100644 (file)
@@ -61,6 +61,10 @@ Add F<DIRECTORY> to the search path for input files.
 
 Make incompatible mudela version non-fatal.
 
+=item B<--postscript, -p>,
+
+Try to use PostScript where possible.
+
 =back
 
 =head1 FEATURES
index 09f2229bd80c862c12c5f34990fa07c55deb6ff9..f6ab5083eb60a5247942ec8375b3908c283da72d 100644 (file)
@@ -7,6 +7,7 @@
 \usepackage{a4wide}
 \title{Mudela and LilyPond crash course}
 \author{Han-Wen Nienhuys}
+\date{October 20, 1997}
 \def\file#1{{\texttt{#1}}}
 
 \begin{document}
@@ -134,6 +135,8 @@ is used.  The improved version reads thus
 
  
 
+FIXME rewrite starting here.
+
 \begin[verbatim]{mudela}
   \score {
         \melodic {      % {...} is a voice
index 498ba8b756dc85f440c16570da989273114612bb..6dc1cd805f702dbd21d882edf33efaaa7aa4c70c 100644 (file)
@@ -7,6 +7,7 @@
 \usepackage{a4wide}
 \title{GNU LilyPond input format 0.1}
 \author{Han-Wen Nienhuys}
+\date{October 8, 1997}
 
 \begin{document}
 \maketitle
index d5dfe08175fc6b9c7ab68c309d3a44fc4813ed21..4fa1c20dfdc405e5a0bc06aa8130ccb8b2aa6312 100644 (file)
@@ -61,7 +61,7 @@ R\bR\bR\bRU\bU\bU\bUN\bN\bN\bNN\bN\bN\bNI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG
 
 
 
-2/Dec/97                 LilyPond 0.1.36                        1
+2/Dec/97                 LilyPond 0.1.37                        1
 
 
 
@@ -127,7 +127,7 @@ C\bC\bC\bCO\bO\bO\bON\bN\bN\bNF\bF\bF\bFI\bI\bI\bIG\bG\bG\bGU\bU\bU\bUR\bR\bR\bRI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG a\b
 
 
 
-2/Dec/97                 LilyPond 0.1.36                        2
+2/Dec/97                 LilyPond 0.1.37                        2
 
 
 
@@ -193,7 +193,7 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
 
 
 
-2/Dec/97                 LilyPond 0.1.36                        3
+2/Dec/97                 LilyPond 0.1.37                        3
 
 
 
@@ -259,7 +259,7 @@ I\bI\bI\bIN\bN\bN\bNS\bS\bS\bST\bT\bT\bTA\bA\bA\bAL\bL\bL\bLL\bL\bL\bLI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG
 
 
 
-2/Dec/97                 LilyPond 0.1.36                        4
+2/Dec/97                 LilyPond 0.1.37                        4
 
 
 
@@ -325,7 +325,7 @@ R\bR\bR\bRE\bE\bE\bED\bD\bD\bDH\bH\bH\bHA\bA\bA\bAT\bT\bT\bT L\bL\bL\bLI\bI\bI\bIN\bN\bN\bNU\bU\bU\bUX\bX\bX\bX
 
 
 
-2/Dec/97                 LilyPond 0.1.36                        5
+2/Dec/97                 LilyPond 0.1.37                        5
 
 
 
@@ -391,6 +391,6 @@ A\bA\bA\bAU\bU\bU\bUT\bT\bT\bTH\bH\bH\bHO\bO\bO\bOR\bR\bR\bRS\bS\bS\bS
 
 
 
-2/Dec/97                 LilyPond 0.1.36                        6
+2/Dec/97                 LilyPond 0.1.37                        6
 
 
diff --git a/NEWS b/NEWS
index 6c64843b1e6e8ef262fec9b280a64ad63c1a3d8c..5f13289344761aa537d924d833367cecd936ec0a 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,11 +1,16 @@
-pl 36.jcn2
-       - mf numerals beautify: 2, 5, 7
+pl 37
+       - --postscript
+       - don't crash non-fitting grouping (thx, John)
+       - attach unended spanners to a column (thanks John)
+       - bf: unended tie
+       - bf: tie direction
+       - bf: unended slur
 
-pl 36.jcn1
-       - mf numerals:
-         * small numerals wider and fatter
-         * bf: no thinner lines than blot_diameter
-         * several bf's: dims and parameterisations
+pl 36.jcn2
+       - feta: small numerals
+       
+********
+dec 9
 
 pl 36
        - bf: notehead collisions
diff --git a/TODO b/TODO
index 1d54876a950e82fd1a00693945ee98e85b33ede1..4a10ab8b8c8a089eb686aab3928519e260de39a6 100644 (file)
--- a/TODO
+++ b/TODO
@@ -7,10 +7,17 @@ Most of the items are marked in the code as well, with full explanation.
 grep for TODO and ugh/ugr
 
 0.2:
+       * unended beam: [c4
+
+       * output naming:
+       - default to basename[-serialnumber].{midi,tex}
+       
        * handle ^C for tmp/file creation.
 
        * PS for beams.
 
+       * dots & rest collisions.
+
        * add a screenshot to the website. :)
 
        * fix stdin input
diff --git a/VERSION b/VERSION
index 8bba2b5c9f7a052439cfe795cef307653b201cb1..f9754fe8f7498742152166cacdb53712098e4e16 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 TOPLEVEL_MAJOR_VERSION = 0
 TOPLEVEL_MINOR_VERSION = 1
-TOPLEVEL_PATCH_LEVEL = 36
-TOPLEVEL_MY_PATCH_LEVEL = jcn2
+TOPLEVEL_PATCH_LEVEL = 37
+TOPLEVEL_MY_PATCH_LEVEL = 
 
 # use the above to send patches, always empty for released version:
 # please don't move these comments up; the patch should fail if 
index 2f177c29b2e97970acff8dd34b5ec9a53247de10..2159716e965e7f82c4de323c28ea02b98ed683dd 100644 (file)
@@ -297,6 +297,7 @@ sub docxx_update
     print BANNER $ban;
     close BANNER;
     my_system("BANNEROPT=\"-B /tmp/lilybanner.html\" $depth/bin/out/make-docxx");
+    unlink "/tmp/lilybanner.html";
 }
 
 sub do_tar
@@ -313,6 +314,12 @@ sub identify
     print STDERR "This is " . $id_str . "\n";
     
 }
+sub clean_tmp
+{
+    @a = </tmp/gs*>;
+    unlink @a;
+}
+    
 sub main
 {
     identify;
@@ -352,6 +359,7 @@ sub main
     edit_index;
     docxx_update;
     do_tar;
+    clean_tmp;
 }
 
 main;
index 9dcbbef8908e28fa4a7869ca24f86ae6d6ba3f16..303b8a167b84e2ddb846ed2d5cfbeee573f03fda 100644 (file)
@@ -1,5 +1,5 @@
 % Creator: mf-to-table.py version 0.4
-% Automatically generated on Fri Dec 12 01:52:34 1997
+% Automatically generated on Fri Dec 12 11:29:20 1997
 % Do not edit
 % input from out/feta16.log
 % name=\symboltables {
index 6e5c7b2befb0dc7d7a89d03dca868ce9aea46ada..44f58ca163bcd5075710f2c93f4e911e25bcdb8d 100644 (file)
@@ -1,5 +1,5 @@
 % Creator: mf-to-table.py version 0.4
-% Automatically generated on Fri Dec 12 01:52:57 1997
+% Automatically generated on Fri Dec 12 11:29:22 1997
 % Do not edit
 % input from out/feta20.log
 % name=\symboltables {
index c2f1d25ef43a5ba7618631e5d42a4dc2e7443292..f7fc274752bf9fa83aed1a0f9c163203c9afc5ec 100644 (file)
@@ -42,8 +42,10 @@ TestedFeatures =      "This file tests the Feta music-font"
                \meter 4/4;
                \textstyle "finger";
                c4^"1" d^"2" e^"3" f^"4" g^"5"
-               < bes4^"1" e_"2" c_"4" >
-               a'^"0"
+               
+               % Music for the Martians?
+               < bes4^"6" e_"7" c_"8" >
+               a'^"0"_"9"
                
                % ugh, \flageolet is like open, but maybe a perfect circle
                a^\open
index 405b4d4906039febe69e993c5cbac3f2d5bd150f..fe8619c0cccac87081433bbeca174800f56bc6b2 100644 (file)
@@ -1,4 +1,4 @@
 MAJOR_VERSION = 0
 MINOR_VERSION = 1
-PATCH_LEVEL = 36
+PATCH_LEVEL = 37
 MY_PATCH_LEVEL =
index 6df1fc6e7fe6a637ce24920db3e88358dbfbe83f..c86597b17ee769ee151409b8daf3734c1baa406c 100644 (file)
 #include "grouping.hh"
 #include "text-spanner.hh"
 #include "text-def.hh"
+#include "p-col.hh"
 
 Beam_engraver::Beam_engraver()
 {
   span_reqs_drul_[LEFT] = span_reqs_drul_[RIGHT] =0;
   beam_p_ =0;
   current_grouping_p_ =0;
+  plet_spanner_p_ =0;
 }
 
 bool
@@ -53,15 +55,18 @@ Beam_engraver::do_process_requests()
     beam_p_ = new Beam;
     if (span_reqs_drul_[LEFT]->nplet)
       {
-       Text_spanner* t = new Text_spanner();
+       plet_spanner_p_ = new Text_spanner();
        Text_def *defp = new Text_def;
-       t->set_support (beam_p_);
+       plet_spanner_p_->set_support (beam_p_);
+
+       // ugh
+       plet_spanner_p_->set_bounds (LEFT, get_staff_info ().command_pcol_l ());
+       
        defp->align_i_ = 0;
        defp->text_str_ = span_reqs_drul_[LEFT]->nplet;
        defp->style_str_="italic";
-       t->spec_p_  = defp;
-       announce_element (Score_elem_info (t,0));
-       typeset_element (t);
+       plet_spanner_p_->spec_p_  = defp;
+       announce_element (Score_elem_info(plet_spanner_p_,0));
       }
     announce_element (Score_elem_info (beam_p_, span_reqs_drul_[LEFT]));
   }
@@ -70,19 +75,25 @@ Beam_engraver::do_process_requests()
 void
 Beam_engraver::do_pre_move_processing()
 {
-  if (beam_p_ && span_reqs_drul_[RIGHT]) {
-    Rhythmic_grouping const * rg_C = get_staff_info().rhythmic_C_;
-    rg_C->extend (current_grouping_p_->interval());
-    beam_p_->set_grouping (*rg_C, *current_grouping_p_);
-    typeset_element (beam_p_);
-    beam_p_ = 0;
-
-    delete current_grouping_p_;
-    current_grouping_p_ = 0;
-
-    span_reqs_drul_[RIGHT] =
-      span_reqs_drul_[LEFT] = 0;
-  }
+  if (beam_p_ && span_reqs_drul_[RIGHT]) 
+    {
+      Rhythmic_grouping const * rg_C = get_staff_info().rhythmic_C_;
+      rg_C->extend (current_grouping_p_->interval());
+      beam_p_->set_grouping (*rg_C, *current_grouping_p_);
+      typeset_element (beam_p_);
+      beam_p_ = 0;
+
+      delete current_grouping_p_;
+      current_grouping_p_ = 0;
+
+      span_reqs_drul_[RIGHT] =
+       span_reqs_drul_[LEFT] = 0;
+      if (plet_spanner_p_)
+       {
+         typeset_element (plet_spanner_p_);
+         plet_spanner_p_ =0;
+       }
+    }
 }
 
 void
@@ -114,11 +125,23 @@ Beam_engraver::acknowledge_element (Score_elem_info i)
   /*
     TODO: do something sensible if it doesn't fit in the beam.
    */
-  current_grouping_p_->add_child (get_staff_info().time_C_->whole_in_measure_,
-                                 rhythmic_req->duration ());
-  s->flag_i_ = rhythmic_req->duration_.durlog_i_;
-  beam_p_->add (s);
-}
+  Moment start = get_staff_info().time_C_->whole_in_measure_;
 
+  if (!current_grouping_p_->child_fit_b (start))
+    {
+      String s (_("please fix me: Stem at ") 
+               + String(now_moment ()) + _(" does not fit in beam"));
+      if (i.req_l_)
+       i.req_l_->warning(s);
+      else 
+       warning (s);
+    }
+  else
+    {
+      current_grouping_p_->add_child (start, rhythmic_req->duration ());
+      s->flag_i_ = rhythmic_req->duration_.durlog_i_;
+      beam_p_->add (s);
+    }
+}
 IMPLEMENT_IS_TYPE_B1(Beam_engraver, Engraver);
 ADD_THIS_TRANSLATOR(Beam_engraver);
index 62ab05f8b4a240920747f8f0de89c93c05adb3a3..c21d4a274bff8bf420df036c374cb9b4ba4f6f84 100644 (file)
@@ -10,7 +10,7 @@ void
 Directional_spanner::do_pre_processing()
 {
   if (!dir_)
-       set_default_dir();
+    set_default_dir();
 }
 
 Directional_spanner::Directional_spanner()
index 62dec7ba99e8b7a91f224ef8aade51464d2eeed8..b451af045e0a1f9c77f1d398dcbabd0ac214f393 100644 (file)
@@ -132,12 +132,13 @@ Dynamic_engraver::do_removal_processing ()
   if (cresc_p_)
     {
       typeset_element (cresc_p_ );
+      
+      cresc_req_l_->warning (_("unended crescendo"));
       cresc_p_ =0;
     }
   if (to_end_cresc_p_)
     {
       typeset_element (to_end_cresc_p_);
-      cresc_req_l_->warning (_("unended crescendo"));
       to_end_cresc_p_ =0;
     }
   if (dynamic_p_)
index 2c073adc630a708759ff0a13a5ee946dfbe660a9..dfc59748e8ce5f4af4790eb5a7b7a649cb94d89c 100644 (file)
@@ -262,7 +262,6 @@ void
 Rhythmic_grouping::add_child (Moment start, Moment len)
 {
   Moment stop = start+len;
-
   assert (child_fit_b (start));
   children.push (new Rhythmic_grouping (MInterval (start, stop)));
 }
index 81b68adfc19b7edfb3b851a7e34907a25dd551d5..027fd92679433b8de6452cfdf3742acd4b891a2d 100644 (file)
@@ -20,6 +20,7 @@ class Beam_engraver : public Engraver
 {
   Drul_array<Beam_req *> span_reqs_drul_;
   Beam *beam_p_;
+  Text_spanner *plet_spanner_p_;
   Rhythmic_grouping *current_grouping_p_;
 
 public:
index 34059b444780463cbc635499d27b0edc719b47d2..42be8366c2b58a4b942d3067fd4e04e37f3b7586 100644 (file)
@@ -211,6 +211,7 @@ struct Text_gob;
 struct Text_item ;
 struct Text_engraver;
 struct Text_req;
+struct Text_spanner;
 struct Tie;
 struct Tie_engraver;
 struct Tie_req;
index 94ab8c55118e947336d5e3b9188b5d2e0587e0f8..13f3c8fb7baa3e7616c22d843fe51a502791c60b 100644 (file)
@@ -22,6 +22,7 @@ extern Sources* source_l_g;
 extern bool only_midi;
 extern int exit_status_i_;
 extern bool experimental_features_global_b;
+extern bool postscript_global_b;
 
 extern String default_out_fn;
 
index ad57d2443d68768afeee32ef541dc3f3e0d30847..3eb6e182dcc536e4410afd092211d72031a92a8b 100644 (file)
@@ -16,14 +16,15 @@ class Slur_engraver :public Engraver {
   Array<Slur *> slur_l_stack_;
   Array<Slur*> end_slur_l_arr_;
   Direction dir_;
-  /* *************** */
+
 protected:
-  virtual ~Slur_engraver();
+
   virtual bool do_try_request (Request*);
   virtual void do_process_requests();
   virtual void acknowledge_element (Score_elem_info);
   virtual void do_pre_move_processing();
   virtual void do_post_move_processing();
+  virtual void do_removal_processing ();
 public:
   TRANSLATOR_CLONE(Slur_engraver);
   Slur_engraver();
index 083c073e75562f1dfc55f1fa0002486bfcda9c59..07b9093f9c439e2bb939a4fde1d966a98b429e67 100644 (file)
  */
 class Slur : public Bow {
 public:
-    Link_array<Note_column> encompass_arr_;
-    void add (Note_column*);
+  Link_array<Note_column> encompass_arr_;
+  void add (Note_column*);
 protected:
-    virtual void set_default_dir();
-    virtual void do_post_processing();
-    virtual void do_substitute_dependency (Score_elem*, Score_elem*);
-    virtual void do_pre_processing();
-    SCORE_ELEM_CLONE(Slur);
-    DECLARE_MY_RUNTIME_TYPEINFO;
+  virtual void set_default_dir();
+  virtual void do_post_processing();
+  virtual void do_add_processing ();
+  virtual void do_pre_processing ();
+  virtual void do_substitute_dependency (Score_elem*, Score_elem*);
+
+  SCORE_ELEM_CLONE(Slur);
+  DECLARE_MY_RUNTIME_TYPEINFO;
 };
 
 #endif // SLUR_HH
index d2e4c12d9024a0a2ef0faaf411fe823ec9203dd2..8fa26797224dc7681ccbd027b072523c598f1a80 100644 (file)
@@ -159,7 +159,7 @@ Lookup::streepje (int type) const
 Atom
 Lookup::hairpin (Real &wid, bool decresc) const
 {
-  bool embedded_b = experimental_features_global_b;
+  bool embedded_b = postscript_global_b;
   String embed;
   Atom ret;  
   if (embedded_b)
@@ -173,6 +173,12 @@ Lookup::hairpin (Real &wid, bool decresc) const
     }
   else
     {
+      if (wid > 32 * 6 PT)
+       {
+         warning (_("Crescendo too long (") + print_dimen (wid) 
+                  +_( ") shrinking (ugh)"));
+         wid = 32*6 PT;
+       }
       int idx = int (rint (wid / 6 PT));
       if (!idx) idx ++;
       wid = idx*6 PT;
@@ -182,7 +188,6 @@ Lookup::hairpin (Real &wid, bool decresc) const
       Array<String> a;
       a.push (idx);
       ret.tex_ = substitute_args (ret.tex_, a);
-      
     }
   
   ret.dim_.x() = Interval (0,wid);
index f88d3a20af05dafef7970610e0b7d2d4097815dc..897c84daaa20dca1b4ebadfe3d720d996831b4e8 100644 (file)
@@ -24,6 +24,7 @@ static bool version_ignore_b = false;
 Sources* source_l_g = 0;
 bool only_midi = false;
 bool experimental_features_global_b = false;
+bool postscript_global_b = false;
 int exit_status_i_;
 
 void destill_inname (String &name_str_r);
@@ -37,6 +38,7 @@ Long_option_init theopts[] = {
   {1, "init", 'i'},
   {1, "include", 'I'},
   {0, "midi", 'M'},
+  {0, "postscript", 'p'},
   {0, "ignore-version", 'V'},
   {0,0,0}
 };
@@ -58,6 +60,7 @@ usage()
     "  -t, --test             switch on experimental features\n"
     "  -M, --midi             produce midi output only\n"
     "  -V, --ignore-version   ignore mudela version\n"
+    "  -p, --postscript       try to use PostScript\n"
     "\n"
     "GNU LilyPond was compiled with the following settings:\n")
 #ifdef NDEBUG
@@ -187,6 +190,9 @@ main (int argc, char **argv)
        case 'V':
          version_ignore_b = true;
          break;
+       case 'p':
+         postscript_global_b = true;
+         break;
        case 'd':
          set_debug (true);
          break;
index 39ada58c3b21402c6ea95d8a30a9f00315aeb09b..4ca78c5993b9cba8cc81d9c278e4c5537dd9758e 100644 (file)
@@ -211,6 +211,8 @@ Paper_score::tex_output ()
 
   if (experimental_features_global_b)
     tex_out << "\\turnOnExperimentalFeatures%\n";
+  if (postscript_global_b)
+    tex_out << "\\turnOnPostScript%\n";
   super_elem_l_->output_all ();
   tex_out << "\n\\EndLilyPondOutput";
   outputter_l_ = 0;
index 35920338471fd553c9aef3c9303489a3952a3397..beb8797ac9c9fea9946cb43043fd0b524229ca8f 100644 (file)
@@ -135,11 +135,11 @@ void
 Score_elem::calcalute_dependencies (int final, int busy,
                                    Score_elem_method_pointer funcptr)
 {
-   if (status_i_ >= final)
+  if (status_i_ >= final)
     return;
 
-   assert (status_i_!= busy);
-   status_i_= busy;
+  assert (status_i_!= busy);
+  status_i_= busy;
 
   for (int i=0; i < dependency_size(); i++)
     dependency (i)->calcalute_dependencies (final, busy, funcptr);
@@ -157,10 +157,10 @@ Score_elem::calcalute_dependencies (int final, int busy,
 void
 Score_elem::do_brew_molecule () 
 {
-   if (transparent_b_)
+  if (transparent_b_)
     return ;
-   Molecule *output= brew_molecule_p ();
-   pscore_l_->outputter_l_->output_molecule (output, absolute_offset ());
+  Molecule *output= brew_molecule_p ();
+  pscore_l_->outputter_l_->output_molecule (output, absolute_offset ());
 }
 
 /*
@@ -330,9 +330,9 @@ Score_elem::handle_prebroken_dependencies()
        else 
          {
            new_arr.push (it_l->broken_to_drul_[LEFT]);
-             old_arr.push (0);
-             old_arr.push (0);         
-             new_arr.push (it_l->broken_to_drul_[RIGHT]);              
+           old_arr.push (0);
+           old_arr.push (0);           
+           new_arr.push (it_l->broken_to_drul_[RIGHT]);                
          }
     }
   
index c08afae18eab65a34f5fec7cf88d2914fe06856b..e624ac88fec042fcea72efc91d9b8a20255c3fe4 100644 (file)
@@ -127,7 +127,21 @@ Score_engraver::typeset_all()
     {
       Score_elem * elem_p = elem_p_arr_[i];
       if (elem_p->spanner()) 
-         pscore_p_->typeset_unbroken_spanner (elem_p->spanner());
+       {
+         Spanner *s = elem_p->spanner ();
+         pscore_p_->typeset_unbroken_spanner (s);
+
+         /*
+           do something sensible if spanner not 
+           spanned on 2 items.
+          */
+         Direction d = LEFT;
+         do {
+           if (!s->spanned_drul_[d])
+             s->set_bounds(d, command_column_l_);
+         } while ((d *= -1) != LEFT);
+         
+       }
       else 
        {
          Item *item_p = elem_p->item();
index 25b53201be42813825843f9a71776d96f4aa3ffb..732c4bd91d3a00c0a56e493c3d03bfd4b29b0d48 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  slur-reg.cc -- implement Slur_engraver
+  slur-grav.cc -- implement Slur_engraver
 
   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
 */
@@ -36,6 +36,20 @@ Slur_engraver::acknowledge_element (Score_elem_info info)
     }
 }
 
+void
+Slur_engraver::do_removal_processing ()
+{
+  for (int i = 0; i < slur_l_stack_.size(); i++)
+    {
+      typeset_element (slur_l_stack_[i]);
+    }
+  slur_l_stack_.clear ();
+  for (int i=0; i < requests_arr_.size(); i++)
+    {
+      requests_arr_[i]->warning (_("unterminated slur"));
+    }
+}
+
 /*
   abracadabra
   */
@@ -94,13 +108,6 @@ Slur_engraver::do_post_move_processing()
 {
   new_slur_req_l_arr_.clear();
 }
-Slur_engraver::~Slur_engraver()
-{
-  for (int i=0; i < requests_arr_.size(); i++)
-    {
-      requests_arr_[i]->warning (_("unterminated slur"));
-    }
-}
 
 IMPLEMENT_IS_TYPE_B1(Slur_engraver,Engraver);
 ADD_THIS_TRANSLATOR(Slur_engraver);
index aadb9d44b9f393fe25944df636ad854be537e7bd..2597c5e03212c409b7027e6566bc18451034e70d 100644 (file)
@@ -47,12 +47,18 @@ Slur::set_default_dir()
 }
 
 void
-Slur::do_pre_processing()
+Slur::do_add_processing()
 {
   set_bounds(LEFT, encompass_arr_[0]);    
-  set_bounds(RIGHT, encompass_arr_.top());
+  if (encompass_arr_.size () > 1)
+    set_bounds(RIGHT, encompass_arr_.top());
 }
 
+void
+Slur::do_pre_processing ()
+{
+  // don't set directions
+}
 
 void
 Slur::do_substitute_dependency (Score_elem*o, Score_elem*n)
index f7ad34fea4ee8431a1f9b1f7353fecbe315a3849..9418bfb997d8fe9d8f187bafe1c774f866a6ae24 100644 (file)
@@ -18,6 +18,7 @@ Tie::set_head (Direction d, Note_head * head_l)
 {
   assert (!head_l_drul_[d]);
   head_l_drul_[d] = head_l;
+  set_bounds (d, head_l);
 
   add_dependency (head_l);
 }
@@ -29,11 +30,16 @@ Tie::Tie()
   same_pitch_b_ =false;
 }
 
+
+/*
+  ugh: direction of the Tie is more complicated.  See [Ross] p136 and further
+ */
 void
 Tie::set_default_dir()
 {
-  int m= (head_l_drul_[LEFT]->position_i_ + head_l_drul_[RIGHT]->position_i_) /2;
-  dir_ =  (m < 5)? DOWN : UP;  // UGH
+  int m= (head_l_drul_[LEFT]->position_i_ 
+         + head_l_drul_[RIGHT]->position_i_) /2;
+  dir_ =  (m < 0)? DOWN : UP;
 }
 
 void
@@ -42,8 +48,13 @@ Tie::do_add_processing()
   if (!(head_l_drul_[LEFT] && head_l_drul_[RIGHT]))
     warning (_("Lonely tie.. "));
 
-  set_bounds(LEFT,head_l_drul_[LEFT]);
-  set_bounds(RIGHT,head_l_drul_[RIGHT]);
+  Direction d = LEFT;
+  Drul_array<Note_head *> new_head_drul = head_l_drul_;
+  do {
+    if (!head_l_drul_[d])
+      new_head_drul[d] = head_l_drul_[(Direction)-d];
+  } while ((d *= -1) != LEFT);
+  head_l_drul_ = new_head_drul;
 }
 
 void
index 84b6782611dcf25ed425d59e90b4b0aa9153a91e..73b14ff867dd990d678cb93480c5f7bbc10af67f 100644 (file)
@@ -1,7 +1,7 @@
 Begin3
 Titel: LilyPond
-Versie: 0.1.36
-Inschrijf datum: 06DEC97
+Versie: 0.1.37
+Inschrijf datum: 12DEC97
 Beschrijving: LilyPond is de muziek typesetter van het GNU Project.  
                Het programma genereert muziek in zichtbare of 
                hoorbare vorm uit uit een muzikale definitie file: 
@@ -16,8 +16,8 @@ Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
        jan@digicash.com (Jan Nieuwenhuizen)
 Onderhouden door: hanwen@stack.nl (Han-Wen Nienhuys)
 Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
-       395k lilypond-0.1.36.tar.gz 
+       395k lilypond-0.1.37.tar.gz 
 Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/
-       395k lilypond-0.1.36.tar.gz 
+       395k lilypond-0.1.37.tar.gz 
 Copi"eer politie: GPL
 End
index b84e8ddacbaf9ebe00f5c07078609393a016ef69..c57843175c00754aa5b3f375e8c69f6cd70c2802 100644 (file)
@@ -1,7 +1,7 @@
 Begin3
 Title: LilyPond
-Version: 0.1.36
-Entered-date: 06DEC97
+Version: 0.1.37
+Entered-date: 12DEC97
 Description: LilyPond is the GNU Project music typesetter.  The program
                generates visual or auditive output from a music 
                definition file: it can typeset formatted sheet music 
@@ -14,8 +14,8 @@ Author: hanwen@stack.nl (Han-Wen Nienhuys)
        jan@digicash.com (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
-       460k lilypond-0.1.36.tar.gz 
+       460k lilypond-0.1.37.tar.gz 
 Original-site: pcnov095.win.tue.nl /pub/lilypond/development/
-       460k lilypond-0.1.36.tar.gz 
+       460k lilypond-0.1.37.tar.gz 
 Copying-policy: GPL
 End
index d118d7867cd894a1ad43d4b4935bcac2cad87309..e738cfb37f74f6bbc923466d295f5b694ba626ac 100644 (file)
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 0.1.36
+Version: 0.1.37
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.36.tar.gz
+Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.37.tar.gz
 Summary: A program for typesetting music.
 URL: http://www.stack.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@stack.nl>
@@ -33,7 +33,7 @@ make -C Documentation gifs
 make prefix="$RPM_BUILD_ROOT/usr" install
 %files
 %doc Documentation/out/AUTHORS.text Documentation/out/CodingStyle.text Documentation/out/INSTALL.text Documentation/out/MANIFESTO.text Documentation/out/convert-mudela.text Documentation/out/faq.text Documentation/out/gnu-music.text Documentation/out/index.text Documentation/out/internals.text Documentation/out/language.text Documentation/out/lilypond.text Documentation/out/links.text Documentation/out/literature.text Documentation/out/mi2mu.text Documentation/out/mudela-book.text Documentation/out/mutopia.text Documentation/out/other-packages.text BUGS TODO NEWS DEDICATION ANNOUNCE README
-%doc input/beams.ly input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/font.ly input/font20.ly input/gallina.ly input/gallina.tex input/gourlay.ly input/header.ly input/keys.ly input/kortjakje.ly input/multi.ly input/pedal.ly input/rhythm.ly input/scales.ly input/scripts.ly input/scsii-menuetto.ly input/scsii-menuetto.tex input/sleur.ly input/slurs.ly input/standchen-16.ly input/standchen-16.tex input/standchen-20.ly input/standchen-20.tex input/standchen.ly input/toccata-fuga-E.ly input/twinkle-pop.ly input/twinkle.ly input/wtk1-fugue1.ly input/wtk1-fugue2.ly input/wtk1-prelude1.ly Documentation/mudela-course.doc Documentation/mudela-man.doc 
+%doc input/beams.ly input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/font.ly input/font20.ly input/gallina.ly input/gallina.tex input/gourlay.ly input/keys.ly input/kortjakje.ly input/multi.ly input/pedal.ly input/rhythm.ly input/scales.ly input/scripts.ly input/scsii-menuetto.ly input/scsii-menuetto.tex input/sleur.ly input/slurs.ly input/standchen-16.ly input/standchen-16.tex input/standchen-20.ly input/standchen-20.tex input/standchen.ly input/toccata-fuga-E.ly input/twinkle-pop.ly input/twinkle.ly input/wtk1-fugue1.ly input/wtk1-fugue2.ly input/wtk1-prelude1.ly Documentation/mudela-course.doc Documentation/mudela-man.doc 
 %doc Documentation/out/lelie_logo.gif
 /usr/bin/convert-mudela
 /usr/bin/mudela-book
index 053730775f474408c070b63b9cfcb39dcee371b9..68ebc72621657f0008ae6bf1197b2905cb12e90b 100644 (file)
@@ -12,7 +12,7 @@ include ./$(depth)/make/Include.make
 # 
 TEXFILES = $(wildcard *.tex)
 MFFILES = $(wildcard *.mf)
-EXTRA_DISTFILES = $(MFFILES) $(TEXFILES) TODO
+EXTRA_DISTFILES = $(MFFILES) $(TEXFILES) TODO README
 #
 
 FONT_FILES = $(wildcard *[0-9].mf)
diff --git a/mf/README b/mf/README
new file mode 100644 (file)
index 0000000..9724af4
--- /dev/null
+++ b/mf/README
@@ -0,0 +1,42 @@
+
+This is a font of music symbols.  All MF sources are original.  The
+symbols are modelled after various editions of music, notably
+
+       - Baerenreiter
+       - Hofmeister
+       - Breitkopf
+       - Durand & C'ie
+
+The best references on Music engraving are [Wanske] and [Ross], some
+of their insights have also been used.  Although a matter of taste,
+I'd say that Baerenreiter has the finest typography of all.
+
+Traditional engraving uses a set of 9 standardised sizes for Staffs
+(running from 0 to 8).  
+
+I tried measuring those (helped by a magnifying glass), and I get the
+staffsizes in the following table.  One should note that these are
+estimates, so I think there could be a measuring error of ~ .5 pt.
+Moreover [Ross] states that not all engravers use exactly those sizes.
+
+Staffsize      Numbers         Name
+
+26.2pt         No. 0
+22.6pt         No. 1           Giant/English
+21.3pt         No. 2           Giant/English
+19.9pt         No. 3           Regular, Ordinary, Common
+19.1pt         No. 4           Peter
+17.1pt         No. 5           Large middle
+15.9pt         No. 6           Small middle
+13.7pt         No. 7           Cadenza
+11.1pt         No. 8           Pearl
+
+
+This table is partially taken from [Ross].  Most music is set in No.3,
+but the papersizes usually are bigger than standard printer paper
+(such as A4).
+
+[Ross] states that the dies (the stamps to make the symbols) come in
+12 different sizes.
+
+
diff --git a/mf/TODO b/mf/TODO
index 05a4bd9e4a60e5f0115a060ee1bc1c38ab6597bc..73738e3a3a4eb5659f247d584469ed95142b0611 100644 (file)
--- a/mf/TODO
+++ b/mf/TODO
@@ -6,14 +6,11 @@
        - lo-res fixes.
        - work out sizes of character fonts.
        - more symbols
-         * some scripts:
+         * some scripts: flageolet
          * piano pedals,
          * trills
          * maxima notehead
          * coda signs.
-         * 0 - 9: 
-           - 4/6pt slanted ?
-           - large(3/4staff) 
        - 128th flags
        - include important spacing dims in fetalog 
 
index 37d551b925aa8fdcca430742f75c7f62c0617415..f97a635d11de5d445081f83e4b120fe14037baff 100644 (file)
@@ -171,9 +171,7 @@ fet_endchar;
 %
 % The down marcato char (not very much used). 
 % Contrary to what some MF/TeX `gurus' believe
-% it is *point*-symmetric with the "up" version; (at least [Chlapik] and 
-% and [Wanske] agree with us)
-%
+% it is *point*-symmetric with the "up" version
 fet_beginchar("marcato down", "dmarcato", "dmarcato")
        draw_marcato;
        xy_mirror_char;
index c3d377ccba46d2efdf0d3aca93e0b7b9f0c397d6..6bfa5aad53e3d06e4c46a746c221465295b6ad50 100644 (file)
@@ -1,5 +1,5 @@
 % Creator: mf-to-table.py version 0.4
-% Automatically generated on Fri Dec 12 01:52:34 1997
+% Automatically generated on Fri Dec 12 11:29:20 1997
 % Do not edit
 % input from out/feta16.log
 % name
index 7f21a9287735e72d1d4fb227329cb2701216333d..5f4b5a3f404d611842a3e83cff946eba26a44368 100644 (file)
@@ -1,5 +1,5 @@
 % Creator: mf-to-table.py version 0.4
-% Automatically generated on Fri Dec 12 01:52:57 1997
+% Automatically generated on Fri Dec 12 11:29:22 1997
 % Do not edit
 % input from out/feta20.log
 % name
index 0301959589d47170a077ca4bb2680b6076be347a..85d4121aecfe9e2da87dbf4a9be0b5c7b7eb445b 100644 (file)
@@ -66,7 +66,6 @@
 
 
 
-\def\turnOnExperimentalFeatures{
 
 %
 % WARNING: don't leave blank lines in the PS-code; they are
 %
 
 
+\def\turnOnPostScript{
+\def\embeddedps##1{
+        %
+        % This sets CTM so that you get to the currentpoint
+        % by executing a 0 0 moveto
+        \special{ps: @beginspecial @setspecial ##1 @endspecial}       
+}
 \special{ps:
 /draw_decresc
         {
         }
         def
 }
+}
 
-
+\def\turnOnExperimentalFeatures{
 % draw a slur in embedded postscript
 \special{ps:
 /xbow 1 3 div def
 }
 
 \def\embeddedtex#1{#1}
-\def\embeddedps#1{
-        %
-        % This sets CTM so that you get to the currentpoint
-        % by executing a 0 0 moveto
-        \special{ps: @beginspecial @setspecial #1 @endspecial}       
-}
+
 \def\embeddedmf#1{
         \edef\embedid{feta-sleur-\number\embedcount}
         \immediate\openout\embedfile=\embedid.mf