]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/event.cc
* scm/output-svg.scm:
[lilypond.git] / lily / event.cc
index f79409f60ab092edc069e65976bd9764d2156d89..cd803f87c0e0fbc17e40cf2b511fa412998b35c0 100644 (file)
@@ -8,8 +8,7 @@
 
 #include "event.hh"
 #include "warn.hh"
-#include "event.hh"
-  
+
 Moment
 Event::get_length () const
 {
@@ -30,28 +29,6 @@ Event::compress (Moment m)
     set_property ("duration", d ->compressed (m.main_part_).smobbed_copy ());
 }
 
-void
-Event::transpose (Pitch delta)
-{
-  /*
-    TODO: should change music representation such that
-    _all_ pitch values are transposed automatically.
-   */
-  
-  Pitch *p = unsmob_pitch (get_property ("pitch"));
-  if (!p)
-    return ;
-
-  Pitch np = p->transposed (delta);
-  
-  if (abs (np.get_alteration ()) > DOUBLE_SHARP)
-    {
-       warning (_f ("Transposition by %s makes alteration larger than two",
-         delta.to_string ()));
-    }
-
-  set_property ("pitch", np.smobbed_copy ());
-}
 
 Pitch
 Event::to_relative_octave (Pitch last)
@@ -89,99 +66,13 @@ Event::Event ()
 
 ADD_MUSIC (Event);
 
-LY_DEFINE (ly_music_duration_length, "ly:music-duration-length", 1, 0,0,
-         (SCM mus),
-         "Extract the duration field from @var{mus}, and return the length.")
-{
-  Music* m =   unsmob_music (mus);
-  SCM_ASSERT_TYPE (m, mus, SCM_ARG1, __FUNCTION__, "Music");
-  
-  Duration *d = unsmob_duration (m->get_property ("duration"));
-
-  Moment l ;
-  
-  if (d)
-    {
-      l = d->get_length ();  
-    }
-  else
-    programming_error ("Music has no duration");
-  return l.smobbed_copy ();
-  
-}
-
-
-LY_DEFINE (ly_music_duration_compress, "ly:music-duration-compress", 2, 0,0,
-         (SCM mus, SCM fact),
-         "Compress @var{mus} by factor @var{fact}, which is a @code{Moment}.")
-{
-  Music* m =   unsmob_music (mus);
-  Moment * f = unsmob_moment (fact);
-  SCM_ASSERT_TYPE (m, mus, SCM_ARG1, __FUNCTION__, "Music");
-  SCM_ASSERT_TYPE (f, fact, SCM_ARG2, __FUNCTION__, "Moment");
-  
-  Duration *d = unsmob_duration (m->get_property ("duration"));
-  if (d)
-    m->set_property ("duration", d->compressed (f->main_part_).smobbed_copy ());
-  return SCM_UNSPECIFIED;
-}
-
-
-
-/*
-  This is hairy, since the scale in a key-change event may contain
-  octaveless notes.
-
-
-  TODO: this should use ly:pitch. 
- */
-LY_DEFINE (ly_transpose_key_alist, "ly:transpose-key-alist",
-         2, 0, 0, (SCM l, SCM pit),
-         "Make a new key alist of @var{l} transposed by pitch @var{pit}")
-{
-  SCM newlist = SCM_EOL;
-  Pitch *p = unsmob_pitch (pit);
-  
-  for (SCM s = l; scm_is_pair (s); s = scm_cdr (s))
-    {
-      SCM key = scm_caar (s);
-      SCM alter = scm_cdar (s);
-      if (scm_is_pair (key))
-       {
-         Pitch orig (scm_to_int (scm_car (key)),
-                     scm_to_int (scm_cdr (key)),
-                     scm_to_int (alter));
-
-         orig =orig.transposed (*p);
-
-         SCM key = scm_cons (scm_int2num (orig.get_octave ()),
-                            scm_int2num (orig.get_notename ()));
-
-         newlist = scm_cons (scm_cons (key, scm_int2num (orig.get_alteration ())),
-                            newlist);
-       }
-      else if (scm_is_number (key))
-       {
-         Pitch orig (0, scm_to_int (key), scm_to_int (alter));
-         orig = orig.transposed (*p);
-
-         key =scm_int2num (orig.get_notename ());
-         alter = scm_int2num (orig.get_alteration ());
-         newlist = scm_cons (scm_cons (key, alter), newlist);
-       }
-    }
-  return scm_reverse_x (newlist, SCM_EOL);
-}
-
 void
 Key_change_ev::transpose (Pitch p)
 {
   SCM pa = get_property ("pitch-alist");
-
   set_property ("pitch-alist", ly_transpose_key_alist (pa, p.smobbed_copy ()));
-  Pitch tonic = *unsmob_pitch (get_property ("tonic"));
-  set_property ("tonic",
-                   tonic.smobbed_copy ());
+
+  Event::transpose (p);
 }
 
 bool