]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.5.34 release/1.5.34
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 27 Feb 2002 15:20:08 +0000 (16:20 +0100)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 27 Feb 2002 15:20:08 +0000 (16:20 +0100)
60 files changed:
ChangeLog
Documentation/GNUmakefile
Documentation/regression-test.tely
Documentation/user/refman.itely
VERSION
input/regression/rest-pitch.ly [new file with mode: 0644]
input/regression/staccato-pos.ly
lily/accidental-engraver.cc
lily/align-interface.cc
lily/bar.cc
lily/break-align-item.cc
lily/collision.cc
lily/dynamic-performer.cc
lily/grob.cc
lily/include/main.hh
lily/instrument-name-engraver.cc
lily/item.cc
lily/lily-guile.cc
lily/main.cc
lily/midi-item.cc
lily/music.cc
lily/my-lily-lexer.cc
lily/note-column.cc
lily/parser.yy
lily/piano-pedal-performer.cc
lily/property-iterator.cc
lily/request-chord.cc
lily/rest-collision.cc
lily/rest-engraver.cc
lily/scm-option.cc
lily/script-engraver.cc
lily/script.cc
lily/separating-group-spanner.cc
lily/staff-symbol-referencer.cc
lily/system-start-delimiter-engraver.cc
lily/system-start-delimiter.cc
lily/third-try.cc
lily/translator-def.cc
lily/translator-group.cc
lily/volta-engraver.cc
ly/engraver-init.ly
ly/performer-init.ly
make/ly-rules.make
make/out/lilypond.lsm
make/out/lilypond.mandrake.spec
make/out/lilypond.redhat.spec
make/out/lilypond.suse.spec
scm/backend-documentation-lib.scm
scm/basic-properties.scm
scm/c++.scm
scm/drums.scm
scm/grob-description.scm
scm/grob-property-description.scm
scm/interface-description.scm
scm/music-functions.scm
scm/music-property-description.scm
scm/ps.scm
scm/translator-property-description.scm
scripts/convert-ly.py
scripts/lilypond-book.py

index 0d0686bc4f7521ecee376dc0f74c2a717282bceb..c8671a34e72552d5459795c64eb9d61c3040a5fc 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,34 @@
+2002-02-27  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * VERSION: 1.5.34 released.
+
+       * lily/rest-engraver.cc (create_grobs): rests can have pitches.
+
+       * lily/staff-symbol-referencer.cc (callback): assume that
+       staff-position is unset in general.
+
+       * input/regression/rest-pitch.ly: new file.
+
+       * lily/parser.yy (simple_element): rests can have pitch. Syntax:
+       a4\rest
+
+2002-02-26  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * lily/scm-option.cc (set_lily_option): add internal-type-checks
+       as Scheme option. Run regression test by default with
+       internal-type-checking.
+
+       * lily/separating-group-spanner.cc (find_musical_sequences):  removed.
+
+       * lily/lily-guile.cc (type_check_assignment): changed functions.
+
+       * scm/*description*.scm: be anal about typechecks. Some changes
+       for internal variable names.
+
+2002-02-25  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * scm/ps.scm: -f ps  output for GUILE 1.4 and 1.3.4
+
 2002-02-25  Han-Wen  <hanwen@cs.uu.nl>
 
        * VERSION: 1.5.33 released.
index 0dd22f2f2e8477b1122f1e6e0497e560dfdb683c..bda53f721248c213e063330e09d692fe511c3997 100644 (file)
@@ -4,7 +4,7 @@ NAME = documentation
 SUBDIRS=user bibliography pictures topdocs misc windows
 STEPMAKE_TEMPLATES=documentation texinfo tex
 LOCALSTEPMAKE_TEMPLATES=lilypond ly
-
+LILYPOND_BOOK_FLAGS=--extra-options '-e "(set-lily-option (quote internal-type-checking) \#t)"'
 README_TOP_FILES=NEWS DEDICATION CHANGES 
 EXTRA_DIST_FILES=
 
index 6dbe5dd5b9946f73fdfc8352186f06c4486879e6..208904fae8b7bbd0cc1d36ffa749f365f9199011 100644 (file)
@@ -39,6 +39,7 @@ documenting bugfixes.
 
 @lilypondfile[printfilename]{mm-rests2.ly}
 
+@lilypondfile[printfilename]{rest-pitch.ly}
 
 @section Accidentals
 
@@ -64,7 +65,6 @@ Accidentals are currently in a development stage.
 @lilypondfile[printfilename]{stem-direction-down.ly}
 
 
-
 @section Scripts
 
 @lilypondfile[printfilename]{staccato-pos.ly}
@@ -114,6 +114,8 @@ Grace note do weird things with timing. Fragile.
 
 @lilypondfile[printfilename]{grace-sync.ly}
 
+@lilypondfile[printfilename]{grace-bar-number.ly}
+
 
 @section Beams
 
@@ -280,6 +282,7 @@ Grace note do weird things with timing. Fragile.
 
 @lilypondfile[printfilename]{part-combine.ly}
 
+@lilypondfile[printfilename]{font-magnification.ly}
 
 @lilypondfile[printfilename,nofragment]{size11.ly}
 
index cad14bd54a8f5a39797d2c9ff92ae296291715b6..133e45f318eea2e5611294842b006e193264651c 100644 (file)
@@ -255,6 +255,14 @@ r1 r2 r4 r8
 The grob is @internalsref{Rest}. Whole bar rests centered in the bar are
 specified using @code{R}, see @ref{Multi measure rests}.
 
+For polyphonic music, it can be convenient to specify the rest position
+directly. You can do that by entering a note, with the keyword
+@code{\rest} appended, e.g. Rest collisions will leave these rests alone.
+
+@lilypond[singleline,verbatim]
+a'4\rest d'4\rest
+@end lilypond
+
 
 @c .  {Skips}
 @c FIXME: naming.
@@ -855,12 +863,10 @@ The easiest way to enter such fragments, is the Scheme function
 @code{\\}, to make multiple voices.  You can use it for small,
 short-lived voices (make a chord of voices) or for single chords:
 
-@lilypond
-\score {
-\notes \context Voice = VA \apply #voicify-music \relative c'' {
+@lilypond[verbatim,fragment]
+\context Voice = VA \apply #voicify-music \relative c'' {
  c4 < { f d e  } \\ { b c2 } > c4 < g' \\ c, \\  f \\ d >
 }
-}
 @end lilypond
 
 The function @code{voicify-music} instantiates @internalsref{Voice}
@@ -2869,12 +2875,11 @@ block:
 
 Figured bass is printed by @internalsref{FiguredBass} context.  This
 context will print notes (relative to the central C) as figures.  To
-ease entering these notes, the special @code{\figures} mode, is
+ease entering these notes, the special @code{\figures} mode is
 available which allows you to type numbers, like @code{<4 6+>}.
 
-@lilypond
-\score { \notes  <
- \context FiguredBass \transpose c'' {
+@lilypond[verbatim,fragment]
+< \context FiguredBass \transpose c'' {
    <e! g >
    <f8 ais >
    \figures {
@@ -2884,10 +2889,7 @@ available which allows you to type numbers, like @code{<4 6+>}.
  }
  \context Voice {
    c g8 g f4 d c
-  }
->
- }
+  } >
 @end lilypond
 
 @c . {Tuning output}
diff --git a/VERSION b/VERSION
index f0962d6456061a5808e072d9f4637c7d001802c9..01b2d92cf892e8ca15932740a1e4180e4505ad1b 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=5
-PATCH_LEVEL=33
+PATCH_LEVEL=34
 MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
diff --git a/input/regression/rest-pitch.ly b/input/regression/rest-pitch.ly
new file mode 100644 (file)
index 0000000..e864dad
--- /dev/null
@@ -0,0 +1,16 @@
+\header {
+
+texidoc = "Rests can have pitches--these will be affected by
+transposition and relativization. If a rest has a pitch, rest
+collision will leave it alone."
+
+}
+
+\score { \notes\relative c'' \apply #voicify-music
+{
+   a4\rest b4\rest c4\rest
+
+<d \\  d\rest^"rest pitch" >
+<d \\  r> 
+}
+}
index 38ff46b086c71f68651a5c5d74c77f608422ea9a..053307faa7fcc8ddb242c2ca9ff54515e6d7f61b 100644 (file)
@@ -7,14 +7,10 @@ not be on staff lines.
 "
 }
 \score { 
-  \context Voice \notes\relative c {
-    
-       e''4-. f-. d-.
-       c,-. b-. c'''-. d-.
-       
+  \context Voice \notes\relative c' {
+       e'4-. f-. d-. c-. b-. 
   }
   \paper {
     linewidth=-1.0
   }  
-  \midi { }
 }
index 9134f01ec0bb398ddf9333bccbf61af75bad784d..14dd955cd3a18914530f1a594bb57a87e3119ae7 100644 (file)
@@ -215,7 +215,7 @@ Accidental_engraver::create_grobs ()
                                         tie_break_reminder);
              Side_position_interface::add_support (key_item_p_,support_l);
              
-             support_l->set_grob_property ("accidentals", key_item_p_->self_scm ());
+             support_l->set_grob_property ("accidentals-grob", key_item_p_->self_scm ());
            }
          
 
index 15f8ec254b9f1aa5c1038ce641c5bd3a7fdc7ed3..0ab7a87b1b57491dc02ab35ddf04a8c73f41e5b5 100644 (file)
@@ -110,7 +110,7 @@ Align_interface::align_to_fixed_distance (Grob *me , Axis a)
 
 /*
   Hairy function to put elements where they should be. Can be tweaked
-  from the outside by setting minimum-space and extra-space in its
+  from the outside by setting minimum-space-pair and extra-space in its
   children
 
   We assume that the children the refpoints of the children are still
@@ -159,7 +159,7 @@ Align_interface::align_elements_to_extents (Grob * me, Axis a)
          Grob *e =dynamic_cast<Grob*> (all_grobs[i]);
 
          // todo: fucks up if item both in Halign & Valign. 
-         SCM min_dims = e->remove_grob_property ("minimum-space");
+         SCM min_dims = e->remove_grob_property ("minimum-space-pair");
          if (gh_pair_p (min_dims) &&
              gh_number_p (ly_car (min_dims))
              && gh_number_p (ly_cdr (min_dims)))
index 7ad1f12693a9fee9ca4b5e0f482bc57d3b521945..a390189a929d2bbbae3204d212775ad4c0d8f569 100644 (file)
@@ -153,7 +153,7 @@ Bar::before_line_breaking (SCM smob)
   
   if (!gh_string_p (g))
     {
-      me->set_grob_property ("molecule-callback", SCM_BOOL_T);
+      me->set_grob_property ("molecule-callback", SCM_EOL);
       me->set_extent_callback (SCM_EOL, X_AXIS);
       // leave y_extent for spanbar? 
     }
index fece9623638a366ece716b272ac0eff6fb333185..1c757807e20e38befbf948737cf973ad2f20fcdc 100644 (file)
@@ -136,7 +136,7 @@ Break_align_interface::do_alignment (Grob *me)
          warning (_f ("unknown spacing pair `%s', `%s'",
                       ly_symbol2string (current_origin),
                       ly_symbol2string (next_origin)));
-         extra_space = scm_list_n (ly_symbol2scm ("minimum-space"), gh_double2scm (0.0), SCM_UNDEFINED);
+         extra_space = scm_list_n (ly_symbol2scm ("minimum-space-pair"), gh_double2scm (0.0), SCM_UNDEFINED);
        }
 
       SCM symbol = ly_car (extra_space);
@@ -161,14 +161,14 @@ Break_align_interface::do_alignment (Grob *me)
 
 
   // urg
-  SCM first_pair = elems[0]->get_grob_property ("minimum-space");
+  SCM first_pair = elems[0]->get_grob_property ("minimum-space-pair");
   if (gh_pair_p (first_pair))
     first_pair = first_pair;
   else
     first_pair = gh_cons (gh_double2scm (0.0), gh_double2scm (0.0));
   
   scm_set_car_x (first_pair, gh_double2scm (-dists[0]));
-  elems[0]->set_grob_property ("minimum-space", first_pair);
+  elems[0]->set_grob_property ("minimum-space-pair", first_pair);
 
   Direction bsd = item->break_status_dir ();
   if (bsd == LEFT)
@@ -203,7 +203,7 @@ Break_align_interface::do_alignment (Grob *me)
       spring_len += dists.top ();
       stretch_distance = dists.top ();
     }
-  else if (ly_car (symbol_list) == ly_symbol2scm ("minimum-space"))
+  else if (ly_car (symbol_list) == ly_symbol2scm ("minimum-space-pair"))
     {
       spring_len = spring_len >? dists.top ();
       stretch_distance = spring_len;
index 7ae57a8ec6cd6d01cfa550c15e561ef5f3136c56..2dea673021517339d4509b08130f6c363ddb8283 100644 (file)
@@ -25,12 +25,10 @@ Collision::force_shift_callback (SCM element_smob, SCM axis)
   assert (a == X_AXIS);
   
    me = me->get_parent (a);
-  /*
-    ugh. the way DONE is done is not clean
-   */
-  if (!unsmob_grob (me->get_grob_property ("done")))
+
+   if (! to_boolean (me->get_grob_property ("collision-done")))
     {
-      me->set_grob_property ("done", me->self_scm ());
+      me->set_grob_property ("collision-done", SCM_BOOL_T);
       do_shifts (me);
     }
   
index a08c500dce4db9f35e52a867e5a07a7942afabbd..86a1b5e0a293324a1e472b7b5021685a10d4231f 100644 (file)
@@ -135,4 +135,4 @@ Dynamic_performer::try_music (Music* r)
 }
 
 ENTER_DESCRIPTION(Dynamic_performer,
-                 "","","","","");
+                 "","","","dynamicAbsoluteVolumeFunction midiMaximumVolume midiMinimumVolume midiInstrument instrumentEqualizer","");
index e9025beb46d04b5de7bee8d1d653c110b50ce9e8..4077188023f22a9ab952a30d153a3a7bd3f82d84 100644 (file)
@@ -168,10 +168,15 @@ Grob::set_immutable_grob_property (SCM s, SCM v)
 }
 #endif
 
-
 void
 Grob::internal_set_grob_property (SCM s, SCM v)
 {
+#ifndef NDEBUG
+  if (internal_type_checking_global_b)
+    assert (type_check_assignment (s, v, ly_symbol2scm ("backend-type?")));
+#endif
+
+  
   mutable_property_alist_ = scm_assq_set_x (mutable_property_alist_, s, v);
 }
 
@@ -818,6 +823,9 @@ ly_set_grob_property (SCM elt, SCM sym, SCM val)
       return SCM_UNSPECIFIED;
     }
 
+  if (!type_check_assignment (sym, val, ly_symbol2scm ("backend-type?")))
+    return SCM_UNSPECIFIED;
+      
   if (sc)
     {
       sc->internal_set_grob_property (sym, val);
index 69cc315faf54bfd46cf99224b830703c7f941f7b..0fadb2524af66638c513fe4427102a74e414c21b 100644 (file)
@@ -31,6 +31,8 @@ extern String output_name_global;
 extern bool safe_global_b;
 extern bool verbose_global_b;
 extern bool store_locations_global_b;
+extern bool internal_type_checking_global_b;
+
 
 /* misc */
 extern All_font_metrics *all_fonts_global_p;
index 18fc78f86f7a77d9f6a7fc24a15733bde506656e..884c39025bedf8092cff83d70997055e18f195e5 100644 (file)
@@ -1,5 +1,5 @@
 /*   
-  new-staff-margin-engraver.cc --  implement Instrument_name_engraver
+  instrument-name-engraver.cc --  implement Instrument_name_engraver
   
   source file of the GNU LilyPond music typesetter
   
@@ -101,6 +101,10 @@ Instrument_name_engraver::acknowledge_grob (Grob_info i)
     but is only a vehicle for the placement routine it contains, and
     therefore the location of its refpoint won't be very useful.
     
+
+    We could also just use staffsFound, but lets keep this working
+    without staffs as well.
+
   */
   if (dynamic_cast<Spanner*> (i.grob_l_)
       && ((Axis_group_interface::has_interface (i.grob_l_)
index e92ac8ac90afbffcb934c820e656808513545b60..b07210f8bc011a5f4dc0e17642686fa293da7832 100644 (file)
@@ -173,7 +173,7 @@ Item::handle_prebroken_dependencies ()
          set_extent_callback (SCM_EOL, Y_AXIS);
        }
       else if (trans)
-       set_grob_property ("molecule-callback", SCM_BOOL_T);
+       set_grob_property ("molecule-callback", SCM_EOL);
     }
 }
 
index c70f40e482f1a57663ea426e9360dde64fd6894c..12b925a56725b2eadd3b5ca2e77c53f4bdc11ac3 100644 (file)
@@ -609,9 +609,20 @@ SCM my_gh_symbol2scm (const char* x)
 
 
 bool
-type_check_assignment (SCM val, SCM sym,  SCM type_symbol) 
+type_check_assignment (SCM sym, SCM val,  SCM type_symbol) 
 {
   bool ok = true;
+
+  /*
+    Always succeeds.
+
+
+    TODO: should remove #f from allowed vals?
+   */
+  if (val == SCM_EOL || val == SCM_BOOL_F)
+    return ok;
+
+  
   SCM type_p = SCM_EOL;
 
   if (gh_symbol_p (sym))
@@ -619,8 +630,11 @@ type_check_assignment (SCM val, SCM sym,  SCM type_symbol)
 
   if (type_p != SCM_EOL && !gh_procedure_p (type_p))
       {
-       warning (_f ("Can't find property type-check for `%s'.  Perhaps you made a typing error? Doing assignment anyway.",
-                    ly_symbol2string (sym).ch_C ()));
+       warning (_f ("Can't find property type-check for `%s' (%s).  Perhaps you made a typing error? Doing assignment anyway.",
+                    ly_symbol2string (sym).ch_C (),
+                    ly_symbol2string (type_symbol).ch_C ()
+
+                    ));
       }
   else
     {
index d1158824c167db06075af6a161a064aa55e108ee..37d8dfff9eb07e1150f610959f3f992132b76518 100644 (file)
@@ -103,8 +103,8 @@ static Getopt_long *oparser_p_static = 0;
        follow regular localisation guidelines).
  */
 static Long_option_init options_static[] = {
-  /* print example usage:  lilypond -e "(set-lily-option 'help 0)" ? */
-  {_i ("EXPR"), "evaluate", 'e',_i ("evalute EXPR as Scheme after .scm init is read")},
+  /* print example usage:  lilypond -e "" ? */
+  {_i ("EXPR"), "evaluate", 'e',_i ("Scheme options: try -e \"(set-lily-option 'help 0)\" for more help.")},
   /* another bug in option parser: --output=foe is taken as an abbreviation
      for --output-format */
   {_i ("EXT"), "format", 'f',  _i ("use output format EXT (tex [default], pdftex, ps, scm or as)")},
index f894ce7f0029bc817e30f9e8895266d7e813520e..0203c2a9ce31657ff9ad6dae70f707c51b578617 100644 (file)
@@ -330,7 +330,7 @@ Midi_piano_pedal::str () const
     str += to_str ((char)0x42);
   else if (audio_l_->type_str_ == "Sustain")
     str += to_str ((char)0x40);
-  else if (audio_l_->type_str_ == "UnaChorda")
+  else if (audio_l_->type_str_ == "UnaCorda")
     str += to_str ((char)0x43);
 
   int pedal = ((1 - audio_l_->dir_) / 2) * 0x7f;
index 597afc58b22da9b6bcf7c5fe6077703771674967..b00c8519d66f1dc56a8efee83999f0e74e65118b 100644 (file)
@@ -6,6 +6,7 @@
   (c)  1997--2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
+#include "main.hh"
 #include "input-smob.hh"
 #include "music.hh"
 #include "music-list.hh"
@@ -167,9 +168,16 @@ Music::internal_get_mus_property (SCM sym) const
 }
 
 
+
 void
 Music::internal_set_mus_property (SCM s, SCM v)
 {
+#ifndef NDEBUG
+  if (internal_type_checking_global_b)
+    assert (type_check_assignment (s, v, ly_symbol2scm ("backend-type?")));
+#endif
+  
+
   mutable_property_alist_ = scm_assq_set_x (mutable_property_alist_, s, v);
 }
 
@@ -238,7 +246,7 @@ ly_set_mus_property (SCM mus, SCM sym, SCM val)
     }
 
 
-  bool ok = type_check_assignment (val, sym, ly_symbol2scm ("music-type?"));
+  bool ok = type_check_assignment (sym, val, ly_symbol2scm ("music-type?"));
   if (ok)
     {
       sc->internal_set_mus_property (sym, val);
index 658b052771340f1f1915d4505c375a7c0cdcaadb..767ebf54a2b9a34514609ccf297fe922b4e18bd1 100644 (file)
@@ -69,6 +69,7 @@ static Keyword_ent the_key_tab[]={
   {"outputproperty", OUTPUTPROPERTY},
   {"override", OVERRIDE},
   {"set", SET},
+  {"rest", REST},
   {"revert", REVERT},
   {"partial", PARTIAL},
   {"paper", PAPER},
index 27fd96730a8deee93843e3a62b42465a960803f3..b53a18deb4b163b2a5eddf3d1390bd21dd2d6253 100644 (file)
@@ -105,13 +105,14 @@ Note_column::add_head (Grob*me,Grob *h)
 }
 
 /**
-  translate the rest symbols vertically by amount DY_I.
- */
+  translate the rest symbols vertically by amount DY_I, but only if
+  they have no staff-position set.
+*/
 void
 Note_column::translate_rests (Grob*me,int dy_i)
 {
   Grob * r = unsmob_grob (me->get_grob_property ("rest"));
-  if (r)
+  if (r && !gh_number_p (r->get_grob_property ("staff-position")))
     {
       r->translate_axis (dy_i * Staff_symbol_referencer::staff_space (r)/2.0, Y_AXIS);
     }
@@ -150,7 +151,7 @@ Note_column::accidentals (Grob *me)
   for (;gh_pair_p (heads); heads =gh_cdr (heads))
     {
       Grob * h = unsmob_grob (gh_car (heads));
-      Grob *a = h ? unsmob_grob(h->get_grob_property ("accidentals")) : 0;
+      Grob *a = h ? unsmob_grob(h->get_grob_property ("accidentals-grob")) : 0;
       if (a)
        return a;
     }
index 4f3942169454d53111fd74a13ebe0de890c7b797..88e09abb57f0442ff10e6519ed17ef5b407701a6 100644 (file)
@@ -239,13 +239,14 @@ yylex (YYSTYPE *s,  void * v_l)
 %token TYPE
 %token UNSET
 %token CONTEXT
+%token REST
 
 /* escaped */
 %token E_CHAR E_EXCLAMATION E_SMALLER E_BIGGER E_OPEN E_CLOSE E_TILDE
 %token E_BACKSLASH
 %token CHORD_BASS CHORD_COLON CHORD_MINUS CHORD_CARET 
 
-%type <i>      exclamations questions dots
+%type <i>      exclamations questions dots optional_rest
 %type <i>      bass_number bass_mod
 %type <scm>    bass_figure figure_list figure_spec
 %token <i>     DIGIT
@@ -1034,7 +1035,7 @@ property_def:
                Music *t = new Music (SCM_EOL);
                t->set_mus_property ("iterator-ctor",
                        Push_property_iterator::constructor_cxx_function);
-               t->set_mus_property ("symbols", scm_string_to_symbol ($4));
+               t->set_mus_property ("symbol", scm_string_to_symbol ($4));
                t->set_mus_property ("pop-first", SCM_BOOL_T);
                t->set_mus_property ("grob-property", $6);
                t->set_mus_property ("grob-value", $8);
@@ -1050,7 +1051,7 @@ property_def:
                Music *t = new Music (SCM_EOL);
                t->set_mus_property ("iterator-ctor",
                        Push_property_iterator::constructor_cxx_function);
-               t->set_mus_property ("symbols", scm_string_to_symbol ($4));
+               t->set_mus_property ("symbol", scm_string_to_symbol ($4));
                t->set_mus_property ("grob-property", $6);
                t->set_mus_property ("grob-value", $8);
                Context_specced_music *csm = new Context_specced_music (SCM_EOL);
@@ -1066,7 +1067,7 @@ property_def:
                Music *t = new Music (SCM_EOL);
                t->set_mus_property ("iterator-ctor",
                        Pop_property_iterator::constructor_cxx_function);
-               t->set_mus_property ("symbols", scm_string_to_symbol ($4));
+               t->set_mus_property ("symbol", scm_string_to_symbol ($4));
                t->set_mus_property ("grob-property", $6);
 
                Context_specced_music *csm = new Context_specced_music (SCM_EOL);
@@ -1750,18 +1751,29 @@ figure_spec:
        }
        ;
 
+
+optional_rest:
+       /**/   { $$ = 0; }
+       | REST { $$ = 1; }
+       ;
+
 simple_element:
-       pitch exclamations questions optional_notemode_duration {
+       pitch exclamations questions optional_notemode_duration optional_rest {
 
                Input i = THIS->pop_spot ();
                if (!THIS->lexer_p_->note_state_b ())
                        THIS->parser_error (_ ("Have to be in Note mode for notes"));
 
-               Note_req *n = new Note_req;
+               Music *n = 0;
+               if ($5)
+                       n =  new Rest_req ;
+               else
+                       n =  new Note_req;
                
                n->set_mus_property ("pitch", $1);
                n->set_mus_property ("duration", $4);
 
+
                if ($3 % 2)
                        n->set_mus_property ("cautionary", SCM_BOOL_T);
                if ($2 % 2 || $3 % 2)
@@ -1769,7 +1781,7 @@ simple_element:
 
                Simultaneous_music*v = new Request_chord (SCM_EOL);
                v->set_mus_property ("elements", scm_list_n (n->self_scm (), SCM_UNDEFINED));
-               
+
                v->set_spot (i);
                n->set_spot (i);
                $$ = v;
index 798877414ba1fc4ae6f519a61738a7e526955f6d..fd32e92684349e8f3dad98b04b8ce2c5fdecab28 100644 (file)
@@ -55,7 +55,7 @@ Piano_pedal_performer::initialize ()
   info_alist_ = new Pedal_info[4];
   Pedal_info *p = info_alist_;
 
-  char * names [] = { "Sostenuto", "Sustain", "UnaChorda", 0  };
+  char * names [] = { "Sostenuto", "Sustain", "UnaCorda", 0  };
   char **np = names ;
   do
     {
index 726a79bf1da9553cd2af25af05dbb95b37693329..ad4452a3eee76d903d6d59456b746bd3f4fcf411 100644 (file)
@@ -24,7 +24,7 @@ Property_iterator::process (Moment m)
       SCM val = music_l ()->get_mus_property ("value");
       bool ok= true;
       if (val != SCM_EOL)
-       ok = type_check_assignment (val, sym, ly_symbol2scm ("translation-type?"));
+       ok = type_check_assignment (sym, val, ly_symbol2scm ("translation-type?"));
       if (ok)
        report_to_l ()->internal_set_property (sym, val);
     }
@@ -46,15 +46,15 @@ Property_unset_iterator::process (Moment m)
 void
 Push_property_iterator::process (Moment m)
 {
-  SCM syms = music_l ()->get_mus_property ("symbols");
+  SCM sym = music_l ()->get_mus_property ("symbol");
   SCM eprop = music_l ()->get_mus_property ("grob-property");
   SCM val = music_l ()->get_mus_property ("grob-value");
 
   if (to_boolean (music_l ()->get_mus_property ("pop-first")))
     Translator_def::apply_pushpop_property (report_to_l (),
-                                           syms, eprop, SCM_UNDEFINED);
+                                           sym, eprop, SCM_UNDEFINED);
 
-  Translator_def::apply_pushpop_property (report_to_l (), syms, eprop, val);
+  Translator_def::apply_pushpop_property (report_to_l (), sym, eprop, val);
   
   Simple_music_iterator::process (m);
 }
@@ -62,9 +62,9 @@ Push_property_iterator::process (Moment m)
 void
 Pop_property_iterator::process (Moment m)
 {
-  SCM syms = music_l ()->get_mus_property ("symbols");
+  SCM sym = music_l ()->get_mus_property ("symbol");
   SCM eprop = music_l ()->get_mus_property ("grob-property");
-  Translator_def::apply_pushpop_property (report_to_l (), syms, eprop, SCM_UNDEFINED);
+  Translator_def::apply_pushpop_property (report_to_l (), sym, eprop, SCM_UNDEFINED);
   
   Simple_music_iterator::process (m);
 }
index 170d4996dfb3e989d48a0864fef425a11d37cfe7..322cf49e03ea563cd22ae24836d46b667b6b5244 100644 (file)
@@ -22,15 +22,26 @@ Request_chord::to_relative_octave (Pitch last)
   for (SCM s = music_list (); gh_pair_p (s);  s = ly_cdr (s))
     {
       Music * mus = unsmob_music (ly_car (s));
-      if (Melodic_req *m= dynamic_cast <Melodic_req *> (mus))
+      Melodic_req *m= dynamic_cast <Melodic_req *> (mus);
+
+      /*
+       kLudge: rests have pitches now as well.
+       */
+      Rest_req *r = dynamic_cast<Rest_req*> (mus);
+      
+      if (r || m)
        {
-         Pitch pit = *unsmob_pitch (m->get_mus_property ("pitch"));
+         Pitch *old_pit = unsmob_pitch (mus->get_mus_property ("pitch"));
+         if (!old_pit)
+           continue;
          
-         pit.to_relative_octave (last);
-         m->set_mus_property ("pitch", pit.smobbed_copy ());
-                 
-         return pit;
+         Pitch new_pit = *old_pit;
+         new_pit.to_relative_octave (last);
+         mus->set_mus_property ("pitch", new_pit.smobbed_copy ());
+
+         return new_pit;
        }
+
     }
   return last;
 }
index 4edc714963c2c014e1e0adc675fc37812008b42e..9f4588d0ed75bacfc166afc36b3776acd1a9cabb 100644 (file)
@@ -33,6 +33,8 @@ Rest_collision::force_shift_callback (SCM element_smob, SCM axis)
     {
       /*
        Done: destruct pointers, so we do the shift only once.
+
+       TODO: use rest-collision-done
       */
       SCM elts = rc->get_grob_property ("elements");
       rc->set_grob_property ("elements", SCM_EOL);
index 72582135c2ada844919efd9b97046edd0781c3e0..cb92159fecedfad2471cf6ceb6429179c4109d7c 100644 (file)
@@ -22,10 +22,9 @@ protected:
   virtual bool try_music (Music *);
   virtual void stop_translation_timestep ();
   virtual void start_translation_timestep ();
-  virtual void create_grobs ();
+  virtual void process_music ();
 
 public:
-  
   TRANSLATOR_DECLARATIONS(Rest_engraver);
 };
 
@@ -62,13 +61,13 @@ Rest_engraver::stop_translation_timestep ()
 }
 
 void
-Rest_engraver::create_grobs ()
+Rest_engraver::process_music ()
 {
   if (rest_req_l_ && !rest_p_) 
     {
       rest_p_ = new Item (get_property ("Rest"));
       Rhythmic_head::set_interface (rest_p_);
-      Staff_symbol_referencer::set_interface (rest_p_);
+
       
       int durlog  = unsmob_duration (rest_req_l_->get_mus_property ("duration"))-> duration_log ();
       
@@ -87,6 +86,22 @@ Rest_engraver::create_grobs ()
          announce_grob (dot_p_, SCM_EOL);
        }
 
+      Pitch *p = unsmob_pitch (rest_req_l_->get_mus_property ("pitch"));
+
+      /*
+       This is ridiculous -- rests don't have pitch, but we act as if
+       our nose is bleeding.
+       */
+      if (p)
+       {
+         int pos= p->steps ();
+         SCM c0 = get_property ("centralCPosition");
+         if (gh_number_p (c0))
+           pos += gh_scm2int (c0);
+         
+         rest_p_->set_grob_property ("staff-position", gh_int2scm (pos));
+       }
+      
       announce_grob(rest_p_, rest_req_l_->self_scm());
     }
 }
@@ -108,5 +123,5 @@ ENTER_DESCRIPTION(Rest_engraver,
 /* descr */       "",
 /* creats*/       "Rest Dots",
 /* acks  */       "",
-/* reads */       "",
+/* reads */       "centralCPosition",
 /* write */       "");
index 5e38876b0d456b33ca5d90928fc0bf1f9aadb72b..2eac1482aca2df84441d60cfb0a720e54163d4db 100644 (file)
@@ -33,7 +33,10 @@ bool midi_debug_global_b;
 /* General purpose testing flag */
 int testing_level_global;
 
-
+/*
+  crash if internally the wrong type is used for a grob property.
+ */
+bool internal_type_checking_global_b;
 
 /*
 
@@ -59,15 +62,22 @@ set_lily_option (SCM var, SCM val)
    */
   if (var == ly_symbol2scm ("help"))
     {
-      cout << '\n';
-      cout << _ ("Scheme options:");
-      cout << '\n';
-      cout << "  help (any-symbol)"; 
-      cout << '\n';
-      cout << "  midi-debug (boolean)"; 
-      cout << '\n';
-      cout << "  testing-level (int)"; 
-      cout << '\n';
+      cout << _("lilypond -e EXPR means
+
+evalute EXPR as Scheme after init.scm has been read.  In particular,
+the function set-lily-option allows for access to some internal
+variables. Usage:
+
+  (set-lily-option SYMBOL VAL)
+
+possible options for SYMBOL are :
+")<<endl;
+      
+      cout << "  help (any-symbol)"<<endl; 
+      cout << "  internal-type-checks #t"<<endl; 
+      cout << "  midi-debug (boolean)"<<endl; 
+      cout << "  testing-level (int)"<<endl; 
+
       exit (0);
     }
   else if (var == ly_symbol2scm ("midi-debug"))
@@ -78,6 +88,10 @@ set_lily_option (SCM var, SCM val)
     {
      testing_level_global = gh_scm2int (val); 
     }
+  else if (var == ly_symbol2scm ("internal-type-checks"))
+    {
+     internal_type_checking_global_b = to_boolean (val); 
+    }
   else if (var == ly_symbol2scm ("find-old-relative"))
     {
       /*
index 7b38dbddf203bf6fd2a1f4cef93e87dbfc0f8b80..3ef8142b94eb42c2b96b3e05369bdf196dd1dcad 100644 (file)
@@ -69,7 +69,7 @@ Script_engraver::process_music ()
       // todo -> use result of articulation-to-scriptdef directly as basic prop list.
       Grob *p =new Item (get_property ("Script"));
       art = ly_cdr (art);
-      p->set_grob_property ("molecule", ly_car (art));
+      p->set_grob_property ("script-molecule", ly_car (art));
 
       art = ly_cdr (art);
       bool follow_staff = gh_scm2bool (ly_car (art));
@@ -96,7 +96,7 @@ Script_engraver::process_music ()
       SCM axisprop = get_property ("scriptHorizontal");
       bool xaxis = to_boolean (axisprop);
       Side_position_interface::set_axis (p, xaxis ? X_AXIS : Y_AXIS);
-      
+
       if (!follow_staff && ! xaxis)
        p->set_grob_property ("staff-support", SCM_BOOL_T);
 
@@ -152,6 +152,10 @@ Script_engraver::stop_translation_timestep ()
 {
   for (int i=0; i < script_p_arr_.size (); i++) 
     {
+
+      /*
+       TODO: junk staff-support.
+       */
       Grob * sc = script_p_arr_[i];
       if (to_boolean (sc->get_grob_property ("staff-support")))
        {
index 44ee942f2a71775b14010fa5223d8d14379423b9..5ae6152f3d3259c59dd868ae3ba5eac1777c15f5 100644 (file)
@@ -19,7 +19,7 @@
 Molecule
 Script::get_molecule (Grob * me, Direction d)
 {
-  SCM s = me->get_grob_property ("molecule");
+  SCM s = me->get_grob_property ("script-molecule");
   assert (gh_pair_p (s));
 
   SCM key = ly_car (s);
index 6b5e98dbc63c93b1960ea1501e29699f33970e82..c8a74111c5ac5dac283934ec24be0e707bb975f3 100644 (file)
@@ -76,7 +76,7 @@ SCM
 Separating_group_spanner::set_spacing_rods_and_seqs (SCM smob)
 {
   set_spacing_rods (smob);
-  find_musical_sequences (unsmob_grob (smob));
+
   return SCM_UNSPECIFIED;
 }
 
@@ -104,7 +104,6 @@ Separating_group_spanner::set_spacing_rods (SCM smob)
       if (rb)
        find_rods (rb, ly_cdr (s));
     }
-  find_musical_sequences (me);
 
 #if 0
   /*
@@ -136,103 +135,6 @@ Separating_group_spanner::add_spacing_unit (Grob* me ,Item*i)
 }
 
 
-void
-Separating_group_spanner::find_musical_sequences (Grob *me)
-{
-  Item *last = 0;
-  Item *llast = 0;
-  for (SCM s = me->get_grob_property ("elements");
-       gh_pair_p (s); s = ly_cdr (s))
-    {
-      Item *it = dynamic_cast<Item*> (unsmob_grob (ly_car (s)));
-      if (last)
-       {       
-         Item *lcol = last->column_l ();
-         Item *col = it->column_l ();
-
-         int lrank = Paper_column::rank_i (lcol);
-         int rank = Paper_column ::rank_i (col);
-
-         bool mus = Paper_column::musical_b (col);
-         bool lmus = Paper_column::musical_b (lcol);
-
-         if ((lrank - rank == 2) && lmus && mus)
-           {
-             SCM seq = col->get_grob_property ("spacing-sequence");
-             col->set_grob_property ("spacing-sequence",
-                                     gh_cons (gh_cons (it->self_scm (), last->self_scm ()), seq));
-           }
-
-         if (llast && !Paper_column::breakable_b (last))
-           {
-             Item *llcol = llast->column_l ();
-             int llrank = Paper_column::rank_i (llcol);
-             bool llmus= Paper_column::musical_b (llcol);
-             if (llrank - lrank == 1
-                 && lrank - rank == 1
-                 && llmus && !lmus && mus)
-               {
-                 /*
-                   these columns are adjacent, so set spacing-sequence in
-                   IT.
-                   
-                    Q     Q+1    Q+2   (rank)
-                   Note  Clef   Note
-
-                   IT    LAST   LLAST  
-                   
-                  */
-                 SCM seq = col->get_grob_property ("spacing-sequence");
-                 col->set_grob_property ("spacing-sequence",
-                                         gh_cons (gh_cons (it->self_scm (), last->self_scm ()), seq));
-
-                 /*
-                   lcol can not be a loose column, so we make sure
-                   that is and will not be marked as such.
-                 */
-                 lcol->set_grob_property ("between-cols" ,  SCM_BOOL_F);
-               }
-             else if (!lmus)
-               {
-                 SCM between = lcol->get_grob_property ("between-cols");
-
-                 if (between == SCM_BOOL_F)
-                   continue;
-                 
-                 if (!gh_pair_p (between))
-                   {
-                     between = gh_cons (it->self_scm (), llast->self_scm ());
-                     lcol ->set_grob_property ("between-cols", between);
-                   }
-
-                 Item * left
-                   = dynamic_cast<Item*> (unsmob_grob (ly_car (between)));
-                 if(Paper_column::rank_i (left->column_l ()) < rank)
-                   gh_set_car_x (between, col->self_scm());
-                 
-                 Item * right
-                   = dynamic_cast<Item*> (unsmob_grob (ly_cdr (between)));
-                 if (Paper_column::rank_i (right->column_l ()) > llrank )
-                   gh_set_cdr_x (between, llcol->self_scm ());
-               }
-           }
-       }
-
-      llast = last;
-      last = it;
-    }
-}
-
-#if 0
-void
-Separating_group_spanner::set_loose_rods ()
-{
-  // loose columns should  also generate minimum distances.
-  // TODO
-}
-#endif
-
-
 void
 Separating_group_spanner::set_interface (Grob*)
 {
index 57cf6ec0b53b0d2716b168608421ddb358165501..e63efa1b309298e08b67bafce0cd9cd3674ded59 100644 (file)
@@ -99,10 +99,9 @@ Staff_symbol_referencer::callback (SCM element_smob, SCM)
     {
       Real space = Staff_symbol_referencer::staff_space (me);
       off = gh_scm2double (pos) * space/2.0;
+      me->set_grob_property ("staff-position", gh_double2scm (0.0));
     }
 
-  me->set_grob_property ("staff-position", gh_double2scm (0.0));
-
   return gh_double2scm (off);
 }
 
@@ -164,9 +163,6 @@ compare_position (Grob *const  &a, Grob * const &b)
 void
 Staff_symbol_referencer::set_interface (Grob * e)
 {
-  if (!gh_number_p (e->get_grob_property ("staff-position")))
-      e->set_grob_property ("staff-position", gh_double2scm (0.0));
-
   e->add_offset_callback (Staff_symbol_referencer::callback_proc, Y_AXIS);
 }
 
index fe40a06b84d19c51f7e7f45d13e35f05517ee971..6dd02513da3bebefbcfc469ad9596c2c3381723e 100644 (file)
@@ -49,11 +49,11 @@ System_start_delimiter_engraver::acknowledge_grob (Grob_info inf)
       /*
        UGH UGH
        */
-      if (gh_symbol_p (gl) && gl  == ly_symbol2scm ("brace")
-         && gh_symbol_p (my_gl) && my_gl == ly_symbol2scm ("bracket"))
+      if (gh_string_p (gl) && gh_equal_p (gl, ly_symbol2scm ("brace"))
+         && gh_string_p (my_gl) && gh_equal_p (my_gl, ly_symbol2scm ("bracket")))
        inf.grob_l_->translate_axis (-0.8, X_AXIS); // ugh
-      else if (gh_symbol_p (gl) && gl  == ly_symbol2scm ("bracket")
-              && gh_symbol_p (my_gl) && my_gl == ly_symbol2scm ("bracket"))
+      else if (gh_string_p (gl) && gh_equal_p (gl, ly_symbol2scm ("bracket"))
+              && gh_string_p (my_gl) && gh_equal_p (my_gl, ly_symbol2scm ("bracket")))
        {
          inf.grob_l_->translate_axis ( -0.8, X_AXIS); // ugh
          inf.grob_l_->set_grob_property ("arch-height",
@@ -71,7 +71,7 @@ System_start_delimiter_engraver::System_start_delimiter_engraver ()
 void
 System_start_delimiter_engraver::initialize ()
 {
-  SCM delim_name =get_property ("SystemStartDelimiter");
+  SCM delim_name =get_property ("systemStartDelimiter");
   delim_ = new Spanner (internal_get_property (delim_name));
 
   delim_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn")));
@@ -91,5 +91,5 @@ ENTER_DESCRIPTION(System_start_delimiter_engraver,
 /* descr */       "creates a system start delimiter (ie. SystemStart@{Bar,Brace,Bracket@} spanner",
 /* creats*/       "SystemStartBar SystemStartBrace SystemStartBracket",
 /* acks  */       "system-start-delimiter-interface staff-symbol-interface",
-/* reads */       "",
+/* reads */       "systemStartDelimiter",
 /* write */       "");
index e2c4f02d87f0f3d7e0714eb5a387a68822b005e8..b526caebb841ecc37e499b70a9b746e45d31d007 100644 (file)
@@ -84,8 +84,8 @@ System_start_delimiter::after_line_breaking (SCM smob)
 {
   Grob * me = unsmob_grob (smob);
   SCM   gl = me->get_grob_property ("glyph");
-  
-  if (scm_ilength (me->get_grob_property ("elements")) <=  1 && gl == ly_symbol2scm ("bar-line"))
+
+  if (scm_ilength (me->get_grob_property ("elements")) <=  1 && gh_equal_p (gl,ly_str02scm ("bar-line")))
     {
       me->suicide ();
     }
index ee3677cb9a15e26060bb179307bec4cecfabff36..2690c877c7601f53c71072dce133325ac51dc9dd 100644 (file)
@@ -39,9 +39,9 @@ public:
   static Real note_spacing (Grob*,Grob*,Grob*,Moment)  ;
   static Real get_duration_space (Grob*,Moment dur, Moment shortest) ;
   
-  static   void breakable_column_spacing (Item* l, Item *r);
-  static  void find_loose_columns () {}
-  static  void prune_loose_colunms (Link_array<Grob> *cols);
+  static void breakable_column_spacing (Item* l, Item *r);
+  static void find_loose_columns () {}
+  static void prune_loose_colunms (Link_array<Grob> *cols);
   static void find_loose_columns (Link_array<Grob> cols);
   static void set_explicit_neighbor_columns (Link_array<Grob> cols);
   static void set_implicit_neighbor_columns (Link_array<Grob> cols);
index 2533c486cc64ba6e25b79e12f49f6477a650a870..79c4087bdbacbb8cd6b5587281e6983531d256aa 100644 (file)
@@ -138,16 +138,13 @@ Translator_def::add_pop_property (SCM props, SCM syms)
 }
 
 /*
-  Do it. SYMS maybe a symbol or a list of symbols. VAL is
-  SCM_UNDEFINED in case of a pop
+  Do it. SYM is single symbol. VAL is SCM_UNDEFINED in case of a pop
 */
 void
-Translator_def::apply_pushpop_property (Translator_group* me,SCM syms, SCM eprop, SCM val)
+Translator_def::apply_pushpop_property (Translator_group* me,SCM sym, SCM eprop, SCM val)
 {
-  if (gh_symbol_p (syms))
-    dynamic_cast<Translator_group*> (me)->execute_single_pushpop_property (syms, eprop, val);
-  else for (SCM s = syms; gh_pair_p (s); s = ly_cdr (s))
-    dynamic_cast<Translator_group*> (me)->execute_single_pushpop_property (ly_car (s), eprop, val);
+  dynamic_cast<Translator_group*> (me)
+    ->execute_single_pushpop_property (sym, eprop, val);
 }
 
 
index 90e0c70acc19cb00f23d4bf8e02655ddcb1a91c0..48384af09fef845392f862794aabd20f2c155487 100644 (file)
@@ -13,6 +13,7 @@
 #include "moment.hh"
 #include "scm-hash.hh"
 #include "translator-def.hh"
+#include "main.hh"
 
 Translator_group::Translator_group (Translator_group const&s)
   : Translator (s)
@@ -300,10 +301,14 @@ Translator_group::internal_get_property (SCM sym) const
   return val;
 }
 
-
 void
 Translator_group::internal_set_property (SCM sym, SCM val)
 {
+#ifndef NDEBUG
+  if (internal_type_checking_global_b)
+    assert (type_check_assignment (sym, val, ly_symbol2scm ("backend-type?")));
+#endif
+  
   properties_dict ()->set (sym, val);
 }
 
@@ -332,7 +337,7 @@ Translator_group::execute_single_pushpop_property (SCM prop, SCM eltprop, SCM va
 
          if (gh_pair_p (prev) || prev == SCM_EOL)
            {
-             bool ok = type_check_assignment (val, eltprop, ly_symbol2scm ("backend-type?"));
+             bool ok = type_check_assignment (eltprop, val, ly_symbol2scm ("backend-type?"));
              
              if (ok)
                {
@@ -442,3 +447,4 @@ add_trans_scm_funcs ()
 }
 
 ADD_SCM_INIT_FUNC (trans_scm, add_trans_scm_funcs);
+
index 411cbc07da0d2d428014e4b30815448eb135f6d3..4d03ac6ea3857575e003a4066fb99751c5974d84 100644 (file)
@@ -111,13 +111,6 @@ Volta_engraver::process_music ()
     {
       end_volta_span_p_ = volta_span_p_;
       volta_span_p_ =0;
-
-      /*
-       maybe do typeset_grob () directly?
-      */
-
-      if (!gh_string_p (start_str_))
-       end_volta_span_p_->set_grob_property ("last-volta", SCM_BOOL_T);
     }
 
   if (gh_string_p (start_str_) && volta_span_p_)
index f3f78f9997ade90b9e4d220a077848a09f352ab1..1981cdd065a140e7f0fc3fbb445ad8aba8b117e7 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.3.146"
+\version "1.5.33"
 
 %
 % setup for Request->Element conversion. Guru-only
@@ -66,7 +66,7 @@ InnerChoirStaffContext = \translator {
        \name InnerChoirStaff
        alignmentReference = #0
        \consists "System_start_delimiter_engraver"
-       SystemStartDelimiter = #'SystemStartBracket
+       systemStartDelimiter = #'SystemStartBracket
 
        \accepts "Staff"
        \accepts "RhythmicStaff"
@@ -178,7 +178,7 @@ GrandStaffContext=\translator{
        \consists "Span_bar_engraver"
        \consists "Span_arpeggio_engraver"
        \consists "System_start_delimiter_engraver"
-       SystemStartDelimiter = #'SystemStartBrace
+       systemStartDelimiter = #'SystemStartBrace
        Generic_property_list = #generic-grand-staff-properties
        \accepts "Staff"
 }
@@ -190,8 +190,8 @@ PianoStaffContext = \translator{
        \consists "Vertical_align_engraver"
        \consists "Instrument_name_engraver"
        
-       instrument = ##f
-       instr = ##f
+       instrument = #'()
+       instr = #'()
        
        verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
        VerticalAlignment \override #'forced-distance = #12
@@ -206,7 +206,7 @@ InnerStaffGroupContext= \translator {
        \consists "Span_bar_engraver"
        \consists "Span_arpeggio_engraver"
        \consists "Output_property_engraver"    
-       SystemStartDelimiter = #'SystemStartBracket
+       systemStartDelimiter = #'SystemStartBracket
 
        \consists "System_start_delimiter_engraver"
        \accepts "Staff"
@@ -355,9 +355,9 @@ ScoreContext = \translator {
        soloADue = ##t
        splitInterval = #'(0 . 1)
        changeMoment = #`(,(make-moment 0 0) . ,(make-moment 1 512))
-       SystemStartDelimiter =#'SystemStartBar
-       barAuto = ##t
-       voltaVisibility = ##t
+       systemStartDelimiter =#'SystemStartBar
+
+
        %  name, glyph id, clef position 
        % where is c0 in this clef?
 
@@ -366,7 +366,7 @@ ScoreContext = \translator {
        centralCPosition = #-6
        
         automaticPhrasing = ##t
-       alignmentReference = #-1   % \down
+
        defaultBarType = #"|"
 
        explicitClefVisibility = #all-visible
index cd7700b55af440cd3e19848724254b3346fe7368..748e29229c7659e3f3e3c04712e25de8e52cc2b1 100644 (file)
@@ -10,7 +10,7 @@ StaffContext = \translator {
        \consists "Key_performer"
        \consists "Tempo_performer"
        \consists "Time_signature_performer"
-       dynamicStyle = #"dynamic"
+
 }
 \translator { \StaffContext }
 \translator { \StaffContext
index 81cb51cb6d6edd4fa4a65941ec30aed92f301f47..2f5b4942352f01a5b951e7570fc1ee918cb56ed7 100644 (file)
@@ -5,19 +5,20 @@
 
 $(outdir)/%.latex: %.doc
        rm -f $@
-       $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --dependencies --outdir=$(outdir) $<
+       $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES)\
+$(LILYPOND_BOOK_FLAGS) --dependencies --outdir=$(outdir) $<
        chmod -w $@
 
 # don't do ``cd $(outdir)'', and assume that $(outdir)/.. is the src dir.
 # it is not, for --srcdir builds
 $(outdir)/%.texi: %.tely
        rm -f $@
-       $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --dependencies --outdir=$(outdir) --format=texi $<
+       $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --dependencies --outdir=$(outdir) --format=texi $(LILYPOND_BOOK_FLAGS) $<
        chmod -w $@
 
 $(outdir)/%.texi: $(outdir)/%.tely
        rm -f $@
-       $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --dependencies --outdir=$(outdir) --format=texi $<
+       $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --dependencies --outdir=$(outdir) --format=texi $(LILYPOND_BOOK_FLAGS) $<
        rm -f $<
        chmod -w $@
 
@@ -25,7 +26,7 @@ $(outdir)/%.texi: $(outdir)/%.tely
 # for plain info doco: don't run lily
 $(outdir)/%.nexi: %.tely
        rm -f $@
-       $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --dependencies --outdir=$(outdir) --format=texi --no-lily $<
+       $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --dependencies --outdir=$(outdir) --format=texi --no-lily $(LILYPOND_BOOK_FLAGS) $<
        mv $(@D)/$(*F).texi $@
        chmod -w $@
 
index 475282d9964f0d24db21d3aed661c33dff2b1811..06c7e0a86d4f824f86d8a35121363e23a1484a5a 100644 (file)
@@ -1,15 +1,15 @@
 Begin3
 Title: LilyPond
-Version: 1.5.33
-Entered-date: 25FEB02
+Version: 1.5.34
+Entered-date: 27FEB02
 Description: @BLURB@
 Keywords: music notation typesetting midi fonts engraving
 Author: hanwen@cs.uu.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
-       1000k lilypond-1.5.33.tar.gz 
+       1000k lilypond-1.5.34.tar.gz 
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       1000k lilypond-1.5.33.tar.gz 
+       1000k lilypond-1.5.34.tar.gz 
 Copying-policy: GPL
 End
index e7048e0450f55f857d04b0aa80d265ede616a614..d254955eb1995dc352a0487c405b370e4c5d9b76 100644 (file)
@@ -1,5 +1,5 @@
 %define name lilypond
-%define version 1.5.33
+%define version 1.5.34
 %define release 1mdk
 
 Name: %{name}
index 3f552ed47a32795b9563a19b2bae0e5b25842432..0d3f3fabb74598542b9a0336c6094f69e4696225 100644 (file)
@@ -3,11 +3,11 @@
 %define info yes
 
 Name: lilypond
-Version: 1.5.33
+Version: 1.5.34
 Release: 1
 License: GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.33.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.34.tar.gz
 Summary: Create and print music notation 
 URL: http://www.lilypond.org/
 BuildRoot: /tmp/lilypond-install
index 25e6c57d0b427691b8babfc745ffc58bc50c7d9c..4a388e55a30fe9154b19a68d3a76973e6ad03b48 100644 (file)
 
 Distribution: SuSE Linux 7.0 (i386)
 Name: lilypond
-Version: 1.5.33
+Version: 1.5.34
 Release: 2
 Copyright:    GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.33.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.34.tar.gz
 # music notation software for.. ?
 Summary: A program for printing sheet music.
 URL: http://www.lilypond.org/
index 3ea5632c0bb37965095eadd741e264244e176a8c..87b7e079dea96cd2c10341f5bc08323d4b865212 100644 (file)
 
       (define (number-pair?  x)
        (and (pair? x) (number? (car x)) (number? (cdr x))))
-      
       (define (ly-grob? x) #f)
       (define (ly-input-location? x) #f)
       (define (dir? x) #f)
index e3c781c1bcea9ef685be3d978b8045e4cc4da64f..57c77912b4de063a1b9554aabe155349fc5de945 100644 (file)
                          ("||:" . ("||" . "|:"))
                          ("|" . ("|" . ""))
                          ("||:" . ("||" . "|:"))
-                         ("|s" . (nil . "|"))
+                         ("|s" . (() . "|"))
                          ("|:" . ("|" . "|:"))
-                         ("|." . ("|." . nil))
-                         (".|" . (nil . ".|"))
-                         (":|" . (":|" . nil))
-                         ("||" . ("||" . nil))
-                         (".|." . (".|." . nil))
+                         ("|." . ("|." . ()))
+                         (".|" . (() . ".|"))
+                         (":|" . (":|" . ()))
+                         ("||" . ("||" . ()))
+                         (".|." . (".|." . ()))
                          ("" . ("" . ""))
-                         ("empty" . ("nil" . nil))
-                         ("brace" . (nil . "brace"))
-                         ("bracket" . (nil . "bracket"))  
+                         ("empty" . ("()" . ()))
+                         ("brace" . (() . "brace"))
+                         ("bracket" . (() . "bracket"))  
                          )
                        )))
 
 ;; See [Wanske] page 126 -- 134, [Ross] pg 143 -- 147
 ;;
 
-;; documentme: difference between extra-space and minimum-space
-
-;; documentme: difference between extra-space and minimum-space
+;; documentme: difference between extra-space and minimum-space-pair 
 
 ;; (Measured in staff space)
 (define default-break-align-space-alist
  '(
-   ((Staff_bar Custos) . (minimum-space 2.0))
-   ((Custos begin-of-note) . (minimum-space 0.0))
+   ((Staff_bar Custos) . (minimum-space-pair  2.0))
+   ((Custos begin-of-note) . (minimum-space-pair  0.0))
    ((none Instrument_name) . (extra-space 1.0))
    ((Instrument_name Left_edge_item) . (extra-space 1.0))
    ((Left_edge_item Clef_item) . (extra-space 1.0))
    ((Left_edge_item Staff_bar) . (extra-space 0.0))
 ;   ((none Left_edge_item) . (extra-space -15.0))
 ;   ((none Left_edge_item) . (extra-space -15.0))
-   ((none Clef_item) . (minimum-space 1.0))
-   ((none Staff_bar) . (minimum-space 0.0))
-   ((none Clef_item) . (minimum-space 1.0))
-   ((none Key_item) . (minimum-space 0.5))
+   ((none Clef_item) . (minimum-space-pair  1.0))
+   ((none Staff_bar) . (minimum-space-pair  0.0))
+   ((none Clef_item) . (minimum-space-pair  1.0))
+   ((none Key_item) . (minimum-space-pair  0.5))
    ((none Time_signature) . (extra-space 0.0))
-   ((none begin-of-note) . (minimum-space 1.5))
-   ((Clef_item Key_item) . (minimum-space 4.0))
+   ((none begin-of-note) . (minimum-space-pair  1.5))
+   ((Clef_item Key_item) . (minimum-space-pair  4.0))
    ((Key_item Time_signature) . (extra-space 1.0))
-   ((Clef_item  Time_signature) . (minimum-space 3.5))
-   ((Staff_bar Clef_item) .   (minimum-space 1.0))
-   ((Clef_item  Staff_bar) .  (minimum-space 3.7))
-   ((Time_signature Staff_bar) .  (minimum-space 2.0))
+   ((Clef_item  Time_signature) . (minimum-space-pair  3.5))
+   ((Staff_bar Clef_item) .   (minimum-space-pair  1.0))
+   ((Clef_item  Staff_bar) .  (minimum-space-pair  3.7))
+   ((Time_signature Staff_bar) .  (minimum-space-pair  2.0))
    ((Key_item  Staff_bar) .  (extra-space 1.0))
-   ((Staff_bar Time_signature) . (minimum-space 1.5)) 
+   ((Staff_bar Time_signature) . (minimum-space-pair  1.5)) 
    ((Time_signature begin-of-note) . (extra-space 2.0)) 
    ((Key_item begin-of-note) . (extra-space 2.5))
    ((Staff_bar begin-of-note) . (extra-space 1.0))
-   ((Clef_item begin-of-note) . (minimum-space 5.0))
-   ((Left_edge_item Breathing_sign) . (minimum-space 0.0))   
-   ((none Breathing_sign) . (minimum-space 0.0))
-   ((Breathing_sign Key_item) . (minimum-space 1.5))
-   ((Breathing_sign begin-of-note) . (minimum-space 1.0))
-   ((Breathing_sign Staff_bar) . (minimum-space 1.5))
-   ((Breathing_sign Clef_item) . (minimum-space 2.0))
+   ((Clef_item begin-of-note) . (minimum-space-pair  5.0))
+   ((Left_edge_item Breathing_sign) . (minimum-space-pair  0.0))   
+   ((none Breathing_sign) . (minimum-space-pair  0.0))
+   ((Breathing_sign Key_item) . (minimum-space-pair  1.5))
+   ((Breathing_sign begin-of-note) . (minimum-space-pair  1.0))
+   ((Breathing_sign Staff_bar) . (minimum-space-pair  1.5))
+   ((Breathing_sign Clef_item) . (minimum-space-pair  2.0))
    )
 )
index e2a807e76b08c884d8219327ec4de3e6bdf587b1..dc1bad45a80a2ba913ca64adcca1ebd167d8e527 100644 (file)
 (define (number-pair?  x)
   (and (pair? x)
        (number? (car x)) (number? (cdr x))))
-
+(define (number-or-grob? x)
+  (or (ly-grob? x) (number? x))
+  )
+        
 (define (moment-pair?  x)
   (and (pair? x)
        (moment? (car x)) (moment? (cdr x))))
@@ -57,6 +60,7 @@
    (,number-or-string? . "number or string")
    (,number-or-boolean? . "number or boolean")
    (,markup? . "markup (list or string)")
+   (,number-or-grob? . "number or grob")
    ))
 
 
index 45d8e6be195fb789e7d63b82419f88422ba929ba..e3862259f1f3d078b84454e2cbc5b3c2acb48071 100644 (file)
@@ -33,7 +33,7 @@
    (let* ( (m (ly-make-music "Music"))
          )
      (ly-set-mus-property m 'iterator-ctor Push_property_iterator::constructor)
-     (ly-set-mus-property m 'symbols 'NoteHead)
+     (ly-set-mus-property m 'symbol 'NoteHead)
      (ly-set-mus-property m 'grob-property 'style)
      (ly-set-mus-property m 'grob-value t)
      m
index 0ce17a070685e768e591e16820cfe6f5ea5ed182..02bfd0d36d96627e090d6b2a7731e4911277bb7d 100644 (file)
                (meta . ,(grob-description sustain-pedal-interface side-position-interface font-interface))
        ))
 
-       ;; TODO: should split in 3
        (SystemStartBrace . (
-               (glyph . brace)
+               (glyph . "brace")
                (molecule-callback . ,System_start_delimiter::brew_molecule)
                (collapse-height . 5.0)
                (font-family . braces)
        (SystemStartBracket . (
                (Y-extent-callback . #f)
                (molecule-callback . ,System_start_delimiter::brew_molecule)
-               (glyph . bracket)
+               (glyph . "bracket")
                (arch-height . 1.5)
                (arch-angle . 50.0)
                (arch-thick . 0.25)
        (SystemStartBar . (
                (Y-extent-callback . #f)
                (molecule-callback . ,System_start_delimiter::brew_molecule)
-               (glyph . bar-line)
+               (glyph . "bar-line")
                (thickness . 1.6)
                (after-line-breaking-callback . ,System_start_delimiter::after_line_breaking)
                (meta . ,(grob-description system-start-delimiter-interface ))
 
 ;; make sure that \property Foo.Bar =\turnOff doesn't complain
 
-(map (lambda (x) (set-object-property! (car x) 'translator-type? list?))
+(map (lambda (x)
+       ; (display (car x)) (newline)
+
+       (set-object-property! (car x) 'translation-type? list?))
      all-grob-descriptions)
index 4231dfe19d078387c2fae5f0674a523b268cdb4d..b64817cf6147a7b34536c85e6fa83e568ec8cc6e 100644 (file)
@@ -21,8 +21,6 @@
   (set! all-backend-properties (cons symbol all-backend-properties))
   )
 
-
-  
 ;; put this in an alist?
 
 (grob-property-description 'X-extent-callback procedure? "procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.")
@@ -177,7 +175,7 @@ is used by @ref{note-collision-interface}.")
 (grob-property-description 'fraction number-pair? "fraction of a time signature.")
 (grob-property-description 'full-size-change boolean? "if set, don't make a change clef smaller.")
 
-(grob-property-description 'glyph symbol? "a string determining what (style) of  glyph is typeset. Valid choices depend on the function that is reading this property. .")
+(grob-property-description 'glyph string? "a string determining what (style) of  glyph is typeset. Valid choices depend on the function that is reading this property. .")
 (grob-property-description 'glyph-name string? "a name of character within font.")
 
 (grob-property-description 'gap number? "Size of a gap in a variable symbol.")
@@ -205,7 +203,9 @@ For text,  this is `relative'(?) to the current alignment.
 
 For barline, space after a thick line.")
 (grob-property-description 'layer number? "The output layer [0..2].  The default is 1.")
+
 (grob-property-description 'left-padding number? "space left of accs.")
+
 (grob-property-description 'length number? "Stem length for unbeamed stems, only for user override.")
 (grob-property-description 'lengths list? "Stem length given multiplicity of flag.")
 (grob-property-description 'line-count integer? "Number of staff
@@ -220,6 +220,7 @@ and will have no effect.
 (grob-property-description 'maximum-duration-for-spacing moment? "space as if a duration of this type is available in this measure.")
 (grob-property-description 'maximum-length number? "don't make Grob longer than this")
 (grob-property-description 'maximum-rest-count integer? "kill off rests so we don't more than this number left.")
+(grob-property-description 'measure-count integer? "number of measures for a multimeasure rest.")
 (grob-property-description 'merge-differently-dotted boolean? " Merge noteheads in collisions, even if they have a different number of dots. This normal notation for some types of polyphonic music. The value of this setting is used by @ref{note-collision-interface} .")
 (grob-property-description 'minimum-distance number? "minimum distance between notes and rests.")
 (grob-property-description 'minimum-distances list? "list of rods (ie. (OBJ . DIST) pairs).")
@@ -236,9 +237,14 @@ Also works as a scaling parameter for the length of hyphen. .")
 FIXME: also pair? (cons LEFT RIGHT)
 
 ")
+(grob-property-description 'minimum-space-pair number-pair? "
 
+? (cons LEFT RIGHT)
+
+")
 (grob-property-description 'minimum-width number? "minimum-width of rest symbol, in staffspace.")
 (grob-property-description 'molecule-callback procedure? "Function taking grob as argument, returning a Scheme encoded Molecule.")
+(grob-property-description 'molecule molecule? "Cached output of the molecule-callback.")
 
 (grob-property-description 'new-accidentals list? "list of (pitch, accidental) pairs.")
 (grob-property-description 'no-spacing-rods boolean? "read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM).")
@@ -267,18 +273,19 @@ as a real penalty.")
 (grob-property-description 'right-padding number? "space right of accs.")
 (grob-property-description 'right-trim-amount number? "shortening of the lyric extender on the right.")
 (grob-property-description 'script-priority number? "A sorting key that determines in what order a script is within a stack of scripts.")
-(grob-property-description 'self-alignment-X number? "real number: -1 =
+(grob-property-description 'self-alignment-X number-or-grob? "real number: -1 =
 left aligned, 0 = center, 1 right-aligned in X direction.
 
  Set to an grob pointer, if you want that grob to be the center.
 In this case, the center grob should have this object as a
 reference point.
-.")
+
+TODO: revise typing.")
 (grob-property-description 'self-alignment-Y number? "like self-alignment-X but for Y axis.")
 (grob-property-description 'shortest-playing-duration moment? "duration of the shortest playing in that column.")
 (grob-property-description 'shortest-starter-duration moment? "duration of the shortest notes that starts exactly in this column.")
 (grob-property-description 'side-relative-direction dir? "if set: get the direction from a different object, and multiply by this.")
-(grob-property-description 'side-support list? "the support, a list of grobs.")
+(grob-property-description 'side-support-elements list? "the support, a list of grobs.")
 (grob-property-description 'slope number? "some kind of slope")
 (grob-property-description 'slope-limit number? "set slope to zero if slope is running away steeper than this.")
 (grob-property-description 'solid boolean? "should porrectus be solidly filled?.")
@@ -294,7 +301,7 @@ itself.  Return value is ignored.")
 (grob-property-description 'stacking-dir dir? "stack contents of grobs in which direction ?.")
 (grob-property-description 'staff-space number? "Amount of line leading relative to global staffspace.")
 (grob-property-description 'staff-position number? "vertical position in staff spaces, counted from the middle line.")
-(grob-property-description 'staff-symbol boolean? "the staff symbol grob that we're in.")
+
 (grob-property-description 'staffline-clearance number? "don't get closer than this to stafflines.")
 (grob-property-description 'stem ly-grob? "pointer to Stem object.")
 (grob-property-description 'stem-attachment-function procedure? "Where
@@ -376,6 +383,7 @@ The following abbreviations are currently defined:
 (grob-property-description 'thickness number? "thickness, measured in stafflinethickness.")
 (grob-property-description 'thin-kern number? "space after a hair-line.")
 (grob-property-description 'forced-distance number? "forced distance for an alignment.")
+
 (grob-property-description 'threshold number-pair? "(cons MIN MAX), where MIN and MAX are dimensions in staffspace.")
 (grob-property-description 'transparent boolean? "This is almost the
 same as setting molecule-callback to #f, but this retains the
@@ -403,3 +411,24 @@ function of type (beam multiplicity dy staff-line-thickness) -> real.  Default v
 (grob-property-description 'y-free number? "minimal vertical gap between slur and noteheads or stems.")
 (grob-property-description 'y-offset number? "extra vertical offset for ties away from the center line.")
 (grob-property-description 'y number? "set by beam: position of left edge.")
+
+
+;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;; INTERNAL
+
+(grob-property-description 'left-neighbors list? "")
+(grob-property-description 'right-neighbors list? "")
+(grob-property-description 'left-items list? "")
+(grob-property-description 'right-items list? "")
+(grob-property-description 'cause scheme? "Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob.  ")
+(grob-property-description 'font font-metric? "Cached font metric object")
+(grob-property-description 'break-alignment-done boolean? "mark flag to signal we've done alignment already.")
+(grob-property-description 'staff-symbol ly-grob? "the staff symbol grob that we're in.")
+(grob-property-description 'collision-done boolean? "")
+(grob-property-description 'rest ly-grob? "the staff symbol grob that we're in.")
+(grob-property-description 'rest-collision ly-grob? "rest collision that a rest is in.")
+
+(grob-property-description 'staff-support boolean? " JUNKME.")
+(grob-property-description 'script-molecule pair? "index code for script.")
+
+(grob-property-description 'accidentals-grob ly-grob? "accidentals for this note.")
index ec1a11d9524000fd526ec31bc077664f98ba96a1..d1db335f03bd7ea3434a18dc49f0b9b06d1fa184 100644 (file)
 #'direction = where to put the victim object (left or right?)
 "
  '(
-   side-support 
+   side-support-elements 
    direction-source 
    direction 
    side-relative-direction 
index 9c254e5a8d69d6da5a1670397d5e6eb61ba6c483..10e91ee26332566b0a534e302d19e5030b57585f 100644 (file)
@@ -74,14 +74,14 @@ Fingering_engraver."
 ;;;;;;;;;;;;;;;;
 
 
-(define (make-grob-property-set grobs gprop val)
+(define (make-grob-property-set grob gprop val)
   "Make a M-exp that sets GPROP to VAL in GROBS. Does a pop first, i.e.
 this is not an override 
 "
   
    (let* ((m (ly-make-music  "Music")))
      (ly-set-mus-property m 'iterator-ctor Push_property_iterator::constructor)
-     (ly-set-mus-property m 'symbols grobs)
+     (ly-set-mus-property m 'symbol grob)
      (ly-set-mus-property m 'grob-property gprop)
      (ly-set-mus-property m 'grob-value val)
      (ly-set-mus-property m 'pop-first #t)
@@ -90,10 +90,11 @@ this is not an override
    
    ))
    
-(define (make-grob-property-revert grobs gprop)
+(define (make-grob-property-revert grob gprop)
+  "Revert the grob property GPROP for GROB."
    (let* ((m (ly-make-music  "Music")))
      (ly-set-mus-property m 'iterator-ctor Pop_property_iterator::constructor)
-     (ly-set-mus-property m 'symbols grobs)
+     (ly-set-mus-property m 'symbol grob)
      (ly-set-mus-property m 'grob-property gprop)
                
      m
@@ -102,18 +103,22 @@ this is not an override
    
 (define (make-voice-props-set n)
   (make-sequential-music
-   (list
-      (make-grob-property-set '(Tie Slur Stem Dots) 'direction
-                        (if (odd? n) -1 1))
-      (make-grob-property-set '(NoteColumn) 'horizontal-shift (quotient n 2))
+   (append
+      (map (lambda (x) (make-grob-property-set x 'direction
+                                              (if (odd? n) -1 1)))
+          '(Tie Slur Stem Dots))
+      (list (make-grob-property-set 'NoteColumn 'horizontal-shift (quotient n 2)))
    )
   ))
 
 (define (make-voice-props-revert)
   (make-sequential-music
    (list
-      (make-grob-property-revert '(Tie Slur Stem Dots) 'direction)
-      (make-grob-property-revert '(NoteColumn) 'horizontal-shift)
+      (make-grob-property-revert 'Tie 'direction)
+      (make-grob-property-revert 'Dots 'direction)
+      (make-grob-property-revert 'Stem 'direction)
+      (make-grob-property-revert 'Slur 'direction)         
+      (make-grob-property-revert 'NoteColumn 'horizontal-shift)
    ))
   )
 
index d0d76a9445f1a8bd76ff9b19f6038547dc17eea9..50fc4ad6334a4436c8b84f60df5c74c870cedd98 100644 (file)
 (music-property-description 'iterator-ctor c++-function? "Function to construct music-event-iterator object for this Music")
 (music-property-description 'duration duration? "Duration of this note/lyric.")
 (music-property-description 'metronome-count number? "How many beats in a minute?")
-(music-property-description 'span-type symbol? "What kind of spanner should be created?")
-(music-property-description 'articulation-type symbol? "key for scriptDefinitions alist")
+(music-property-description 'span-type string? "What kind of spanner should be created?
+
+TODO: consider making type into symbol") 
+(music-property-description 'articulation-type string? "key for script definitions alist.
+
+TODO: consider making type into symbol ")
 (music-property-description 'bass boolean? "Set if this note is a bass note in a chord")
 (music-property-description 'cautionary boolean? "If set, this alteration needs cautionary accidental")
 (music-property-description 'change-to-id string? "name of the context to change to ")
 (music-property-description 'type symbol? "The type of this music object. Determines iteration in some cases.")
 (music-property-description 'repeat-count  integer? "do a @code{\repeat} how ofen?")
 (music-property-description 'span-direction dir? "Does this start or stop a spanner?")
-(music-property-description 'symbols list? "List of Grob names (symbols) to perform an override/revert on.")
-(music-property-description 'text string? "markup expression to be printed");; markup?
+(music-property-description 'symbol symbol? "Grob name to perform an override/revert on.")
+(music-property-description 'text string? "markup expression to be printed")
+;; markup?
 (music-property-description 'tremolo-type integer? "")
-
+(music-property-description 'value scheme? "Assignment value for a
+translation property")
 (music-property-description 'what string? "What to change for auto-change. FIXME, naming")
index 7f2aca9c3aa09f225a88dd4382c45a975fbcec53..1d8f8f3f4c354bca89e175cf36d2aaa5e6cdc65f 100644 (file)
@@ -16,8 +16,8 @@
 
 (if (or (equal? (minor-version) "4")
        (equal? (minor-version) "3.4"))
-    (define-public (ps-output-expression expr)
-      (display (eval-in-module expr this-module)))
+    (define-public (ps-output-expression expr port)
+      (display (eval-in-module expr this-module) port))
 
     (define-public (ps-output-expression expr port)
       (display (eval expr this-module) port)))
index 4e5c23189a84c1613495ed19caf33eb94c2be28a..8cfeb298ca60a868a8a92f483fc60d64545e7913 100644 (file)
@@ -44,6 +44,10 @@ and therefore only work in contexts which contain an
 @code{Axis_group_engraver}.
 ")
 
+(translator-property-description
+ 'acknowledgeHashTable vector?
+ "Internal variable: store interface to engraver smob table for current context. Don't mess with this."
+ )
 
 (translator-property-description 'aDueText string? "text for begin of a due")
 (translator-property-description 'associatedVoice string? "Name of the Voice that has the melody for this LyricsVoice.")
@@ -193,8 +197,14 @@ Do nothing.
 @end table
 ")
 (translator-property-description 'decrescendoSpanner symbol? "Type of spanner to be used for decrescendi.  One of: @samp{hairpin}, @samp{line}, @samp{dashed-line}, @samp{dotted-line}.  If unset, hairpin type is used.")
+
+(translator-property-description 'dynamicAbsoluteVolumeFunction procedure? "
+[DOCUMENT-ME]
+")
 (translator-property-description 'explicitClefVisibility procedure? "visibility-lambda function for clef changes.")
 
+
+
 (translator-property-description 'explicitKeySignatureVisibility
 procedure? "visibility-lambda function for explicit Key changes;
 \override of #'visibility-lambda will set the visibility for normal
@@ -224,7 +234,9 @@ in a context. This is done using the @code{Font_size_engraver}.")
     is used to determine the instrument for MIDI output.")
 
 (translator-property-description 'instrumentEqualizer procedure? "[DOCUMENT-ME]")
-                                
+(translator-property-description 'instrumentSupport list? "
+list of grobs to attach instrument name to. 
+")                              
 (translator-property-description 'keyAccidentalOrder list? "
 Alist that defines in what order  alterations should be printed.
 The format is (NAME . ALTER), where NAME is from 0 .. 6 and ALTER from  -1, 1.
@@ -251,6 +263,10 @@ top of those automatically detected. ")
 (translator-property-description 'melismaEngraverBusy boolean? "See @ref{(lilypond)melismaBusy}. This is set automatically.")
 (translator-property-description 'midiInstrument string? "Name of the
 MIDI instrument to use ")
+(translator-property-description 'midiMinimumVolume number? "[DOCUMENT-ME]")
+(translator-property-description 'midiMaximumVolume number? "[DOCUMENT-ME]")
+
+
 (translator-property-description 'noAutoBeaming boolean? "If set to true then beams are not generated automatically.
 ")
 (translator-property-description 'noDirection boolean? "Don't set directions by a2-engraver when part-combining.")
@@ -258,8 +274,8 @@ MIDI instrument to use ")
 (translator-property-description 'pedalSustainStrings list? "List of   string to print for sustain-pedal. Format is
  (UP UPDOWN DOWN), where each of the three is the string to print when
 this is done with the pedal.")
-(translator-property-description 'pedalUnaCordaStrings string? "see pedalSustainStrings.")
-(translator-property-description 'pedalSostenutoStrings string? "see pedalSustainStrings.")
+(translator-property-description 'pedalUnaCordaStrings list? "see pedalSustainStrings.")
+(translator-property-description 'pedalSostenutoStrings list? "see pedalSustainStrings.")
 
 (translator-property-description 'phrasingPunctuation string? "")
 (translator-property-description 'rehearsalMark number-or-string? "")
@@ -323,6 +339,7 @@ is erased.
 (translator-property-description 'stz markup? "Abbreviated form for a stanza, see also Stanza property.")
 (translator-property-description 'subdivideBeams boolean? "If set, multiple beams will be subdivided at beat
 positions - by only drawing one beam over the beat.")
+(translator-property-description 'systemStartDelimiter symbol? "Which grob to make for the start of the system/staff?")
 (translator-property-description 'textNonEmpty boolean? " If set
 to true then text placed above or below the staff is not assumed to
 have zero width.  @code{\fatText} and @code{\emptyText} are predefined
index 4a2236a7aa5bd53f792149c43945bee495122a2b..26e33611cdc8c57aeca6d22c76a0bfd38f1dedf4 100644 (file)
@@ -826,6 +826,12 @@ if 1:
        conversions.append (((1,3,148), conv, '"(align" -> "(axis", "(rows" -> "(columns"'))
 
 
+if 1:
+       def conv (str):
+               str = re.sub ('SystemStartDelimiter', 'systemStartDelimiter', str)
+               return str
+       conversions.append (((1,5,33), conv, 'SystemStartDelimiter -> systemStartDelimiter'))
+
 
 ################################
 #      END OF CONVERSIONS      
index 2eb4a0c5f257d034824de2d8ab317cae9db3ed62..8dc047bb26b72249bf39bd8faad216465e04a3dd 100644 (file)
@@ -98,7 +98,7 @@ include_path = [os.getcwd()]
 
 
 # g_ is for global (?)
-
+g_extra_opts = ''
 g_here_dir = os.getcwd ()
 g_dep_prefix = ''
 g_outdir = ''
@@ -106,6 +106,7 @@ g_force_lilypond_fontsize = 0
 g_read_lys = 0
 g_do_pictures = 1
 g_num_cols = 1
+
 format = ''
 g_run_lilypond = 1
 no_match = 'a\ba'
@@ -368,6 +369,7 @@ option_definitions = [
   ('EXT', 'f', 'format', 'set format.  EXT is one of texi and latex.'),
   ('DIM',  '', 'default-music-fontsize', 'default fontsize for music.  DIM is assumed to be in points'),
   ('DIM',  '', 'default-lilypond-fontsize', 'deprecated, use --default-music-fontsize'),
+  ('OPT', '', 'extra-options' , 'Pass OPT quoted to the lilypond command line'),
   ('DIM', '', 'force-music-fontsize', 'force fontsize for all inline lilypond. DIM is assumed be to in points'),
   ('DIM', '', 'force-lilypond-fontsize', 'deprecated, use --force-music-fontsize'),
   ('DIR', 'I', 'include', 'include path'),
@@ -1046,7 +1048,7 @@ def compile_all_files (chunks):
                        if g_outdir:
                                lilyopts = lilyopts + '--dep-prefix=' + g_outdir + '/'
                texfiles = string.join (tex, ' ')
-               system ('lilypond --header=texidoc %s %s' % (lilyopts, texfiles))
+               system ('lilypond --header=texidoc %s %s %s' % (lilyopts, g_extra_opts, texfiles))
 
                #
                # Ugh, fixing up dependencies for .tex generation
@@ -1329,6 +1331,8 @@ for opt in options:
        elif o == '--default-lilypond-fontsize':
                print "--default-lilypond-fontsize is deprecated, use --default-music-fontsize"
                default_music_fontsize = string.atoi (a)
+       elif o == '--extra-options':
+               g_extra_opts = a
        elif o == '--force-music-fontsize':
                g_force_lilypond_fontsize = string.atoi(a)
        elif o == '--force-lilypond-fontsize':