diff --git a/timidity/readmidi.c b/timidity/readmidi.c index 2f3e24aaf2731d7a12c8fea992d10bb3c4dd0278..528f09cf1a77562ff0f273e6d3cc709e0c32448e 100644 --- a/timidity/readmidi.c +++ b/timidity/readmidi.c @@ -4614,6 +4614,7 @@ static void insert_cuepoints(void) at = compute_smf_at_time(0); t = sp->begin * play_mode->rate; a0 = t >> 24, b0 = t >> 16, a1 = t >> 8, b1 = t; + MIDIEVENT(at, ME_NOTEON, 0, 0, 0); MIDIEVENT(at, ME_CUEPOINT, 0, a0, b0); MIDIEVENT(at, ME_CUEPOINT, 1, a1, b1); } @@ -4640,8 +4641,8 @@ static int32 compute_smf_at_time(const int32 sample) int i; for (i = 0, e = evlist; i < event_count; i++, e = e->next) { - st += (double) tempo * play_mode->rate / 1000000 \ - / current_file_info->divisions \ + st += (double) tempo * play_mode->rate / 1000000 + / current_file_info->divisions * (e->event.time - prev_time) + 0.5; if (st >= sample && e->event.type == ME_NOTE_STEP) return e->event.time;