]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/score-performer.cc
Imported Upstream version 2.14.2
[lilypond.git] / lily / score-performer.cc
index 2bdfdd54b9101bcb967742b29ca5875b9b999743..5257788df6b7969ad07ec12925bf5ea0beab0695 100644 (file)
@@ -1,9 +1,20 @@
 /*
-  score-performer.cc -- implement Score_performer
+  This file is part of LilyPond, the GNU music typesetter.
 
-  source file of the GNU LilyPond music typesetter
+  Copyright (C) 1996--2011 Jan Nieuwenhuizen <janneke@gnu.org>
 
-  (c) 1996--2006 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
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  LilyPond is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include "score-performer.hh"
 #include "audio-column.hh"
 #include "audio-item.hh"
 #include "context-def.hh"
-#include "context.hh"
 #include "dispatcher.hh"
 #include "global-context.hh"
 #include "performance.hh"
 #include "midi-stream.hh"
-#include "moment.hh"
 #include "output-def.hh"
 #include "string-convert.hh"
 #include "warn.hh"
 #include "audio-item.hh"
 
 ADD_TRANSLATOR_GROUP (Score_performer,
-                     /* doc */ "",
-                     /* create */ "",
-                     /* accept */ "",
-                     /* read */ "",
-                     /* write */ "");
+                     /* doc */
+                     "",
+
+                     /* create */
+                     "",
+
+                     /* read */
+                     "",
+
+                     /* write */
+                     ""
+                     );
 
 Score_performer::Score_performer ()
 {
@@ -95,6 +111,7 @@ Score_performer::prepare (SCM sev)
   SCM sm = ev->get_property ("moment");
   Moment *m = unsmob_moment (sm);
   audio_column_ = new Audio_column (*m);
+  announce_element (Audio_element_info (audio_column_, 0));
   precomputed_recurse_over_translators (context (), START_TRANSLATION_TIMESTEP, UP);
 }
 
@@ -102,6 +119,9 @@ IMPLEMENT_LISTENER (Score_performer, finish);
 void
 Score_performer::finish (SCM)
 {
+  SCM channel_mapping = context ()->get_property ("midiChannelMapping");
+  bool use_ports = channel_mapping == ly_symbol2scm ("voice");
+  performance_->ports_ = use_ports;
   recurse_over_translators (context (),
                            &Translator::finalize,
                            &Translator_group::finalize,
@@ -116,7 +136,7 @@ Score_performer::one_time_step (SCM)
     {
       if (!skipping_)
         {
-         skip_start_mom_ = audio_column_->at_mom ();
+         skip_start_mom_ = audio_column_->when ();
          skipping_ = true;
         }
     }
@@ -124,11 +144,11 @@ Score_performer::one_time_step (SCM)
     {
       if (skipping_)
         {
-         offset_mom_ -= audio_column_->at_mom () - skip_start_mom_;
+         offset_mom_ -= audio_column_->when () - skip_start_mom_;
          skipping_ = false;
        }
 
-      audio_column_->offset_at_mom (offset_mom_);
+      audio_column_->offset_when (offset_mom_);
       precomputed_recurse_over_translators (context (), PROCESS_MUSIC, UP);
       do_announces ();
     }