From: Rudolf Polzer Date: Sat, 10 Dec 2011 11:32:09 +0000 (+0100) Subject: handle MIDI files with "late start" X-Git-Tag: xonotic-v0.6.0~39 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=9486a7b3e2a2cea2d3878191ad2a5864a68a2683;p=xonotic%2Fxonotic.git handle MIDI files with "late start" --- diff --git a/misc/tools/midi2cfg-ng.pl b/misc/tools/midi2cfg-ng.pl index c2c3f47f..83550b00 100755 --- a/misc/tools/midi2cfg-ng.pl +++ b/misc/tools/midi2cfg-ng.pl @@ -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 = ();