]> git.donarmstrong.com Git - lilypond.git/commitdiff
Midi: set each track to its own port. Should fix instrument/volume problems.
authorJan Nieuwenhuizen <janneke@gnu.org>
Fri, 11 Mar 2011 20:52:14 +0000 (21:52 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sat, 12 Mar 2011 13:45:48 +0000 (14:45 +0100)
lily/include/midi-chunk.hh
lily/midi-chunk.cc

index abf409ef2d62cfc11a970e6283c712b020de819e..5af4487828676e4689e25a9abfaa684a6ec3f6fe 100644 (file)
@@ -50,7 +50,7 @@ public:
   void set (string header_string, string data_string, string footer_string);
   virtual string to_string () const;
   virtual string data_string () const;
-  DECLARE_CLASSNAME(Midi_chunk);
+  DECLARE_CLASSNAME (Midi_chunk);
   virtual ~Midi_chunk ();
 private:
   string data_string_;
@@ -61,7 +61,7 @@ private:
 class Midi_header : public Midi_chunk
 {
 public:
-  DECLARE_CLASSNAME(Midi_header);
+  DECLARE_CLASSNAME (Midi_header);
 
   Midi_header (int format, int tracks, int clocks_per_4);
 };
@@ -70,11 +70,11 @@ class Midi_track : public Midi_chunk
 {
 public:
   int number_;
-  DECLARE_CLASSNAME(Midi_track);
+  DECLARE_CLASSNAME (Midi_track);
 
   vector<Midi_event*> events_;
 
-  Midi_track ();
+  Midi_track (int number);
   ~Midi_track ();
 
   void add (int, Midi_item *midi);
index 01a4b9c5a4897e998ed89be040b1f38804f49138..d50b72ea267401fa3e058d693fdb930234230ca2 100644 (file)
@@ -24,7 +24,8 @@
 #include "std-string.hh"
 #include "string-convert.hh"
 
-Midi_track::Midi_track ()
+Midi_track::Midi_track (int number)
+ : number_ (number)
 {
   //                4D 54 72 6B     MTrk
   //                00 00 00 3B     chunk length (59)
@@ -40,8 +41,6 @@ Midi_track::Midi_track ()
   //         mi = 0:  major key
   //         mi = 1:  minor key
 
-  number_ = 0;
-
   char const *data_str0 = ""
     //        "00" "ff58" "0404" "0218" "08"
     // "00" "ff51" "0307" "a120"
@@ -56,6 +55,10 @@ Midi_track::Midi_track ()
   // only for format 0 (currently using format 1)?
   data_string += String_convert::hex2bin (data_str0);
 
+  string port = "00" "ff" "21" "01" + String_convert::int2hex (number_, 2, '0');
+
+  data_string += String_convert::hex2bin (port);
+
   char const *footer_str0 = "00" "ff2f" "00";
   string footer_string = String_convert::hex2bin (footer_str0);