]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.3.95
authorfred <fred>
Tue, 26 Mar 2002 23:57:07 +0000 (23:57 +0000)
committerfred <fred>
Tue, 26 Mar 2002 23:57:07 +0000 (23:57 +0000)
24 files changed:
CHANGES
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/output-property.hh
lily/include/request.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/parser.yy
lily/part-combine-music.cc
lily/property-iterator.cc
lily/relative-octave-music.cc
lily/repeated-music.cc
lily/request.cc
lily/time-scaled-music.cc
lily/transposed-music.cc

diff --git a/CHANGES b/CHANGES
index e414a5881f66d471d1be5ceaa35b44b2c7a8e294..2092760b675afb4fcada3f6a1bd38eef9faca25e 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,29 @@
+1.3.94.uu1
+==========
+
+* Use music property for setting type. This prevents accidental
+forgotten copies.
+
+1.3.94.jcn3
+===========
+
+* Added Arpeggio and Trill elements to feta font.
+
+* Yet another bugfix for output-property (Han-Wen)
+
+* Made some fixes to les-nereides.
+
+* Fixed output-property (Dankje).
+
+* 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
+======
+
 1.3.93.uu1
 ==========
 
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 8590868d81664b5e4ccda4b4892efd6845a4310a..01e8ffbf138f8625cdbbab91b602d07ed86581f4 100644 (file)
@@ -11,8 +11,7 @@
 #define OUTPUT_PROPERTY_HH
 
 #include "music.hh"
-#include "protected-scm.hh"
-
+//#include "protected-scm.hh"
 
 /*
   
@@ -24,7 +23,10 @@ props:
 class Output_property : public Music
 {
 public:
-  Output_property(SCM, SCM, SCM);
+  VIRTUAL_COPY_CONS (Music);
+  Output_property (SCM, SCM, SCM);
 };
 
 #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 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 8c3c2fe3a68822abbf0aa33f859717a69d9f24c2..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 ()
 {
@@ -108,36 +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<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");
       
       /*
index 70b04f76806bb37c8af128a4c44b07880e05f489..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
@@ -127,6 +127,7 @@ yylex (YYSTYPE *s,  void * v_l)
 
 /* tokens which are not keywords */
 %token AUTOCHANGE
+%token ARPEGGIO
 %token TEXTSCRIPT
 %token ACCEPTS
 %token ALTERNATIVE
@@ -691,10 +692,18 @@ 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 ();
        }
-       | MUSIC_IDENTIFIER { $$ = unsmob_music ($1)->clone (); }
        | property_def
        | translator_change
        | Simple_music '*' bare_unsigned '/' bare_unsigned      {
@@ -719,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 ());
@@ -804,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 ());
@@ -815,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);
 
@@ -827,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);
@@ -839,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);
 
@@ -883,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
@@ -1068,6 +1083,11 @@ verbose_request:
                a->set_spot (THIS->here_input ());
                $$ = a;
        }
+       | ARPEGGIO {
+               Arpeggio_req *a = new Arpeggio_req;
+               a->set_spot (THIS->here_input ());
+               $$ = a;
+       }
        ;
 
 sup_quotes:
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 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 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;
 }