From bb8e85cd462106714a69afcdf89d94cafe48a6b2 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Fri, 11 Mar 2011 21:52:14 +0100 Subject: [PATCH] Midi: set each track to its own port. Should fix instrument/volume problems. --- lily/include/midi-chunk.hh | 8 ++++---- lily/midi-chunk.cc | 9 ++++++--- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/lily/include/midi-chunk.hh b/lily/include/midi-chunk.hh index abf409ef2d..5af4487828 100644 --- a/lily/include/midi-chunk.hh +++ b/lily/include/midi-chunk.hh @@ -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 events_; - Midi_track (); + Midi_track (int number); ~Midi_track (); void add (int, Midi_item *midi); diff --git a/lily/midi-chunk.cc b/lily/midi-chunk.cc index 01a4b9c5a4..d50b72ea26 100644 --- a/lily/midi-chunk.cc +++ b/lily/midi-chunk.cc @@ -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); -- 2.39.2