]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/performance.cc
(Vertical spacing):
[lilypond.git] / lily / performance.cc
index 71a84ddb5a3bc3cd75161754a9a9a38aa3503a85..379e024793d9f112d0b20e84c1acf9ab5f024113 100644 (file)
@@ -7,21 +7,20 @@
 */
 
 #include <time.h>
-#include "warn.hh"
-#include "string.hh"
-#include "string-convert.hh"
-#include "main.hh"
-#include "midi-def.hh"
-#include "midi-item.hh"
-#include "midi-stream.hh"
+
 #include "audio-column.hh"
 #include "audio-item.hh"
 #include "audio-staff.hh"
+#include "file-name.hh"
+#include "lily-version.hh"
+#include "main.hh"
+#include "midi-item.hh"
+#include "midi-stream.hh"
 #include "performance.hh"
 #include "score.hh"
-#include "input-file-results.hh"
-#include "file-path.hh"
-#include "lily-version.hh"
+#include "string-convert.hh"
+#include "string.hh"
+#include "warn.hh"
 
 #include "killing-cons.tcc"
 
@@ -60,10 +59,21 @@ Performance::output (Midi_stream& midi_stream)
        MIDI players tend to ignore instrument settings on
        channel 10, the percussion channel by default.
        */
-      if (channel == 9)
+      if (channel % 16 == 9)
         channel++;
+
+
+      /*
+       Huh? Why does each staff also have a separate channel? We
+       should map channels to voices, not staves. --hwn.
+       */
       if (s->channel_ < 0)
-        s->channel_ = channel;
+       {
+         s->channel_ = channel % 16;
+         if (channel > 15)
+           warning ("MIDI channel wrapped around. Remapping modulo 16.");
+       }
+      
       s->output (midi_stream, channel++);
       if (verbose_global_b)
        progress_indication ("]");
@@ -139,10 +149,6 @@ Performance::add_element (Audio_element *p)
     {
       audio_staffs_.push (s);
     }
-  else if (Audio_column *c = dynamic_cast<Audio_column*> (p))
-    {
-      c->performance_ = this;
-    }
   audio_elem_p_list_ = new Killing_cons<Audio_element> (p, audio_elem_p_list_);
 }
 
@@ -153,15 +159,13 @@ Performance::process (String out)
     out = "lelie.midi";
   
   /* Maybe a bit crude, but we had this before */
-  Path p = split_path (out);
-  p.ext = "midi";
-  out = p.to_string ();
+  File_name file_name (out);
+  file_name.ext_ = "midi";
+  out = file_name.to_string ();
   
   Midi_stream midi_stream (out);
   progress_indication (_f ("MIDI output to `%s'...", out));
 
-  global_input_file->target_strings_.push (out);
-
   output (midi_stream);
   progress_indication ("\n");
   return SCM_UNDEFINED;