]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/key-performer.cc
Web-ja: update introduction
[lilypond.git] / lily / key-performer.cc
index dc247440fbacc7e1b042871dda0fc5e263b6d3ed..5de378eda49832c11a8366d155044b23373912ac 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2011 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2015 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -22,6 +22,7 @@
 #include "performer.hh"
 #include "stream-event.hh"
 #include "warn.hh"
+#include "lily-imports.hh"
 
 #include "translator.icc"
 
@@ -35,13 +36,14 @@ protected:
   void process_music ();
   void stop_translation_timestep ();
 
-  DECLARE_TRANSLATOR_LISTENER (key_change);
+  void listen_key_change (Stream_event *);
 private:
   Stream_event *key_ev_;
   Audio_key *audio_;
 };
 
-Key_performer::Key_performer ()
+Key_performer::Key_performer (Context *c)
+  : Performer (c)
 {
   key_ev_ = 0;
   audio_ = 0;
@@ -57,15 +59,14 @@ Key_performer::process_music ()
   if (key_ev_)
     {
       SCM pitchlist = key_ev_->get_property ("pitch-alist");
-      SCM proc = ly_lily_module_constant ("alterations-in-key");
 
-      SCM acc = scm_call_1 (proc, pitchlist);
+      SCM acc = Lily::alterations_in_key (pitchlist);
 
       Pitch key_do (0,
                     scm_to_int (scm_caar (pitchlist)),
                     ly_scm2rational (scm_cdar (pitchlist)));
 
-      Pitch c_do (0, 0, 0);
+      Pitch c_do;
 
       SCM c_pitchlist
         = ly_transpose_key_alist (pitchlist,
@@ -98,7 +99,6 @@ Key_performer::stop_translation_timestep ()
     }
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Key_performer, key_change);
 void
 Key_performer::listen_key_change (Stream_event *ev)
 {
@@ -106,6 +106,12 @@ Key_performer::listen_key_change (Stream_event *ev)
     key_ev_ = ev;
 }
 
+void
+Key_performer::boot ()
+{
+  ADD_LISTENER (Key_performer, key_change);
+}
+
 ADD_TRANSLATOR (Key_performer,
                 /* doc */
                 "",