X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fmidi-walker.cc;h=bc6c93dc56344f0a5a8b3b96078dfcdf0ac6d7c0;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=6d0b1290a38491f3f8c47f21d7063ab88f47b3a1;hpb=08560a1b8076630c4fc6cb9b902614d8b74fd6fc;p=lilypond.git diff --git a/lily/midi-walker.cc b/lily/midi-walker.cc index 6d0b1290a3..bc6c93dc56 100644 --- a/lily/midi-walker.cc +++ b/lily/midi-walker.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2012 Han-Wen Nienhuys + Copyright (C) 1997--2015 Han-Wen Nienhuys Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify @@ -52,13 +52,15 @@ audio_item_less (Audio_item *const a, return a->get_column ()->when_ < b->get_column ()->when_; } -Midi_walker::Midi_walker (Audio_staff *audio_staff, Midi_track *track) +Midi_walker::Midi_walker (Audio_staff *audio_staff, Midi_track *track, int start_tick) { track_ = track; index_ = 0; items_ = audio_staff->audio_items_; vector_sort (items_, audio_item_less); - last_tick_ = 0; + //Scores that begin with grace notes start at negative times. This + //is OK - MIDI output doesn't use absolute ticks, only differences. + last_tick_ = start_tick; percussion_ = audio_staff->percussion_; merge_unisons_ = audio_staff->merge_unisons_; } @@ -178,7 +180,8 @@ void Midi_walker::process () { Audio_item *audio = items_[index_]; - do_stop_notes (audio->audio_column_->ticks ()); + Audio_column *col = audio->get_column (); + do_stop_notes (col->ticks ()); if (Midi_item *midi = get_midi (audio)) {