]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.1.23 release/1.1.23
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 19 Jan 1999 16:29:41 +0000 (17:29 +0100)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 19 Jan 1999 16:29:41 +0000 (17:29 +0100)
21 files changed:
NEWS
TODO
VERSION
buildscripts/set-lily.sh
configure
input/bugs/Overture.ly [new file with mode: 0644]
input/test/auto-beam.ly [deleted file]
input/test/star.ly [deleted file]
lily/auto-beam-engraver.cc [deleted file]
lily/beam-engraver.cc
lily/include/auto-beam-engraver.hh [deleted file]
lily/include/beam-engraver.hh
lily/include/lily-proto.hh
make/out/lelievijver.lsm
make/out/lilypond.lsm
make/out/lilypond.spec
mutopia/D.Scarlatti/sonata-k1-l366.ly [new file with mode: 0644]
scripts/mudela-book.py
stepmake/configure
stepmake/make/out/stepmake.lsm
stepmake/make/out/stepmake.spec

diff --git a/NEWS b/NEWS
index c4286c869d694c9bb21a0a4cbec93dbb8cdfafef..766301d266742e26ae84d7d6eef982f72f2a4e9f 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,3 @@
-pl 22.jcn5
-       - auto-beaming v0: input/test/auto-beam.ly
-
 pl 22.jcn4
        - bf's: repeat-engraver; \bar "|:", ":|" now deprecated for repeats
        - bf: :|, |:
@@ -18,7 +15,11 @@ pl 22.jcn2
 pl 22.jcn1
        - bf's: cross-staff slur
        - bf: gnossienne-4
+pl 22.tca1
+       - buxfix, \mudela{ \times 2/3{ ...} } works now
 
+******
+  
 pl 22
        - fixed "already have a Beam" error
 
diff --git a/TODO b/TODO
index 4a5d2ecba5a429a0758c9b765f56cd76718d17e1..0b99e57ba41c1773229d9e21279698398fa1fe1b 100644 (file)
--- a/TODO
+++ b/TODO
@@ -7,6 +7,39 @@ 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
 
+
+* check out PS points vs. LilyPond points (PS = 1/72 inch, LilyPond=1/72.27)
+
+* Instrument names in the margin. Example: 
+  input/test/hara-kiri.ly. The text should of course
+  be to the left of the staff lines.
+
+* There is a bug in pl 22. Try /input/test/slurs.ly and 
+  you will find '#.#' instead of real numbers at some
+  places in the empedded ps code.
+
+* (Annoying but not a bug:) Slurs that are broken at line 
+  breaks often extend too far into the margin, both to the 
+  left and to the right. How do you adjust it?
+
+* SkipBars=0 doesn't work. My score contains lots of 
+  multibar rests, which should be written out bar by bar
+  in the score (where the 'harakiri' mechanism doesn't
+  remove full staff lines that only contain rests).
+  In the parts, the multibar rests should be split
+  by the rehearsal marks I've included every here and 
+  there.
+  In short, I want the multibar rests to work as they
+  used to do before pl 20 but preferably with a nice
+  centered rest symbol. 
+       * junk backlinks?
+
+       * junk text{sharp,flat,etc}
+
+       * fix convert-mudela manpage
+
+       * automatic staff selection.
+
        * decimal point in \paper {}
 
        > I have changed Mark_engraver to use the G_... classes.
@@ -41,11 +74,6 @@ grep for TODO and ugh/ugr/urg
        * update mi2mu for lilypond 1.1
 
 BUGS:
-
-       * AAARG: Rational::Rational (double x) is broken, try:
-           Rational x = (double)0.25;
-           see 'suck me gently...'
-
        * collisions/voices \voiceone \voicetwo are broken; see 
          input/praeludium-fuga-E.ly
          mutopia/J.S.Bach/wtk1-fugue2.ly
diff --git a/VERSION b/VERSION
index 2133ac66f4fb2e78fc09c8a74b992b68ba3ff40c..cc4957f34f0d5d6524522e65c69b1e0ca702f7d8 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,8 +1,8 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=1
-PATCH_LEVEL=22
-MY_PATCH_LEVEL=jcn5
+PATCH_LEVEL=23
+MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
index 4ae9087c393c9660b20b2c65d6358e6a7b0b4329..6e698cdc85bb1919225cc986f7fa51de6da01fa7 100755 (executable)
@@ -49,6 +49,7 @@ ln -sf $LILYPOND_SOURCEDIR/buildscripts/ps-to-gifs.sh $prefix/bin/ps-to-gifs
 ln -sf $LILYPOND_SOURCEDIR/mf/out/ afm
 mkdir -p $prefix/share/lilypond
 ln -sf $LILYPOND_SOURCEDIR/ $prefix/share/lilypond
+rm $prefix/share/lilypond
 
 if [ -f ../.gdbinit ];
 then
index f536f8621a678150681d827ad31268bc64bf44f0..7ea69f05531b5b68200a8bfd7514659301a8e9ca 100755 (executable)
--- a/configure
+++ b/configure
@@ -777,7 +777,7 @@ host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
 host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
 echo "$ac_t""$host" 1>&6
 
-    for ac_prog in make gmake
+    for ac_prog in gmake make
 do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
@@ -958,7 +958,7 @@ fi
     echo "configure: warning: Please install *GNU* make" 1>&2
     warn_b=yes
  
-       fi 
+       fi
     fi 
 
     
diff --git a/input/bugs/Overture.ly b/input/bugs/Overture.ly
new file mode 100644 (file)
index 0000000..973a397
--- /dev/null
@@ -0,0 +1,245 @@
+\header {
+title = "Parties sur les fleut Dous \\'a 3";
+composer = "Johann Christoph Faber";
+piece = "1.  Overture";
+}
+
+\version "1.0.14";
+
+global=\notes{
+       \time 2/2;
+       \key C;
+}
+
+treble=\notes\relative c''' {
+%1
+       g2 c4 g |
+       g4( [f8 )e] f2 |
+       f4( [e8 )d] e2 |
+       [e8( )f g f] e4.( )d8 |
+%5
+       d2 r8 g8 [a( )e] |
+       f2 r8 f8 [g( )d] |
+       e2( [)e8 e( d )c] |
+       d2( [)d8 d( c )b] |
+       g'4. g8 g4 a |
+%10
+% implied trill on d
+       d,4 e d4. c8 |
+       c8 [g' c( )b] a2 |
+       r8 a [d( )c] [b b( a )b] |
+       [c( )b a g] fis4 [g8 a] |
+       b2 [b8( )a g a] |
+%15
+       fis4. g8 g4 f |
+       r8 g8 [f( )g] e4.( )d8 |
+% Another implied trill
+       d4 e d4. c8 |
+       % \semibreve = \dottedminim
+       \time 3/4;
+       c4 g' g |
+       [g8( )f e f g a] |
+%20
+       g4 e r |
+       r2. |
+       r4 g g |
+       c [b8( )a g bes]  |
+       a4 f r |
+%25
+       r2. |
+       r4 a g |
+       a f e |
+       f [a8( )g f e] |
+       d4 g g |
+%30
+       g( )a b |
+       c e, d |
+       e f g |
+       a d, d |
+       d( )e f |
+%35
+       g r4 r |
+       r e f |
+       g( [a8 )g f e ] |
+       f4 e2 |
+       d4 g( )f |
+%40
+       e r4 r4 |
+       r g c |
+       [a8( g )f g f e] |
+       [ d8( )c d e f g ]|
+       [e ( ) f e( f g )a ]|
+%45
+% Implied trill and turn on the D
+       [f8( )e] d2 |
+       c4 r4 r4 |
+       e r4 r4 |
+       g( )a b |
+       c e, f |
+%50
+       g( [a8 )g f e] |
+       d4.( )g8 g4 |
+       [f8( )e] d4. c8 |
+       c2. \bar "|.";
+}
+
+tenor=\notes\relative c'' {
+       e2 g4 e |
+       c2( [)c8 c8( b )a] |
+       b2 c2 |
+       [c8()d e d] c4.( )b8 |
+%5
+       b4 [c8 d] e2 |
+       r8 c8 [d( )a] b2 |
+       c2 a2( |
+       [)a8 a8( g )f] g2 |
+       c2. c4|
+%10
+       b c c( )b |
+       c g' f2 |
+       r8 f [a a] [g e(] )f4 |
+       g e a, d |
+       g2. e4 |
+%15
+       d a [b8. c16 c8. d16] |
+       d2 c4.( )b8 |
+       b4 c c( )b |
+       % \semibreve = \dottedminim
+       \time 3/4;
+       c4 e e |
+       [e8( )d c d e f ]|
+%20
+       e4 c r |
+       r2. |
+       r4 e e |
+       a [g8( )f e g] |
+       f4 c r4 |
+%25
+       r2. |
+       r4 f e |
+       f a, g |
+       a [f'8( )e d c ] |
+       b4 e d |
+%30
+       e( )f d |
+       e c b |
+       c c e |
+       f b, a |
+       b( )c d |
+%35
+       e r4 r4 |
+       r c d |
+       e e e |
+       d d( )cis |
+       d e( )d |
+%40
+       c r4 r4 |
+       r4 e g |
+       [f8( e )d e d c ] |
+       [b8( )a b c d b] |
+       [c8 ( ) d c( d e )f] |
+%45
+       [d( )c] c4 b |
+       c r r
+       c r r |
+       e ( ) f d |
+       e c d |
+%50
+       e( [f8 )e d c] |
+       b4.( )e8 e4 |
+       [d8 ()c] c4 b |
+       c2. \bar "|.";
+}
+
+bass=\notes\relative c' {
+       c4 [c,8 d] e4.( [f16 )g] |
+       a2( [)a8 a( g )f] |
+       g2 [c,8 f g()a] |
+       c2 c, |
+%5
+       [g'8()f e d ] cis2 |
+       d4. d8 g4. g,8 |
+       [c8 g' c( )e, ] f2( |
+       [)f8 f( e )d] e2 |
+       e2. f4 |
+%10
+       g2 g, |
+       c r8 c [f()e] |
+       d2 g4 f |
+       [e8()d] c4 [d8()c b a]|
+       g4 a b c|
+%15
+       d2 [e8. c16 f8. d16] |
+       g2 c, |
+       f2 g |
+       % \semibreve = \dottedminim
+       \time 3/4;
+       c,4 r r |
+       r2. |
+%20
+       r4 c' a |
+       c e, g |
+       c, r r |
+       r2.
+       r4 f c |
+%25
+       f a, c |
+       f, r r |
+       r f' c |
+       f r r |
+       r c' g |
+%30
+       c f, g |
+       c, e g |
+       c, a' c |
+       f, g fis |
+       g e d |
+%35
+       c e g |
+       c, e d |
+       c cis cis |
+       d a' a, |
+       d r r |
+%40
+       r e g |
+       c, c' e, |
+       f2. |
+       g2. |
+       a4 [g8()f] e4 |
+%45
+       f g g, |
+       c e g |
+       c e, g |
+       c, f g |
+       c a [g8()f]
+%50
+        e2 f4 |
+        g4()f e |
+         f g g, |
+        c2. \bar "|.";
+}
+       
+
+\score{
+       \type StaffGroup <
+             \type Staff =treble \notes {
+                   \property Staff.Instrument = "Treble" 
+                   \global \treble 
+             }
+
+             \type Staff =tenor \notes {
+                     \property Staff.Instrument = "Tenor"
+                     \global \tenor 
+             }
+
+             \type Staff =bass \notes {
+                     \property Staff.Instrument = "Bass"
+                     \global \clef "bass"; \bass
+             }
+       >
+       \paper {
+               \translator { \BarNumberingStaffContext }
+       }
+}
+       
+
diff --git a/input/test/auto-beam.ly b/input/test/auto-beam.ly
deleted file mode 100644 (file)
index f325328..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-%{
-  Currently (1.1.22.jcn5), the auto-beam engraver will only engrave
-  sensible beams (hopefully), which means that it will give up the
-  whole beam if:
-    * a rest is encountered
-    * another beam (entered manually) is encountered
-    * there's a 'gap' in the beam note's durations
-
-  There's no smart algorithm, beginning a beam is considered when
-   
-    now / beamAutoBegin = 0
-
-  the beam will be ended when
-
-    * now / beamAutoEnd = 0
-%}
-       
-\score{
-    \notes \relative c''{
-       \time 2/4;
-       % one beam per measure
-       c8 c c c
-       % two beams per measure
-       \property Voice.beamAutoBegin = "0.25"
-       \property Voice.beamAutoEnd = "0.25"
-       c8 c c c
-       % manually override autobeam with weird beaming
-       c8 [c c] c
-       c8 c c r
-       c8 c c4
-       r8 c c c
-       % no autobeaming
-       \property Voice.beamAuto = "0"
-       c8 c c c
-    }
-    \paper{
-       \translator{
-           \VoiceContext
-           % add experimental auto-beaming
-           \consists Auto_beam_engraver;
-           % switch it on (perhaps a bit double, but we want to be able 
-           % to switch it off conveniently
-           beamAuto = 1.;
-           % consider starting beam at every 4 note
-           % would be nice if we could enter durations here, e.g.:
-           % what if we make 'dur (4)' a real_expression?
-           beamAutoBegin = 0.5;
-           beamAutoEnd = 0.5;
-       }
-    }
-}
diff --git a/input/test/star.ly b/input/test/star.ly
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/lily/auto-beam-engraver.cc b/lily/auto-beam-engraver.cc
deleted file mode 100644 (file)
index cfc88a6..0000000
+++ /dev/null
@@ -1,250 +0,0 @@
-/*   
-  auto-beam-engraver.cc --  implement Auto_beam_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999 Jan Nieuwenhuizen <janneke@gnu.org>
-  
- */
-
-#include "auto-beam-engraver.hh"
-#include "musical-request.hh"
-#include "beam.hh"
-#include "grouping.hh"
-#include "rest.hh"
-#include "stem.hh"
-#include "debug.hh"
-#include "time-description.hh"
-
-ADD_THIS_TRANSLATOR (Auto_beam_engraver);
-
-Auto_beam_engraver::Auto_beam_engraver ()
-{
-  beam_p_ = 0;
-  finished_beam_p_ = 0;
-  finished_grouping_p_ = 0;
-  grouping_p_ = 0;
-}
-
-void
-Auto_beam_engraver::do_process_requests ()
-{
-  Time_description const *time = get_staff_info().time_C_;
-
-  //Moment begin_mom;
-  Real begin_f;
-  Scalar begin = get_property ("beamAutoBegin", 0);
-  if (begin.isnum_b ())
-    // brrr.
-    // begin_mom = (Real)begin;
-    begin_f = (Real)begin;
-  else
-    return;
-  
-  Scalar end = get_property ("beamAutoEnd", 0);
-  //Moment end_mom;
-  Real end_f;
-  if (end.isnum_b ())
-    // brrr.
-    // end_mom = (Real)end;
-    end_f = (Real)end;
-  else
-    return;
-  
-  Real epsilon_f = Moment (1, 512);
-  Real f;
-  if (beam_p_ && ((f=abs (fmod (time->whole_in_measure_, end_f))) < epsilon_f))
-    {
-      DOUT << String ("ending autobeam at: ") + now_moment ().str ();
-      if (beam_p_->stems_.size () < 2)
-       {
-         DOUT << "junking autombeam: less than two stems";
-         unbeam ();
-       }
-      else
-       {
-         finished_beam_p_ = beam_p_;
-         finished_grouping_p_ = grouping_p_;
-         beam_p_ = 0;
-         grouping_p_ = 0;
-       }
-    }
-  
-  /*
-    Allow already started autobeam to end
-   */
-  Scalar on = get_property ("beamAuto", 0);
-  if (!on.to_bool ())
-    return;
-
-  if (!beam_p_ && ((f=abs (fmod (time->whole_in_measure_, begin_f))) < epsilon_f))
-    {
-      DOUT << String ("starting autobeam at: ") + now_moment ().str ();
-      beam_p_ = new Beam;
-      grouping_p_ = new Rhythmic_grouping;
-
-      /* urg, copied from Beam_engraver */
-      Scalar prop = get_property ("beamslopedamping", 0);
-      if (prop.isnum_b ()) 
-       beam_p_->damping_i_ = prop;
-
-      prop = get_property ("beamquantisation", 0);
-      if (prop.isnum_b ()) 
-       beam_p_->quantisation_ = (Beam::Quantisation)(int)prop;
-      // must set minVerticalAlign = = maxVerticalAlign to get sane results
-      // see input/test/beam-interstaff.ly
-      prop = get_property ("minVerticalAlign", 0);
-      if (prop.isnum_b ())
-       beam_p_->vertical_align_drul_[MIN] = prop;
-
-      prop = get_property ("maxVerticalAlign", 0);
-      if (prop.isnum_b ())
-       beam_p_->vertical_align_drul_[MAX] = prop;
-
-      announce_element (Score_element_info (beam_p_, 0));
-    }
-}
-
-void
-Auto_beam_engraver::typeset_beam ()
-{
-  if (finished_beam_p_)
-    {
-      Rhythmic_grouping const * rg_C = get_staff_info().rhythmic_C_;
-      rg_C->extend (finished_grouping_p_->interval());
-      finished_beam_p_->set_grouping (*rg_C, *finished_grouping_p_);
-      typeset_element (finished_beam_p_);
-      finished_beam_p_ = 0;
-    
-      delete finished_grouping_p_;
-      finished_grouping_p_= 0;
-    }
-}
-
-void
-Auto_beam_engraver::do_post_move_processing ()
-{
-}
-
-void
-Auto_beam_engraver::do_pre_move_processing ()
-{
-  typeset_beam ();
-}
-
-void
-Auto_beam_engraver::do_removal_processing ()
-{
-  typeset_beam ();
-  if (beam_p_)
-    {
-      DOUT << "Unfinished beam";
-      unbeam ();
-    }
-}
-
-void
-Auto_beam_engraver::acknowledge_element (Score_element_info info)
-{
-  if (Beam *b = dynamic_cast<Beam *> (info.elem_l_))
-    {
-      if (beam_p_)
-       {
-         DOUT << "junking autobeam: beam encountered";
-         unbeam ();
-       }
-    }
-
-  if (beam_p_)
-    {
-      Rhythmic_req *rhythmic_req = dynamic_cast <Rhythmic_req *> (info.req_l_);
-      if (!rhythmic_req)
-       return;
-
-      if (dynamic_cast<Rest *> (info.elem_l_))
-       {
-         DOUT << "junking autobeam: rest encountered";
-         unbeam ();
-         return;
-       }
-
-      Stem* stem_l = dynamic_cast<Stem *> (info.elem_l_);
-      if (!stem_l)
-       return;
-
-      if (stem_l->beam_l_ && (stem_l->beam_l_ != beam_p_))
-       {
-         DOUT << "junking autobeam: beamed stem encountered";
-         unbeam ();
-         return;
-       }
-       
-
-      /*
-       now that we have last_add_mom_, perhaps we can (should) do away
-       with these individual unbeams
-       */
-      if (rhythmic_req->duration_.durlog_i_<= 2)
-       {
-         DOUT << "stem doesn't fit in beam";
-         unbeam ();
-         return;
-       }
-
-      Moment start = get_staff_info().time_C_->whole_in_measure_;
-      if (!grouping_p_->child_fit_b (start))
-       {
-         unbeam ();
-       }
-      else
-       {
-         grouping_p_->add_child (start, rhythmic_req->duration ());
-         stem_l->flag_i_ = rhythmic_req->duration_.durlog_i_;
-         beam_p_->add_stem (stem_l);
-         Moment now = now_moment ();
-         last_add_mom_ = now;
-         extend_mom_ = extend_mom_ >? now + rhythmic_req->duration ();
-       }
-    }
-}
-
-void
-Auto_beam_engraver::unbeam () 
-{
-  assert (beam_p_);
-  for (int i=0; i < beam_p_->stems_.size (); i++)
-    {
-      Stem* s = beam_p_->stems_[i];
-      s->beams_i_drul_[LEFT] = 0;
-      s->beams_i_drul_[RIGHT] = 0;
-      s->mult_i_ = 0;
-      s->beam_l_ = 0;
-    }
-  
-  beam_p_->unlink ();
-  beam_p_ = 0;
-  delete grouping_p_;
-  grouping_p_ = 0;
-}
-
-void
-Auto_beam_engraver::process_acknowledged ()
-{
-  if (beam_p_)
-    {
-      Moment now = now_moment ();
-      if ((extend_mom_ < now)
-         || ((extend_mom_ == now) && (last_add_mom_ != now )))
-       {
-         DOUT << String ("junking autobeam: no stem added since: ")
-           + last_add_mom_.str ();
-         unbeam ();
-       }
-      else if (!beam_p_->stems_.size ())
-       {
-         DOUT << "junking started autobeam: no stems";
-         unbeam ();
-       }
-    }
-}
index ac7a02a26b2dbc1ef504bcbd977675c8ae3b187c..ebd09d3dffd8705e91373ad97d5623c14060b92d 100644 (file)
@@ -33,7 +33,7 @@ Beam_engraver::do_try_music (Music *m)
 
       if (d == STOP && !beam_p_)
        {
-         m->warning (_ ("No Beam to end"));
+         m->warning ("No Beam to end");
          return false;
        }
       reqs_drul_[d ] = c;
@@ -49,7 +49,7 @@ Beam_engraver::do_process_requests ()
   if (reqs_drul_[STOP])
     {
       if (!beam_p_)
-       reqs_drul_[STOP]->warning (_("No beam to end"));
+       reqs_drul_[STOP]->warning (_("No beam to stop"));
       finished_beam_p_ = beam_p_;
       finished_grouping_p_ = grouping_p_;
 
@@ -61,7 +61,7 @@ Beam_engraver::do_process_requests ()
     {
       if (beam_p_)
        {
-         reqs_drul_[START]->warning (_ ("Already have a Beam"));
+         reqs_drul_[START]->warning ("Already have a Beam");
          return;
        }
 
@@ -126,7 +126,7 @@ Beam_engraver::do_removal_processing ()
   typeset_beam ();
   if (beam_p_)
     {
-      warning (_ ("Unfinished beam"));
+      warning ("Unfinished beam");
       finished_beam_p_ = beam_p_;
       finished_grouping_p_ = grouping_p_;
       typeset_beam ();
@@ -146,9 +146,9 @@ Beam_engraver::acknowledge_element (Score_element_info info)
        Rhythmic_req *rhythmic_req = dynamic_cast <Rhythmic_req *> (info.req_l_);
        if (!rhythmic_req)
          {
-           String s = _ ("Stem must have Rhythmic structure.");
+           String s=_("Stem must have Rhythmic structure.");
            if (info.req_l_)
-             info.req_l_->warning (s);
+             info.req_l_->warning(s);
            else
              ::warning (s);
          
@@ -159,7 +159,7 @@ Beam_engraver::acknowledge_element (Score_element_info info)
        if (rhythmic_req->duration_.durlog_i_<= 2)
          {
            rhythmic_req->warning (_ ("stem doesn't fit in beam"));
-           reqs_drul_[LEFT]->warning (_ ("beam was started here"));
+           reqs_drul_[LEFT]->warning (_("beam was started here"));
            return;
          }
 
@@ -170,7 +170,7 @@ Beam_engraver::acknowledge_element (Score_element_info info)
 
        if (!grouping_p_->child_fit_b (start))
          {
-           String s (_ ("please fix me") + ": " 
+           String s (_("please fix me") + ": " 
                      + _f ("stem at %s doesn't fit in beam", now_moment ().str ()));
 
            if (info.req_l_)
diff --git a/lily/include/auto-beam-engraver.hh b/lily/include/auto-beam-engraver.hh
deleted file mode 100644 (file)
index b638ba4..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*   
-  auto-beam-engraver.hh -- declare Auto_beam_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999 Jan Nieuwenhuizen <janneke@gnu.org>
-  
- */
-
-#ifndef AUTO_BEAM_ENGRAVER_HH
-#define AUTO_BEAM_ENGRAVER_HH
-
-#include "engraver.hh"
-
-class Auto_beam_engraver : public Engraver
-{
-public:
-  Auto_beam_engraver ();
-  VIRTUAL_COPY_CONS (Translator);
-
-protected:
-  virtual void do_pre_move_processing ();
-  virtual void do_post_move_processing ();
-  virtual void do_removal_processing ();
-  virtual void acknowledge_element (Score_element_info);
-  virtual void do_process_requests ();
-  virtual void process_acknowledged ();
-
-private:
-  void typeset_beam ();
-  void unbeam ();
-
-  Beam *finished_beam_p_;
-  Beam *beam_p_;
-  Moment last_add_mom_;
-  Moment extend_mom_;
-  Rhythmic_grouping*grouping_p_;
-  Rhythmic_grouping*finished_grouping_p_;
-};
-
-#endif /* AUTO_BEAM_ENGRAVER_HH */
-
index 898e8b048d778a8d3d1fa1d6b548513eace63d11..834467858f9ec4c90d0e2202da7b1df08ecae357 100644 (file)
@@ -1,5 +1,5 @@
 /*   
-  beam-engraver.hh -- declare Beam_engraver
+  cbeam-engraver.hh -- declare Beam_engraver
   
   source file of the GNU LilyPond music typesetter
   
@@ -7,8 +7,8 @@
   
  */
 
-#ifndef BEAM_ENGRAVER_HH
-#define BEAM_ENGRAVER_HH
+#ifndef CBEAM_ENGRAVER_HH
+#define CBEAM_ENGRAVER_HH
 
 #include "engraver.hh"
 #include "drul-array.hh"
@@ -35,5 +35,5 @@ public:
   VIRTUAL_COPY_CONS (Translator);
 };
 
-#endif /* BEAM_ENGRAVER_HH */
+#endif /* CBEAM_ENGRAVER_HH */
 
index 2554f271e419e44b6442c4fbeef783f580eeaecf..b44dab422342896ccb8aac43a6a438ce9bee5e02 100644 (file)
@@ -15,6 +15,8 @@ struct Abbreviation;
 struct Abbreviation_beam; 
 struct Abbreviation_beam_req;
 struct Abbreviation_beam_engraver;
+struct G_staff_side_item;
+struct G_text_item;
 struct Abbreviation_req;
 struct Adobe_font_metric;
 struct Adobe_font_char_metric;
@@ -29,7 +31,6 @@ struct Audio_note;
 struct Audio_note_off;
 struct Audio_staff;
 struct Audio_tempo;
-struct Auto_beam_engraver;
 struct Axis_group_element;
 struct Axis_group;
 struct Bar;
@@ -80,8 +81,6 @@ struct Engraver;
 struct Engraver_group_engraver;
 struct Extender;
 struct Extender_req;
-struct G_staff_side_item;
-struct G_text_item;
 struct General_script_def;
 struct Graphical_element;
 
index 98b7003d5627968c343ebcd5c4e1b8c05c21bc43..55fb08b15a8523d924a74ff2988cb0586910c3ac 100644 (file)
@@ -1,15 +1,15 @@
 Begin3
 Titel: LilyPond
-Versie: 1.1.22
-Inschrijf datum: 15JAN99
+Versie: 1.1.23
+Inschrijf datum: 20JAN99
 Beschrijving: @FLAPTEKST@
 Trefwoorden: muziek typezetten midi notatie
 Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
        janneke@gnu.org (Jan Nieuwenhuizen)
 Onderhouden door: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
 Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
-       770k lilypond-1.1.22.tar.gz 
+       770k lilypond-1.1.23.tar.gz 
 Oorspronkelijke plek: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       770k lilypond-1.1.22.tar.gz 
+       770k lilypond-1.1.23.tar.gz 
 Copi-eer voorwaarden: GPL
 End
index 43e910639aae265b0b6bb46e4b0c30ba4dd40ac2..e75b2cef3e33461221586f9fb62af35933adbed6 100644 (file)
@@ -1,7 +1,7 @@
 Begin3
 Title: LilyPond
-Version: 1.1.22
-Entered-date: 15JAN99
+Version: 1.1.23
+Entered-date: 20JAN99
 Description: 
 LilyPond is the GNU Project music typesetter.  This program can print
 beautiful sheet music from a music definition file.  It can also play
@@ -14,8 +14,8 @@ Author: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
        janneke@gnu.org (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
-       770k lilypond-1.1.22.tar.gz 
+       770k lilypond-1.1.23.tar.gz 
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       770k lilypond-1.1.22.tar.gz 
+       770k lilypond-1.1.23.tar.gz 
 Copying-policy: GPL
 End
index fe2e201984a67f362176eec6026cb368b293070d..553585de9f9192015a94c31d9333fa2c170247f8 100644 (file)
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 1.1.22
+Version: 1.1.23
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.22.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.23.tar.gz
 Summary: A program for printing sheet music.
 URL: http://www.cs.uu.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
diff --git a/mutopia/D.Scarlatti/sonata-k1-l366.ly b/mutopia/D.Scarlatti/sonata-k1-l366.ly
new file mode 100644 (file)
index 0000000..aae16db
--- /dev/null
@@ -0,0 +1,256 @@
+       %{
+From: bf250@freenet.carleton.ca (John Sankey)
+To: hanwen@cs.uu.nl, jantien@xs4all.nl
+Subject: the first Sonata
+Date: Sat, 16 Jan 1999 20:50:07 -0500 (EST)
+
+To give you an idea of what is involved in the Scarlatti project,
+here is the Mudela for the first sonata of the 550, organized so I
+can proofread the ps output against the original manuscripts. Lily
+mutters about clashing note columns and spans, but puts everything 
+except note stems where they should be.
+
+I've set it on a double staff to separate the parts enough so they
+are readable without setting all the note stem directions manually.
+Voices 1 & 3 are the chords, 2 & 4 the notes that can't be chorded
+because of duration.
+
+I have a program that does most of the enharmonic corrections to
+mi2mu output properly. I'm mulling over how to insert beam brackets
+(so I can correct the few it gets wrong) and set stem directions
+(ditto) mostly automatically too, but that's not as easy.
+
+Suggestions welcome as always
+John
+
+%}
+
+\score {
+\header {title ="Domenico Scarlatti - Sonata K.1 L.366";}
+% staffOne is right hand, staffTwo left hand
+\notes {
+\type GrandStaff = staffAll <
+\type Staff = staffOne <
+\property Voice.pletvisibility = 0
+\keysignature bes;
+\time 4/4;
+\clef treble;
+\type Voice = vOne <
+{
+% 1
+[d''16 e'' f'' g''] [a'' a' cis'' a'] d''4. e''8 |
+% 2
+[f''16 d'' g'' e''] [a'' f'' e'' d''] [cis''8 a''] a''4^\prall |
+% 3
+[a''16 g'' f'' e''] [d'' c'' bes' a'] [bes'8 bes'] [g' bes'] |
+% 4
+[e'8 e'] [e' e'] f f'' f''4^\prall |
+% 5
+[f''16 e'' d'' c''] [bes' a' g' f'] [g'8 g'] [e' e'] |
+% 6
+[e'8 a] [a a] [d e] [f g] |
+% 7
+a16 s b s cis' s d' s e' s f' s g' s a' s |
+% 8
+b'16 s cis'' s d'' s e'' s [f'' d'' bes' g'] [e'' cis'' a' cis''] |
+% 9
+a''4 g''4^\prallmordent [f''16 d'' bes' g'] [e'' cis'' a' cis''] |
+% 10
+[f''16 d'' g'' e''] [a'' f'' e'' d''] [cis'' a' d'' b'] [e'' g' f'
+e'] |
+% 11
+[f'16 d' g' e'] [a' f' e' d'] [cis' a d' b] [e' cis' f' d'] |
+% 12
+[g'16 e' d' cis'] [f'8 g'^\prallmordent] [a'16 e' f' d'] [e' cis' d'
+b] |
+% 13
+[cis'16 a b aes] cis'4 a,4^\prall^"\\textnatural" r |
+% 14
+[a'16 b' cis'' d''] [e'' cis'' f'' d''] e''4. a'8 |
+% 15
+[b'16 g' cis'' a'] [d'' b' e'' cis''] [fis'' d'' g'' e''] [a'' c''
+bes' a'] |
+% 16
+[bes'16 g' c'' a'] [d'' bes' a' g'] [fis' d' g' e'] [a' c' bes a] |
+% 17
+g16 s a s bes s c' s d' s e' s f' s g' s |
+% 18
+[a'16 f' d' bes] [g' e' c' e'] c''4 bes'4^\prallmordent |
+% 19
+[c''8 f''] [bes' e''] [a'16 f' c'' a'] [f'' c'' a'' f''] |
+% 20
+[e''16 g'' c'' e''] [g'8 fis'] g'16 s g8 [g g,] |
+% 21
+[d8 d'] d'16 [d'' c'' b'] [c'' a' e'' c''] [a'' e'' c''' a''] |
+% 22
+[gis''16 b'' e'' aes''] [b' d'' cis'' b'] [cis''8 a'] [a' a'] |
+% 23
+f,8 a' [f' f'16 a'] [bes'8 g''] g''4^\prall |
+% 24
+[g''16 f'' e'' d''] [c'' bes' a'] s f,8 f' [f' f'] |
+% 25
+d,8 d' [f' d'16 f'] [g'8 e''] e''4^\prall |
+% 26
+[e''16 d'' cis'' b'] [a' g' f' e'] [f' d' g' e'] [a' f' bes' g'] |
+% 27
+[f'16 d' g' e'] [a' f' bes' g'] f' s g' s a' s bes' s |
+% 28
+[a'8 d''] [g' cis''] [f'16 d' bes g] [e' cis' a cis'] |
+% 29
+[a'8 d''] [g' e''] [f'16 d' g' e'] [a' f' b' g'] |
+% 30
+[cis''16 a' d'' e''] [f'' d'' e'' cis''] [d'' a' bes' g'] [a' f' g'
+e'] |
+% 31
+[f'16 d' e' cis'] d'4 d4^\prall r4 |
+} {
+s1 s
+% 3
+s2 s8 g' bes' g' |
+% 4
+g'8 g' g' s s2 |
+% 5
+s2 s8 e' g' g' |
+% 6
+a8 e' e' s s2 |
+s1 s s s s s s s s s s s
+% 19
+s8 a'' s g'' s2 |
+s1 s s
+% 23
+s8 f' a' s s2 |
+% 24
+s2 s8 a' a' a' |
+% 25
+s8 f' d' s s2 |
+% 26
+s2 d''4 s |
+% 27
+d'16 s e' s f' s g' s s2 |
+% 28
+s8 f'' s e'' s2 |
+% 29
+s8 f'' s cis''
+} >
+\type Voice = vTwo <
+{s1 s s s s
+%6
+s2 d'16 s s4. |
+s1 s s s s s s s s s s s s s s s s s s
+%26
+s2 d''4 s |
+%27
+s2 d''4}
+>>
+\type Staff = staffTwo <
+\property Voice.pletvisibility = 0
+\keysignature bes;
+\time 4/4;
+\clef treble;
+\type Voice = vThree <
+{
+% 1
+s2 [d'16 e' f' g'] [a' a cis' a] |
+% 2
+[d'8 e'] [f' g'] [a' a'] [a' a'] |
+% 3
+[a'8 a'] [a' f'] g g'' g''4^\prall |
+% 4
+[g''16 f'' e'' d''] [c'' bes' a' g'] [a'8 a'] [f' a'] |
+% 5
+[d'8 f'] [d' d'] e e'' e''4^\prall |
+% 6
+[e''16 d'' cis'' b'] [a' g' f' e'] [f' d' g' e'] [a' f' e' d'] |
+% 7
+[cis'16 a d' b] [e' cis' f' d'] [g' e' a' f'] [b' g' cis'' a'] |
+% 8
+[d''16 b' e'' cis''] [f'' d'' g'' e''] a''4 g''4^\prallmordent |
+% 9
+[f''16 d'' bes' g'] [e'' cis'' a' cis''] a''4 g''4^\prallmordent |
+% 10
+[d'8 e'] [f' g'] [a b] [cis' a] |
+% 11
+[d8 e] [f g] a16 s b s cis' s d' s |
+% 12
+e16 [g' f' e'] [d'8 bes] a,4 s8 f' |
+% 13
+[e'8 d'] [a16 e cis e] s2 |
+% 14
+s2 [a16 b cis' d'] [e' cis' f' d'] |
+% 15
+g'16 s a' s b' s cis'' s [d'8 e'] [fis' d'] |
+% 16
+[g8 a8] [bes c'] [d e] [fis d] |
+% 17
+[bes16 g c' a] [d' bes e' c'] [f' d' g' e'] [a' f' bes' g'] |
+% 18
+c''4 bes'4^\prallmordent [a'16 f' d' bes] [g' e' c' e'] |
+% 19
+[a'16 f' d' bes] [g' e' c' e'] f' s f8 [f f,] |
+% 20
+[c8 c'] [c'16 c'' bes' a'] [bes' g' d'' bes'] [g'' d'' bes'' g''] |
+% 21
+[f''16 a'' d'' f''] [a'8 gis'] a'16 s a8 [a a,] |
+% 22
+[e8 e,] [e, e,] a, a'' a''4^\prall^"\\textflat" |
+% 23
+[a''16 g'' f'' e''] [d'' c'' bes'] s g,8 bes' [bes' bes'] |
+% 24
+e,8 e' [g' e'16 g'] [a'8 f''] f''4^\prall |
+% 25
+[f''16 e'' d'' c''] [bes' a' g'] s e,8 g' [g' g'] |
+% 26
+a,8 a [e' a] d'16 s e' s f' s g' s |
+% 27
+s2 [d'16 d' e' e'] [f' f' g' g'] |
+% 28
+[f'16 d' bes g] [e' cis' a cis'] [a'8 d''] [g' e''] |
+% 29
+[f'16 d' bes g] [e' cis' a cis'] [d8 e] [f g] |
+% 30
+[a8 g] [a a,] d4 s8 bes' |
+% 31
+[a'8 g'] [f'16 a f a] s2 |
+} {
+s1 s
+% 3
+f'8 f' f' s s2 |
+% 4
+s2 s8 f' a' f' |
+% 5
+f'8 d' f' s s2 |
+s1 s s s s s s s s s s s s s s s s
+% 23
+s2 s8 g' g' g' |
+% 24
+s8 g' e' s s2 |
+% 25
+s2 s8 e' e' e' |
+% 26
+s8 e' a s s2 |
+% 27
+d''4 s s2 |
+% 28
+s2 s8 f'' s cis'' |
+} >
+\type Voice = vFour <
+{s1 s s s s s s s s
+%10
+d''16 s s4. a'16 s s4. |
+%11
+d'16 s s4. s2 |
+s1 s s
+%15
+s2 d''16 s s4. |
+%16
+g'16 s s4. d'16 s s4. |
+s1 s s s s s s s s s s s
+%29
+s2 d'16}
+>>
+>}
+\paper{indent=0.0; \translator {\ScoreContext \consists
+Bar_number_engraver;}}
+}
+
+
index e995b890b272e1096e11f66ca5711d36fdf4b61d..52d2ff849179c2f4581ab60a560cd052ef630eae 100644 (file)
 #     and \end{mudela}. (saves keystrokes in mudela-book-doc.doc)
 #   - intertext="bla bla bla" option
 #   - mudela-book now understand latex \begin{verbatim}
+# 0.5.3:
+#   - bf: \mudela{ \times 2/3{...} }
+#        * \t in \times is not tab character and
+#        * dont treat the first '}' as command ending
 
 import os
 import string
@@ -62,7 +66,7 @@ import sys
 
 outdir = 'out'
 initfile = ''
-program_version = '0.5.2'
+program_version = '0.5.3'
 
 out_files = []
 
@@ -352,6 +356,26 @@ class Tex_output:
                 file.write(line)
         file.close()
 
+# given parameter s="\mudela[some options]{CODE} some text and commands"
+# it returns a tuple:
+#    (CODE, integer)
+# where the last number is the index of the ending '}'
+def extract_command(s):
+    start_found_b = 0
+    count = 0
+    start = 0
+    for idx in range(len(s)):
+        if s[idx] == '{':
+            if not start_found_b:
+                start = idx
+                start_found_b = 1
+            count = count + 1
+        if s[idx] == '}':
+            count = count - 1
+        if (start_found_b == 1) and (count == 0):
+            break
+    return s[start+1:idx], idx
+
 class Tex_input:
     def __init__ (self, filename):
         for fn in [filename, filename+'.tex', filename+'.doc']:
@@ -402,35 +426,45 @@ class Tex_input:
                           % r_inc.groups()[0]
                     retlines.append (line)
             else:
+                # This code should be rewritten, it looks terrible
                 r_mud = defined_mudela_cmd_re.search(line)
                 if r_mud:
                     ss = "\\\\verb(?P<xx>[^a-zA-Z])\s*\\\\%s\s*(?P=xx)" \
                          % re.escape(r_mud.group()[1:])
+                    # just append the line if the command is inside \verb|..|
                     if re.search(ss, line):
                         retlines.append(line)
                         continue
                     while 1:
                         opts = r_mud.groups()[2]
+                        cmd_start_idx = r_mud.span()[0]
+                        if cmd_start_idx > 0:
+                            retlines.append(line[:cmd_start_idx])
+                            
+                        cmd_data, rest_idx = extract_command(line[cmd_start_idx:])
+                        rest_idx = rest_idx + cmd_start_idx + 1
                         if opts == None:
                             opts = ''
                         else:
                             opts = ', '+opts
-                        (start, rest) = string.split(line, r_mud.group(), 1)
-                        retlines.append(start)#+'\n')
+                        
                         v = string.split(defined_mudela_cmd[r_mud.groups()[0]], '\n')
                         for l in v[1:-1]:
-                            l = re.sub(r'\\fontoptions', opts, l)
-                            l = re.sub(r'\\maininput', r_mud.groups()[3], l)
+                            l = string.replace(l, '\\fontoptions', opts)
+                            l = string.replace(l, '\\maininput', cmd_data)
                             retlines.append(l)
-                        r_mud = defined_mudela_cmd_re.search(rest)
+                        r_mud = defined_mudela_cmd_re.search(line[rest_idx:])
                         if not r_mud:
-                            retlines.append(rest)
+                            rs = line[rest_idx:]
+                            while rs[0] == " ":
+                                rs = rs[1:]
+                            if rs != "\n":
+                                retlines.append(line[rest_idx:])
                             break;
-                        line = rest
+                        line = line[rest_idx:]
                 else:
                     retlines.append (line)
-        else:
-            return (retlines, retdeps)
+        return (retlines, retdeps)
 
 
 class Main_tex_input(Tex_input):
@@ -636,7 +670,11 @@ def main():
 
     defined_mudela_cmd = {'mudela': r"""
 \begin{mudela}[eps \fontoptions]
-    \maininput
+  \type Staff <
+    \type Voice{
+      \maininput
+    }
+  >
 \end{mudela}
 """}
     if initfile != '':
index 40327a0452992b92e17e604895660b15180d443a..628df5924759625259f755d7f07da7cbd3801d1d 100755 (executable)
@@ -765,7 +765,7 @@ host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
 host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
 echo "$ac_t""$host" 1>&6
 
-    for ac_prog in make gmake
+    for ac_prog in gmake make
 do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
@@ -946,7 +946,7 @@ fi
     echo "configure: warning: Please install *GNU* make" 1>&2
     warn_b=yes
  
-       fi 
+       fi
     fi 
 
     
index 50d8ef093bd9db9e0c22f791d58239a4ba9a3250..d235e433c92406b5f2a080eb54dd87ff5cbb6588 100644 (file)
@@ -1,15 +1,15 @@
 Begin3
 Title: StepMake
-Version: 0.1.66
-Entered-date: 15JAN99
+Version: 0.1.67
+Entered-date: 18JAN99
 Description: 
 Keywords: music notation typesetting midi fonts engraving
 Author: janneke@gnu.org (Jan Nieuwenhuizen)
        hanwen@cs.ruu.nl (Han-Wen Nienhuys)
 Maintained-by: janneke@gnu.org (Jan Nieuwenhuizen)
 Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
-       40k stepmake-0.1.66.tar.gz 
+       40k stepmake-0.1.67.tar.gz 
 Original-site: pcnov095.win.tue.nl /pub/lilypond/development/
-       40k stepmake-0.1.66.tar.gz 
+       40k stepmake-0.1.67.tar.gz 
 Copying-policy: GPL
 End
index aca0071a1e4a0a651115139646090e3b0e52f767..c20a3007d1ace13dd39f452079764a97589aeec6 100644 (file)
@@ -1,9 +1,9 @@
 Name: stepmake
-Version: 0.1.66
+Version: 0.1.67
 Release: 1
 Copyright: GPL
 Group: Development
-Source0: pcnov095.win.tue.nl:/pub/lilypond/development/stepmake-0.1.66.tar.gz
+Source0: pcnov095.win.tue.nl:/pub/lilypond/development/stepmake-0.1.67.tar.gz
 Summary: generic make package
 Packager: janneke@gnu.org (Jan Nieuwenhuizen)
 Buildroot: /tmp/stepmake-install