]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.3.95 release/1.3.95
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 10 Oct 2000 22:52:58 +0000 (00:52 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 10 Oct 2000 22:52:58 +0000 (00:52 +0200)
==========

* Use music property for setting type. This prevents accidental
forgotten copies.

1.3.94.j

39 files changed:
CHANGES
Documentation/header.html.in
VERSION
input/bugs/generic-output-property.ly [deleted file]
lily/arpeggio.cc
lily/auto-change-iterator.cc
lily/auto-change-music.cc
lily/change-iterator.cc
lily/change-translator.cc
lily/context-specced-music.cc
lily/grace-music.cc
lily/include/auto-change-music.hh
lily/include/change-translator.hh
lily/include/note-head.hh
lily/include/output-property.hh
lily/include/request.hh
lily/include/rest.hh
lily/include/rhythmic-head.hh
lily/include/spacing-spanner.hh
lily/include/translation-property.hh
lily/lyric-combine-music.cc
lily/music-iterator.cc
lily/music-list.cc
lily/output-property-engraver.cc
lily/output-property.cc [deleted file]
lily/parser.yy
lily/part-combine-music.cc
lily/property-iterator.cc
lily/relative-octave-music.cc
lily/repeat-acknowledge-engraver.cc
lily/repeated-music.cc
lily/request.cc
lily/spacing-spanner.cc
lily/span-arpeggio.cc
lily/time-scaled-music.cc
lily/transposed-music.cc
ly/engraver.ly
make/out/lilypond.lsm
make/out/lilypond.spec

diff --git a/CHANGES b/CHANGES
index 3f4b565714317237c2046b963c8420c0bab32dd4..2092760b675afb4fcada3f6a1bd38eef9faca25e 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,9 @@
---- ../lilypond-1.3.94.jcn2/CHANGES    Tue Oct 10 15:50:19 2000
-++ b/CHANGES   Tue Oct 10 19:36:50 2000
-@@ -1,3 +1,10 @@
+1.3.94.uu1
+==========
+
+* Use music property for setting type. This prevents accidental
+forgotten copies.
+
 1.3.94.jcn3
 ===========
 
 
 * Yet another bugfix for output-property (Han-Wen)
 
- 1.3.94.jcn2
- ===========
- --- ../lilypond-1.3.94/CHANGES        Sun Oct  8 10:27:38 2000
-++ b/CHANGES   Tue Oct 10 17:28:55 2000
-@@ -1,3 +1,13 @@
-1.3.94.lec1
-===========
-
-* fix abc2ly so that it doesn't ignor an L: field before an M: field
-
-* fix abc2ly so that bar lines are preserved
-
-* fix basic_properties.scm so that setting the default bar type to empty 
-  doesn't give warnings about unknown barline glyph. 
-
- 1.3.93.uu1
- ==========
- 1.3.94.jcn2
-===========
-
 * Made some fixes to les-nereides.
 
 * Fixed output-property (Dankje).
 
-1.3.94.jcn1
-===========
-
 * Added backend framework for arpeggios.
 
 * Fixes for les-nereides.  Should we do asymmetric slurs...?
 
+* Don't print repeat bars at start of line.
+
 1.3.94
 ======
 
index 34540561254f03cd40d29f9971d2bd92dec35b55..2fa27d012a7f5f45ab06c29a85e828cbcf54e78c 100644 (file)
@@ -48,13 +48,12 @@ which substitutes some @AT_VARIABLES@ as well.
        <a href="@TOP@Documentation/out-www/index.html"><b>Documentation</b></a>
       </td></tr>
       <tr><td><font size=-1>
-       <a href="@TOP@Documentation/out-www/NEWS.html">NEWS</a><br>
        <a href="@TOP@Documentation/out-www/CHANGES.html">Change Log</a><br>
        <a href="http://appel.lilypond.org/wiki/index.php3?LilyPondFaqs">FAQ</a><br>
        <a href="@TOP@Documentation/user/out-www/lilypond.html">User manual</a><br>
        <a href="@TOP@Documentation/out-www/regression-test.html">Features</a><br>
-       <a href="http://appel.lilypond.org/lilypond/todo.html">Todo</a><br>
-       <br>
+       <a href="http://appel.lilypond.org/wiki/index.php3?LilyPondToDo">To do</a><br>
+<br>
       </td></tr>
       <tr><td bgcolor="#e8e8ff">
        <a href="@INDEX@#download-source"><b>Download Source</b></a>
diff --git a/VERSION b/VERSION
index 91886aae3be82b40adf809da56ec694b59915308..6693a290ce5970a30f3f4aae94eb9e2f4ca528c2 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,8 +1,8 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
-PATCH_LEVEL=94
-MY_PATCH_LEVEL=jcn3
+PATCH_LEVEL=95
+MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
diff --git a/input/bugs/generic-output-property.ly b/input/bugs/generic-output-property.ly
deleted file mode 100644 (file)
index e69de29..0000000
index b05187d8050e5f032defccc062a3a9eafa0121a5..1e7253645c8a85e39fd60615222ae13610a79c72 100644 (file)
@@ -42,7 +42,7 @@ Arpeggio::brew_molecule (SCM smob)
       a.translate_axis (i * staff_space, Y_AXIS);
       mol.add_molecule (a);
     }
-  mol.translate (Offset (-2 * staff_space, 0);
+  mol.translate (Offset (-2 * staff_space, 0));
 
   return mol.create_scheme (); 
 }
index cf291348c0695d8c6ea984aa44d0a01dee467c7e..605363c488fcc022e57509dbd855aa1c8d873bec 100644 (file)
@@ -125,7 +125,8 @@ Auto_change_iterator::process (Moment m)
          String to_id =  (s >= 0) ?  "up" : "down";
          Auto_change_music const * auto_mus = dynamic_cast<Auto_change_music const* > (music_l_);
 
-         change_to (child_iter_p_, auto_mus->what_str_, to_id);          
+         String wh = ly_scm2string (auto_mus->get_mus_property ("what"));
+         change_to (child_iter_p_, wh, to_id);   
        }
     }
 }
index 82871ffd7d02ee8f27622eaa60435255b3a8946f..c75cb9e605386a8717dc8ee008613086d8a8cc2d 100644 (file)
@@ -10,8 +10,8 @@
 
 #include "auto-change-music.hh"
 
-Auto_change_music::Auto_change_music (String what, Music * m)
+Auto_change_music::Auto_change_music (Music * m)
   : Music_wrapper (m)
 {
-  what_str_ = what;
+  set_mus_property ("type", ly_symbol2scm ("auto-change-music"));
 }
index 7bd04e1e89f79e2e52b486710f957fea7e276435..d1fc2006f00cde718030c36e883694abb8e838c8 100644 (file)
@@ -8,16 +8,15 @@
 
 #include "change-iterator.hh"
 #include "translator-group.hh"
-#include "change-translator.hh"
+#include "music.hh"
 #include "debug.hh"
 
 
 void
 Change_iterator::error (String reason)
 {
-  Change_translator const * t = dynamic_cast<Change_translator const*> (music_l_);   
-  String to_type = t->change_to_type_str_;
-  String to_id =  t->change_to_id_str_;
+  String to_type = ly_scm2string (music_l_->get_mus_property ("change-to-type"));
+  String to_id =  ly_scm2string (music_l_->get_mus_property ("change-to-id"));
 
   String warn1 = _f ("can't change `%s' to `%s'", to_type, to_id) 
     + ": " + reason;
@@ -28,7 +27,7 @@ Change_iterator::error (String reason)
     + report_to_l ()->type_str_ + " = `"
     + report_to_l ()->id_str_ + "': ";
   warning (warn2);
-  t->origin ()->warning (warn1);
+  music_l_->origin ()->warning (warn1);
 }
 
 /*
@@ -40,9 +39,9 @@ Change_iterator::process (Moment m)
   Translator_group * current = report_to_l ();
   Translator_group * last = 0;
 
-  Change_translator const * t = dynamic_cast<Change_translator const*> (music_l_); 
-  String to_type = t->change_to_type_str_;
-  String to_id =  t->change_to_id_str_;
+  String to_type = ly_scm2string (music_l_->get_mus_property ("change-to-type"));
+  String to_id =  ly_scm2string (music_l_->get_mus_property ("change-to-id"));
+
 
   /* find the type  of translator that we're changing.
      
index 144aefd229b2f43d20089d49a1b8c23031791a8c..8b137891791fe96927ad78e64b0aad7bded08bdc 100644 (file)
@@ -1,13 +1 @@
-/*
-  change-translator.cc -- implement Change_translator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "change-translator.hh"
-#include "debug.hh"
-
-
 
index eb3005964eac7609867e9167eba0a2d13588ab22..cf3f520773fcf815c169d1d20a163b8950f01f9c 100644 (file)
@@ -11,4 +11,5 @@
 Context_specced_music::Context_specced_music(Music *m)
   : Music_wrapper  (m)
 {
+  set_mus_property ("type", ly_symbol2scm ("context-specced-music"));
 }
index 50c0f155f64f45c8b4d459d0974535778cd3995e..532bd07aaf8494eaca9c8f5ef1287feb9bf171f0 100644 (file)
@@ -24,4 +24,5 @@ Grace_music::length_mom () const
 Grace_music::Grace_music (Music *p)
   : Music_wrapper (p)
 {
+  set_mus_property ("type", ly_symbol2scm ("grace-music"));
 }
index 2295eb2223b09a720f54c0ceec5ec8b734415085..f96a354fcb19a2729ce542ed4d83bd6b94c341aa 100644 (file)
 
 #include "music-wrapper.hh"
 
+
 class Auto_change_music : public Music_wrapper
 {
 public:
-  Auto_change_music (String what, Music *);
-  String what_str_;
+  Auto_change_music (Music *);
+
 };
 
 
index 7dc774ca37ded7086228138632469fe593c760bf..8b137891791fe96927ad78e64b0aad7bded08bdc 100644 (file)
@@ -1,26 +1 @@
-/*
-  change-translator.hh -- declare Change_translator
 
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef CHANGE_TRANSLATOR_HH
-#define CHANGE_TRANSLATOR_HH
-
-#include "music.hh"
-
-class Change_translator : public Music
-{
-public:
-  String change_to_type_str_;
-  String change_to_id_str_;
-  
-protected:
-  VIRTUAL_COPY_CONS(Music);
-};
-
-
-#endif // CHANGE_TRANSLATOR_HH
index 8974b9828d5dbc1ea4c8cb336c44196a398758b9..6703c443bb90fc18a155cdca3dc9cd5ab181664f 100644 (file)
 #include "lily-guile.hh"
 #include "molecule.hh"
 
-/** ball at the end of the stem. Takes care of:
+/** ball at the end of the stem. Also takes care of ledger lines.
 
-  * help lines  
-
-  Properties
+    NoteHead is a kind of RhythmicHead, see there.
 
+  Read-only:
+  
   style -- symbol that sets note head style
-
-  */
+*/
 
 class Note_head 
 {
index bea2e0e2d662705d832fbd8cb9f227a48f52204d..01e8ffbf138f8625cdbbab91b602d07ed86581f4 100644 (file)
@@ -28,3 +28,5 @@ public:
 };
 
 #endif /* OUTPUT_PROPERTY_HH */
+
+#error
index f1cd68f48301f949e49e364fe264b87f3617b159..3792ee507bf8c8b5e1cc51084b2031872f7a9efc 100644 (file)
@@ -26,6 +26,7 @@
  */
 class Request : public Music {
 public:
+  Request ();
   VIRTUAL_COPY_CONS(Music);
   bool equal_b (Request const*) const;
 protected:
index 204c19f407ce48d18561dd07e84ef372ca6a3175..051bdaf98990cc34f68a7bca629a9fa01b9fd444 100644 (file)
 
 /**
    A pause.
+
+   See also Rhythmic_head, Staff_symbol_referencer.
    
-   Properties
+   Read-only properties:
 
    style -- string specifying glyph style
  */
index 855f84b7f7beef921a7e6fbe72104c0b6a6b5ea8..50b1b87187f11a2265f8de8a608a9f937db047ed 100644 (file)
 /*
   Properties
   
-  duration-log -- 2-log of the notehead duration
-
   dot -- reference to Dots object.
 
+  stem -- pointer to Stem object
+
+  Read-only
+
+  duration-log -- 2-log of the notehead duration
+
 */
 class Rhythmic_head
 {
index 7f678043eee3b7d4a1e82af8f984540a9bfc0b85..f0f81dde7612c38c72117665dd79cede71db83ac 100644 (file)
 
 #include "spanner.hh"
 
+/**
+   Read-only properties
+
+   maximum-duration-for-spacing -- rational: space as if a duration of
+     this type is available in this measure.
+
+
+   
+   Read properties from paper-column
+
+   dir-list -- list of stem directions
+
+   shortest-playing-duration -- duration of the shortest playing in that column.
+
+   shortest-starter-duration -- duration of the shortest notes that starts
+     exactly in that column.
+
+   contains-grace -- boolean. Used to widen entries for grace notes.
+
+   extra-space --  pair of distances
+
+   stretch-distance -- pair of distances
+ */
 class Spacing_spanner
 {
 public:
index c8a49507839f0b59a868f9582ba1e8720c46225d..dc332df200707fd92d6cc84c79afa4ee0f7ca15b 100644 (file)
@@ -1,3 +1,4 @@
+#if 0
 /*
   translation-property.hh -- declare Translation_property
 
@@ -23,6 +24,7 @@
 class Translation_property : public Music
 {
 public:
+  Translation_property ();
   VIRTUAL_COPY_CONS(Music);
 };
 
@@ -61,3 +63,4 @@ void apply_pop_property (Translator_group*trans, SCM syms, SCM eprop);
 
 
 #endif // PROPERTY_HH
+#endif
index 2059314b2545a4802ca97249422caa089b5074e6..dbbbfab278b71d3a48ee90fc03a2a22bbdedc8ac 100644 (file)
@@ -14,6 +14,8 @@ Lyric_combine_music::Lyric_combine_music (Music * m, Music * l)
 {
   set_mus_property ("music", m->self_scm ());
   set_mus_property ("lyrics", l->self_scm ());  
+
+  set_mus_property ("type", ly_symbol2scm ("lyric-combine-music"));
 }
 
 
index c6020272fdc88a43ede624826e924d19f907bdf8..4a2c2ec95ec5468b9da751d264899ac854f3fe7c 100644 (file)
   UGH. too many includes.
  */
 #include "debug.hh"
-#include "music-list.hh"
 #include "music-iterator.hh"
 #include "property-iterator.hh"
 #include "request-chord-iterator.hh"
 #include "sequential-music-iterator.hh"
 #include "simultaneous-music-iterator.hh"
 #include "translator-group.hh"
-#include "translation-property.hh"
 #include "change-iterator.hh"
-#include "change-translator.hh"
 #include "music-wrapper.hh"
 #include "music-wrapper-iterator.hh"
 #include "time-scaled-music-iterator.hh"
-#include "time-scaled-music.hh"
-#include "context-specced-music.hh"
 #include "repeated-music.hh"
 #include "folded-repeat-iterator.hh"
 #include "unfolded-repeat-iterator.hh"
 #include "grace-iterator.hh"
-#include "grace-music.hh"
-#include "lyric-combine-music.hh"
 #include "lyric-combine-music-iterator.hh"
-#include "auto-change-music.hh"
 #include "auto-change-iterator.hh"
-#include "part-combine-music.hh"
 #include "part-combine-music-iterator.hh"
-#include "request.hh"
 #include "simple-music-iterator.hh"
-#include "output-property.hh"
 #include "output-property-music-iterator.hh"
 #include "chord-tremolo-iterator.hh"
+#include "context-specced-music.hh"
 
 Music_iterator::Music_iterator ()
 {
@@ -109,38 +99,56 @@ Music_iterator::get_music (Moment)const
   return SCM_EOL;
 }
 
+
+
+/* We could do this decentrally:
+
+ -  Declare a new smob-type, which stores a function ptr in its CDR
+   (and not a struct ptr). The function ptr has signature
+
+       Music_iterator* (*)()
+
+ - initialize  all music with a set_mus_property("iterator-ctor"),
+
+ - do
+    func_ptr  p = (func_ptr) gh_cdr (get_mus_property ("iterator-ctor"));
+    iter_p = (*p)();
+
+*/
+
 Music_iterator*
 Music_iterator::static_get_iterator_p (Music *m)
 {
   Music_iterator * p =0;
 
-  /* It would be nice to do this decentrally, but the order of this is
-     significant.  */
-  if (dynamic_cast<Request_chord   *> (m))
+  SCM type = m->get_mus_property ("type") ;
+
+  if (type == ly_symbol2scm ("property-set"))
+    p = new Property_iterator;
+  else if (type == ly_symbol2scm ("property-push"))
+    p = new Push_property_iterator;
+  else if (type == ly_symbol2scm ("property-pop"))
+    p = new Pop_property_iterator;
+  else if (type == ly_symbol2scm ("output-property"))
+    p = new Output_property_music_iterator;
+  else if (type == ly_symbol2scm ("request-chord"))
     p = new Request_chord_iterator;
-  else if (dynamic_cast<Lyric_combine_music *> (m))
+  else  if (type == ly_symbol2scm ("lyric-combine-music"))
     p = new Lyric_combine_music_iterator;
-  else if (dynamic_cast<Simultaneous_music *> (m)) 
+  else if  (type == ly_symbol2scm ("simultaneous-music"))
     p =  new Simultaneous_music_iterator;
-  else if (dynamic_cast<Sequential_music *> (m)) 
+  else if (type == ly_symbol2scm ("sequential-music"))
     p =  new Sequential_music_iterator;
-  else if (dynamic_cast<Translation_property *> (m))
-    p = new Property_iterator;
-  else if (dynamic_cast<Change_translator *> (m))
+  else if (type == ly_symbol2scm ("change-translator"))
     p = new Change_iterator;
-  else if (dynamic_cast<Push_translation_property*> (m))
-    p = new Push_property_iterator;
-  else if (dynamic_cast<Pop_translation_property*> (m))
-    p = new Pop_property_iterator;
-  else if (dynamic_cast<Time_scaled_music *> (m))
+  else if (type == ly_symbol2scm ("time-scaled-music"))
     p = new Time_scaled_music_iterator;
-  else if (dynamic_cast<Grace_music *> (m))
+  else if (type == ly_symbol2scm ("grace-music"))
     p = new Grace_iterator;
-  else if (dynamic_cast<Auto_change_music *> (m))
+  else if (type == ly_symbol2scm ("auto-change-music"))
     p = new Auto_change_iterator;
-  else if (dynamic_cast<Output_property *> (m))
-    p = new Output_property_music_iterator;
-  else if (dynamic_cast<Part_combine_music *> (m))
+  else if (type == ly_symbol2scm ("part-combined-music"))
     p = new Part_combine_music_iterator;
   else if (dynamic_cast<Music_wrapper   *> (m))
     p = new Music_wrapper_iterator;
index 4df9c53da4b360a252f51cd826c8bf48cdfb860c..81eee92a0276b79eee87dd7861844fb6a9c9c130 100644 (file)
@@ -24,12 +24,13 @@ Simultaneous_music::length_mom () const
 Simultaneous_music::Simultaneous_music(SCM head)
   : Music_sequence (head)
 {
-
+  set_mus_property ("type", ly_symbol2scm ("simultaneous-music"));
 }
 
 Sequential_music::Sequential_music(SCM head)
   : Music_sequence (head)
 {
+  set_mus_property ("type", ly_symbol2scm ("sequential-music"));
 }
 
 
@@ -48,14 +49,15 @@ Simultaneous_music::to_relative_octave (Musical_pitch p)
 Request_chord::Request_chord(SCM s)
   : Simultaneous_music (s)
 {
+  set_mus_property ("type", ly_symbol2scm ("request-chord"));
 }
 
 Musical_pitch
 Request_chord::to_relative_octave (Musical_pitch last)
 {
-   for (SCM s = music_list (); gh_pair_p (s);  s = gh_cdr (s))
-     {
-       Music * mus = unsmob_music (gh_car (s));
+  for (SCM s = music_list (); gh_pair_p (s);  s = gh_cdr (s))
+    {
+      Music * mus = unsmob_music (gh_car (s));
       if (Melodic_req *m= dynamic_cast <Melodic_req *> (mus))
        {
          Musical_pitch &pit = m->pitch_;
index b20f3d7ca2bc0ed14fa39b2df47bef3e1e4eb750..ad596bea3e0c4fe0cc0f449d9cc7413aa345c463 100644 (file)
@@ -7,7 +7,6 @@
   
  */
 
-#include "output-property.hh"
 #include "engraver.hh"
 #include "score-element.hh"
 
@@ -16,8 +15,20 @@ class Output_property_engraver : public Engraver
 public:
   VIRTUAL_COPY_CONS(Translator);
 protected:
+
+  /*
+    should do this with \once and \push ?
+
+
+      \property Voice.outputProperties \push #pred = #modifier
+
+      where both MODIFIER and PRED are functions taking a
+      score-element.
+      
+   */
+
   
-  Link_array<Output_property> props_;
+  Link_array<Music> props_;
 
   virtual void do_pre_move_processing ();
   virtual void acknowledge_element (Score_element_info);
@@ -28,9 +39,9 @@ protected:
 bool
 Output_property_engraver::do_try_music (Music* m)
 {
-  if (Output_property * o = dynamic_cast<Output_property*> (m))
+  if (m->get_mus_property ("type") ==  ly_symbol2scm ("output-property"))
     {
-      props_.push (o);
+      props_.push (m);
       return true;
     }
   return false;
@@ -41,7 +52,7 @@ Output_property_engraver::acknowledge_element (Score_element_info inf)
 {
   for (int i=props_.size (); i--; )
     {
-      Output_property * o = props_[i];
+      Music * o = props_[i];
       SCM pred = o->get_mus_property ("predicate");
       
       /*
diff --git a/lily/output-property.cc b/lily/output-property.cc
deleted file mode 100644 (file)
index 8cd70e8..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/*   
-  output-property.cc --  implement Output_property
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-#include "output-property.hh"
-#include "lily-guile.hh"
-
-Output_property::Output_property(SCM pred, SCM sym, SCM val)
-{
-  set_mus_property ("predicate", pred);
-  set_mus_property ("symbol", sym);
-  set_mus_property ("value", val);
-}
-
index 0fd6d6d14b63db0ea0e0cc7ece2ca0d8e10d8b78..8d64ac3d47edff46acc2695c4988d13822cb54b2 100644 (file)
@@ -12,7 +12,7 @@
 #include <iostream.h>
 #include "translator-def.hh"
 #include "lily-guile.hh"
-#include "translation-property.hh"
+
 #include "lookup.hh"
 #include "misc.hh"
 #include "my-lily-lexer.hh"
@@ -29,7 +29,7 @@
 #include "context-specced-music.hh"
 #include "score.hh"
 #include "music-list.hh"
-#include "change-translator.hh"
+
 #include "file-results.hh"
 #include "input.hh"
 #include "scope.hh"
@@ -42,7 +42,7 @@
 #include "grace-music.hh"
 #include "auto-change-music.hh"
 #include "part-combine-music.hh"
-#include "output-property.hh"
+
 #include "chord.hh"
 
 bool
@@ -692,8 +692,14 @@ Simple_music:
                {
                        THIS->parser_error (_("First argument must be a procedure taking 1 argument"));
                }
-       
-               $$ = new Output_property (pred,$3, $5);
+
+         Music *m = new Music;
+         m->set_mus_property ("predicate", pred);
+         m->set_mus_property ("symbol", $3);
+         m->set_mus_property ("value",  $5);
+         m->set_mus_property ("type", ly_symbol2scm ("output-property"));
+
+               $$ = m;
        }
        | MUSIC_IDENTIFIER {
                $$ = unsmob_music ($1)->clone ();
@@ -722,7 +728,8 @@ Composite_music:
                $$ = csm;
        }
        | AUTOCHANGE STRING Music       {
-               Auto_change_music * chm = new Auto_change_music (ly_scm2string ($2), $3);
+               Auto_change_music * chm = new Auto_change_music ($3);
+               chm->set_mus_property ("what", $2); 
 
                $$ = chm;
                chm->set_spot (*$3->origin ());
@@ -807,9 +814,11 @@ part_combined_music:
 
 translator_change:
        TRANSLATOR STRING '=' STRING  {
-               Change_translator * t = new Change_translator;
-               t-> change_to_type_str_ = ly_scm2string ($2);
-               t-> change_to_id_str_ = ly_scm2string ($4);
+               Music * t = new Music;
+               t->set_mus_property ("type",
+                       ly_symbol2scm ("change-translator"));
+               t-> set_mus_property ("change-to-type", $2);
+               t-> set_mus_property ("change-to-id", $4);
 
                $$ = t;
                $$->set_spot (THIS->here_input ());
@@ -818,8 +827,9 @@ translator_change:
 
 property_def:
        PROPERTY STRING '.' STRING '='  scalar {
-               Translation_property *t = new Translation_property;
+               Music *t = new Music;
 
+               t->set_mus_property ("type", ly_symbol2scm ("property-set"));
                t->set_mus_property ("symbol", scm_string_to_symbol ($4));
                t->set_mus_property ("value", $6);
 
@@ -830,8 +840,8 @@ property_def:
                csm-> translator_type_str_ = ly_scm2string ($2);
        }
        | PROPERTY STRING '.' STRING PUSH embedded_scm '=' embedded_scm {
-               Push_translation_property *t = new Push_translation_property;
-
+               Music *t = new Music;
+               t->set_mus_property ("type", ly_symbol2scm ("property-push"));
                t->set_mus_property ("symbols", scm_string_to_symbol ($4));
                t->set_mus_property ("element-property", $6);
                t->set_mus_property ("element-value", $8);
@@ -842,8 +852,8 @@ property_def:
                csm-> translator_type_str_ = ly_scm2string ($2);
        }
        | PROPERTY STRING '.' STRING POP embedded_scm {
-               Pop_translation_property *t = new Pop_translation_property;
-
+               Music *t = new Music;
+               t->set_mus_property ("type", ly_symbol2scm ("property-pop"));
                t->set_mus_property ("symbols", scm_string_to_symbol ($4));
                t->set_mus_property ("element-property", $6);
 
@@ -886,8 +896,10 @@ command_element:
                $1-> set_spot (THIS->here_input ());
        }
        | PARTIAL duration_length ';'   {
-               Translation_property * p = new Translation_property;
+               Music * p = new Music;
                p->set_mus_property ("symbol", ly_symbol2scm ( "measurePosition"));
+               p->set_mus_property ("type", ly_symbol2scm ("property-set"));
+
                Moment m = - $2->length_mom ();
                p->set_mus_property ("value", m.make_scm());
                delete $2; // ugh
index c6ee7713043c36f271f20a362623d6093795c281..155f2de24cd102cf7e66ec4cb21671191c3f01c8 100644 (file)
@@ -18,6 +18,8 @@ Part_combine_music::Part_combine_music (String what, Music * f, Music * s)
 
   scm_unprotect_object (f->self_scm());
   scm_unprotect_object (s->self_scm());  
+
+  set_mus_property ("type", ly_symbol2scm ("part-combined-music"));
 }
 
 void
index ea8273d7611b1bf241f7530bd1d170c166cccf71..3799ba0e2f514d675238a1fe28f24921817efbaa 100644 (file)
@@ -7,7 +7,7 @@
 */
 
 #include "property-iterator.hh"
-#include "translation-property.hh"
+#include "music.hh"
 #include "translator-def.hh"
 #include "translator-group.hh"
 
index 5f8081afa0c177e1b908c1e1c1bcae14cdf8a7a9..f339aa92ca060663f1cf571a3999270e1bc82305 100644 (file)
@@ -21,6 +21,7 @@ Relative_octave_music::Relative_octave_music(Music*p,Musical_pitch def)
   : Music_wrapper (p)
 {
   last_pitch_ = element ()->to_relative_octave (def);
+  set_mus_property ("type", ly_symbol2scm ("relative-octave-music"));  
 }
 
 
index 477e295fb1885d180116ad3a19f0cc36ff6a62ac..bf888bc1b068d9bbdb825996252557929b914765 100644 (file)
@@ -57,6 +57,12 @@ Repeat_acknowledge_engraver::do_post_move_processing ()
 void
 Repeat_acknowledge_engraver::do_process_music ()
 {
+  /*
+    At the start of a piece, we don't print any repeat bars.
+   */
+  if (now_mom () == Moment (0))
+    return ; 
+  
   SCM cs = get_property ("repeatCommands");
 
   String s = "";
index baae892504bdaaeacae5a84de6dc5d593b004a85..4cdd6827615568dae864c56eedcc7bd2080724aa 100644 (file)
@@ -40,6 +40,7 @@ Repeated_music::Repeated_music(Music *beg, int times, Music_sequence * alts)
       set_mus_property ("alternatives", alts->self_scm ());
       scm_unprotect_object (alts->self_scm ());  
     }
+  set_mus_property ("type", ly_symbol2scm ("repeated-music"));
 }
 
 Repeated_music::Repeated_music (Repeated_music const &s)
index ad9223d274ecda7f476561074ee6c4fc648ddc41..3b39385c4bed45896d7065cab3e08fd586d7b3b2 100644 (file)
@@ -23,3 +23,8 @@ Request::do_equal_b (Request const*) const
   return true;
 }
   
+
+Request::Request ()
+{
+  set_mus_property ("type", ly_symbol2scm ("request"));
+}
index 5483955386c4fd83684bc8a2678f33d639ad0e68..43ef9b974ad0480587fc86f14d8d382914422829 100644 (file)
@@ -340,3 +340,41 @@ Spacing_spanner::set_springs (SCM smob)
 
 
 
+/*
+  maximum-duration-for-spacing
+From: bf250@freenet.carleton.ca (John Sankey)
+To: gnu-music-discuss@gnu.org
+Subject: note spacing suggestion
+Date: Mon, 10 Jul 2000 11:28:03 -0400 (EDT)
+
+Currently, Lily spaces notes by starting with a basic distance,
+arithmetic_multiplier, which it applies to the minimum duration note
+of the bar. Then she adds a logarithmic increment, scaled from
+arithmetic_basicspace, for longer notes. (Then, columns are aligned
+and justified.) Fundamentally, this matches visual spacing to musical
+weight and works well.
+
+A lot of the time in music, I see a section basically in melodic
+notes that occasionally has a rapid ornamental run (scale). So, there
+will be a section in 1/4 notes, then a brief passage in 1/32nds, then
+a return to long notes. Currently, Lily gives the same horizontal
+space to the 1/32nd notes in their bar (even if set in small size as
+is commonly done for cadenzii) as she gives to 1/4 notes in bars
+where 1/4 note is the minimum duration. The resulting visual weight
+does not match the musical weight over the page.
+
+Looking at the music I am typesetting, I feel that Lily's spacing
+could be significantly improved if, with no change in the basic
+method used, arithmetic_multiplier could be applied referred to the
+same duration throughout a piece. Of course, the current method
+should be retained for those who have already set music in it, so I
+suggest a property called something like arithmetic_base=16 to fix
+1/16 duration as the reference for arithmetic_multiplier; the default
+would be a dynamic base is it is now.
+
+Does anyone else feel that this would be a useful improvement for
+their music? (Of course, if arithmetic_multiplier became a regular
+property, this could be used to achieve a similar result by
+tweaking.)
+  
+ */
index ce588cea2bd86cccd088f831062d39a0ed88d0d3..2dc2ca7761c7fca61adc1bb7a69f1db9bfd228a3 100644 (file)
@@ -60,7 +60,7 @@ Span_arpeggio::brew_molecule (SCM smob)
       a.translate_axis (i * staff_space, Y_AXIS);
       mol.add_molecule (a);
     }
-  mol.translate (Offset (-2 * staff_space, 0);
+  mol.translate (Offset (-2 * staff_space, 0));
 
   return mol.create_scheme (); 
 }
index 4aa1d037afec4b4714d95cdce8a83a957f7a5c5c..75547b17b4f15b3728507e203c8ee89c1e98518f 100644 (file)
@@ -16,6 +16,7 @@ Time_scaled_music::Time_scaled_music (int n, int d,Music *mp)
   num_i_ = n;
   den_i_ = d;
   compress (Moment (num_i_,den_i_));
+  set_mus_property ("type", ly_symbol2scm ("time-scaled-music"));
 }
 
 
index 7c7f38ac2dbb601e746330bb18ed3250721479af..e22f19f8f29ada555018444fd7c112220a5b4ff0 100644 (file)
@@ -15,13 +15,13 @@ Transposed_music::Transposed_music (Music *p, Musical_pitch pit)
 {
   transpose_to_pitch_ = pit;
   p->transpose (pit);
+  set_mus_property ("type", ly_symbol2scm ("transposed-music"));
 }
 
 
 Musical_pitch
 Transposed_music::to_relative_octave (Musical_pitch p)
 {
-
   return p;
 }
 
index 7ec843a289c2be4cc0951404b38f276315fbe04e..53c4a8aab11c50abd5660ad3b7d6793e7ca8480b 100644 (file)
@@ -551,7 +551,7 @@ ScoreContext = \translator {
                (interfaces . (dot-interface))
                (molecule-callback . ,Dots::brew_molecule)
                (dot-count . 1)
-               (position . 0.0)
+               (staff-position . 0.0)
                (Y-offset-callbacks  . (,Dots::quantised_position_callback ,Staff_symbol_referencer::callback))
 
                (name . "Dots")         
index c1e1c8f272851d24bf2305dbc8d11cc99eb8cebc..c318b7dfeff026266a1e7563d981849b80832dd1 100644 (file)
@@ -1,15 +1,15 @@
 Begin3
 Title: LilyPond
-Version: 1.3.94
-Entered-date: 08OCT00
+Version: 1.3.95
+Entered-date: 11OCT00
 Description: 
 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.3.94.tar.gz 
+       1000k lilypond-1.3.95.tar.gz 
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       1000k lilypond-1.3.94.tar.gz 
+       1000k lilypond-1.3.95.tar.gz 
 Copying-policy: GPL
 End
index 43985875f9b922d2093de418a1f82556c0135f92..ea06e44e7d7ff522d52eb50468984604dd027e5f 100644 (file)
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 1.3.94
+Version: 1.3.95
 Release: 1
 License: GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.94.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.95.tar.gz
 Summary: A program for printing sheet music.
 URL: http://www.cs.uu.nl/~hanwen/lilypond
 # Icon: lilypond-icon.gif