X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fmidi-chunk.cc;h=9e5a828a602908badd83f5ef0ec8bfb73fa399e7;hb=ffb2d00dbc64ad3a8702a98e8d7d2e0c31890e9a;hp=01a4b9c5a4897e998ed89be040b1f38804f49138;hpb=1c846b2c2348b4e0ca4a3c2e8fb267047ba2d203;p=lilypond.git diff --git a/lily/midi-chunk.cc b/lily/midi-chunk.cc index 01a4b9c5a4..9e5a828a60 100644 --- a/lily/midi-chunk.cc +++ b/lily/midi-chunk.cc @@ -1,8 +1,8 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2007--2011 Han-Wen Nienhuys - + Copyright (C) 2007--2012 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,7 +24,8 @@ #include "std-string.hh" #include "string-convert.hh" -Midi_track::Midi_track () +Midi_track::Midi_track (int number, bool port) + : number_ (number) { // 4D 54 72 6B MTrk // 00 00 00 3B chunk length (59) @@ -40,22 +41,27 @@ 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" - // why a key at all, in midi? - // key: C - // "00" "ff59" "02" "00" "00" - // key: F (scsii-menuetto) - // "00" "ff59" "02" "ff" "00" - ; + // "00" "ff58" "0404" "0218" "08" + // "00" "ff51" "0307" "a120" + // why a key at all, in midi? + // key: C + // "00" "ff59" "02" "00" "00" + // key: F (scsii-menuetto) + // "00" "ff59" "02" "ff" "00" + ; string data_string; // only for format 0 (currently using format 1)? data_string += String_convert::hex2bin (data_str0); + if (port) + { + 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); @@ -76,18 +82,17 @@ Midi_track::data_string () const { string str = Midi_chunk::data_string (); - for (vector::const_iterator i (events_.begin ()); - i != events_.end (); i ++) + for (vector::const_iterator i (events_.begin ()); + i != events_.end (); i++) { str += (*i)->to_string (); } return str; } - Midi_track::~Midi_track () { - junk_pointers (events_); + junk_pointers (events_); } /**************************************************************** @@ -104,12 +109,11 @@ Midi_event::to_string () const { string delta_string = int2midi_varint_string (delta_ticks_); string midi_string = midi_->to_string (); - assert (midi_string.length ()); return delta_string + midi_string; } /**************************************************************** header -*/ +*/ Midi_header::Midi_header (int format, int tracks, int clocks_per_4) { @@ -127,13 +131,12 @@ Midi_header::Midi_header (int format, int tracks, int clocks_per_4) set ("MThd", str, ""); } - /**************************************************************** chunk */ Midi_chunk::~Midi_chunk () { - + } void @@ -156,7 +159,7 @@ Midi_chunk::to_string () const string str = header_string_; string dat = data_string (); string length_string = String_convert::int2hex (dat.length () - + footer_string_.length (), 8, '0'); + + footer_string_.length (), 8, '0'); length_string = String_convert::hex2bin (length_string); str += length_string;