handle MIDI files with "late start"

This commit is contained in:
Rudolf Polzer 2011-12-10 12:32:09 +01:00
parent 271e93c1f4
commit 9486a7b3e2

View File

@ -800,8 +800,20 @@ sub ConvertMIDI($$)
}
}
# sort events
@allmidievents = sort { $a->[1] <=> $b->[1] or $a->[2] <=> $b->[2] } @allmidievents;
# find the first interesting event
my $shift = [grep { $_->[0] eq 'note_on' } @allmidievents]->[0][1];
die "No notes!"
unless defined $shift;
# shift times by first event, no boring waiting
$_->[0] = ($_->[0] < $shift ? 0 : $_->[0] - $shift) for @tempi;
$_->[1] = ($_->[1] < $shift ? 0 : $_->[1] - $shift) for @allmidievents;
# fix event list
my %midinotes = ();
my $notes_stuck = 0;
my %notes_seen = ();