X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fmidi-item.cc;h=22176a87aabe21785066420f73b38ae979983ce0;hb=71cc3b4a5adf79c361d2af39f1a361a36a03f273;hp=fb3d1eb5e6d429940e126d63aba334f95e1f0f9a;hpb=b9c65b122d107a6f7c1a44d3041f6cfeb78fc4a2;p=lilypond.git diff --git a/lily/midi-item.cc b/lily/midi-item.cc index fb3d1eb5e6..22176a87aa 100644 --- a/lily/midi-item.cc +++ b/lily/midi-item.cc @@ -3,10 +3,10 @@ source file of the GNU LilyPond music typesetter - (c) 1997--2001 Jan Nieuwenhuizen + (c) 1997--2002 Jan Nieuwenhuizen */ -#include "debug.hh" +#include "warn.hh" #include "main.hh" #include "misc.hh" #include "string.hh" @@ -15,6 +15,7 @@ #include "midi-stream.hh" #include "audio-item.hh" #include "duration.hh" +#include "scm-option.hh" #include "killing-cons.tcc" @@ -90,10 +91,15 @@ Midi_event::Midi_event (Moment delta_mom, Midi_item* midi_p) midi_p_ = midi_p; } +/* + ugh. midi output badly broken since grace note hackage. + */ String Midi_event::str () const { - int delta_i = delta_mom_ * Moment (384 * 4); // ugh. + Rational rat_dt = (delta_mom_.main_part_ * Rational (384) + + delta_mom_.grace_part_ * Rational (100))*Rational (4); + int delta_i = int (rat_dt); String delta_str = Midi_item::i2varint_str (delta_i); String midi_str = midi_p_->str (); @@ -129,7 +135,7 @@ Midi_instrument::str() const { Byte program_byte = 0; bool found = false; - SCM proc = scm_eval2 (ly_symbol2scm ("midi-program"), SCM_EOL); + SCM proc = scm_primitive_eval (ly_symbol2scm ("midi-program")); SCM program = gh_call1 (proc, ly_symbol2scm (audio_l_->str_.ch_C())); found = (program != SCM_BOOL_F); if (found) @@ -200,12 +206,12 @@ Midi_time_signature::Midi_time_signature (Audio_time_signature* a) String Midi_time_signature::str () const { - int num_i = audio_l_->beats_i_; - int den_i = audio_l_->one_beat_i_; + int num = audio_l_->beats_i_; + int den = audio_l_->one_beat_i_; String str = "ff5804"; - str += String_convert::i2hex_str (num_i, 2, '0'); - str += String_convert::i2hex_str (intlog2 (den_i) , 2, '0'); + str += String_convert::i2hex_str (num, 2, '0'); + str += String_convert::i2hex_str (intlog2 (den) , 2, '0'); str += String_convert::i2hex_str (clocks_per_1_i_, 2, '0'); str += String_convert::i2hex_str (8, 2, '0'); return String_convert::hex2bin_str (str); @@ -222,7 +228,8 @@ Midi_note::length_mom () const { Moment m = audio_l_->length_mom_; #if 0 - if (m < Moment (1, 1000)) + //junkme? + if (m < Moment (Rational (1, 1000))) { warning (_ ("silly duration")); m = 1; @@ -323,7 +330,7 @@ Midi_piano_pedal::str () const str += to_str ((char)0x42); else if (audio_l_->type_str_ == "Sustain") str += to_str ((char)0x40); - else if (audio_l_->type_str_ == "UnaChorda") + else if (audio_l_->type_str_ == "UnaCorda") str += to_str ((char)0x43); int pedal = ((1 - audio_l_->dir_) / 2) * 0x7f;