diff options
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/ardour/midi_ring_buffer.h | 3 | ||||
-rw-r--r-- | libs/ardour/smf_source.cc | 7 |
2 files changed, 8 insertions, 2 deletions
diff --git a/libs/ardour/ardour/midi_ring_buffer.h b/libs/ardour/ardour/midi_ring_buffer.h index 86319ad4b2..657ec0852a 100644 --- a/libs/ardour/ardour/midi_ring_buffer.h +++ b/libs/ardour/ardour/midi_ring_buffer.h @@ -300,8 +300,7 @@ MidiRingBuffer::read(MidiBuffer& dst, nframes_t start, nframes_t end) // priv_read_ptr); // } else { - printf("MRB - SKIPPING - %#X %d %d with time %u\n", - ev.buffer[0], ev.buffer[1], ev.buffer[2], ev.time); + printf("MRB - SKIPPING EVENT (with time %u)\n", ev.time); break; } diff --git a/libs/ardour/smf_source.cc b/libs/ardour/smf_source.cc index 11b62e488f..b046ad6fca 100644 --- a/libs/ardour/smf_source.cc +++ b/libs/ardour/smf_source.cc @@ -790,10 +790,17 @@ SMFSource::load_model(bool lock) nframes_t time = 0; MidiEvent ev; + // FIXME: assumes tempo never changes after start + const double frames_per_beat = _session.tempo_map().tempo_at(_timeline_position).frames_per_beat( + _session.engine().frame_rate()); + int ret; while ((ret = read_event(ev)) >= 0) { time += ev.time; ev.time = time; + + ev.time = (nframes_t)(ev.time * frames_per_beat / (double)_ppqn); + if (ret > 0) { // didn't skip (meta) event //cerr << "ADDING EVENT TO MODEL: " << ev.time << endl; _model->append(ev); |