From 283f0dd4b527be207e2a497a3c864370a9dbc5e6 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Tue, 19 Jan 1999 17:29:41 +0100 Subject: [PATCH] release: 1.1.23 --- NEWS | 7 +- TODO | 38 +++- VERSION | 4 +- buildscripts/set-lily.sh | 1 + configure | 4 +- input/bugs/Overture.ly | 245 ++++++++++++++++++++++++ input/test/auto-beam.ly | 51 ----- input/test/star.ly | 0 lily/auto-beam-engraver.cc | 250 ------------------------- lily/beam-engraver.cc | 16 +- lily/include/auto-beam-engraver.hh | 42 ----- lily/include/beam-engraver.hh | 8 +- lily/include/lily-proto.hh | 5 +- make/out/lelievijver.lsm | 8 +- make/out/lilypond.lsm | 8 +- make/out/lilypond.spec | 4 +- mutopia/D.Scarlatti/sonata-k1-l366.ly | 256 ++++++++++++++++++++++++++ scripts/mudela-book.py | 60 ++++-- stepmake/configure | 4 +- stepmake/make/out/stepmake.lsm | 8 +- stepmake/make/out/stepmake.spec | 4 +- 21 files changed, 624 insertions(+), 399 deletions(-) create mode 100644 input/bugs/Overture.ly delete mode 100644 input/test/auto-beam.ly delete mode 100644 input/test/star.ly delete mode 100644 lily/auto-beam-engraver.cc delete mode 100644 lily/include/auto-beam-engraver.hh create mode 100644 mutopia/D.Scarlatti/sonata-k1-l366.ly diff --git a/NEWS b/NEWS index c4286c869d..766301d266 100644 --- 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 4a5d2ecba5..0b99e57ba4 100644 --- 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 2133ac66f4..cc4957f34f 100644 --- 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. diff --git a/buildscripts/set-lily.sh b/buildscripts/set-lily.sh index 4ae9087c39..6e698cdc85 100755 --- a/buildscripts/set-lily.sh +++ b/buildscripts/set-lily.sh @@ -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 diff --git a/configure b/configure index f536f8621a..7ea69f0553 100755 --- 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 index 0000000000..973a397df1 --- /dev/null +++ b/input/bugs/Overture.ly @@ -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 index f325328909..0000000000 --- a/input/test/auto-beam.ly +++ /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 index e69de29bb2..0000000000 diff --git a/lily/auto-beam-engraver.cc b/lily/auto-beam-engraver.cc deleted file mode 100644 index cfc88a6f19..0000000000 --- a/lily/auto-beam-engraver.cc +++ /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 - - */ - -#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 (info.elem_l_)) - { - if (beam_p_) - { - DOUT << "junking autobeam: beam encountered"; - unbeam (); - } - } - - if (beam_p_) - { - Rhythmic_req *rhythmic_req = dynamic_cast (info.req_l_); - if (!rhythmic_req) - return; - - if (dynamic_cast (info.elem_l_)) - { - DOUT << "junking autobeam: rest encountered"; - unbeam (); - return; - } - - Stem* stem_l = dynamic_cast (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 (); - } - } -} diff --git a/lily/beam-engraver.cc b/lily/beam-engraver.cc index ac7a02a26b..ebd09d3dff 100644 --- a/lily/beam-engraver.cc +++ b/lily/beam-engraver.cc @@ -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 (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 index b638ba4898..0000000000 --- a/lily/include/auto-beam-engraver.hh +++ /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 - - */ - -#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 */ - diff --git a/lily/include/beam-engraver.hh b/lily/include/beam-engraver.hh index 898e8b048d..834467858f 100644 --- a/lily/include/beam-engraver.hh +++ b/lily/include/beam-engraver.hh @@ -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 */ diff --git a/lily/include/lily-proto.hh b/lily/include/lily-proto.hh index 2554f271e4..b44dab4223 100644 --- a/lily/include/lily-proto.hh +++ b/lily/include/lily-proto.hh @@ -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; diff --git a/make/out/lelievijver.lsm b/make/out/lelievijver.lsm index 98b7003d56..55fb08b15a 100644 --- a/make/out/lelievijver.lsm +++ b/make/out/lelievijver.lsm @@ -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 diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm index 43e910639a..e75b2cef3e 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -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 diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec index fe2e201984..553585de9f 100644 --- a/make/out/lilypond.spec +++ b/make/out/lilypond.spec @@ -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 diff --git a/mutopia/D.Scarlatti/sonata-k1-l366.ly b/mutopia/D.Scarlatti/sonata-k1-l366.ly new file mode 100644 index 0000000000..aae16dbbb2 --- /dev/null +++ b/mutopia/D.Scarlatti/sonata-k1-l366.ly @@ -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;}} +} + + diff --git a/scripts/mudela-book.py b/scripts/mudela-book.py index e995b890b2..52d2ff8491 100644 --- a/scripts/mudela-book.py +++ b/scripts/mudela-book.py @@ -53,6 +53,10 @@ # 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[^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 != '': diff --git a/stepmake/configure b/stepmake/configure index 40327a0452..628df59247 100755 --- a/stepmake/configure +++ b/stepmake/configure @@ -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 diff --git a/stepmake/make/out/stepmake.lsm b/stepmake/make/out/stepmake.lsm index 50d8ef093b..d235e433c9 100644 --- a/stepmake/make/out/stepmake.lsm +++ b/stepmake/make/out/stepmake.lsm @@ -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 diff --git a/stepmake/make/out/stepmake.spec b/stepmake/make/out/stepmake.spec index aca0071a1e..c20a3007d1 100644 --- a/stepmake/make/out/stepmake.spec +++ b/stepmake/make/out/stepmake.spec @@ -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 -- 2.39.2