+ if (ret > 0) {
+
+ /* not a meta-event */
+
+ ev.set (buf, size, time / (double)ppqn());
+ ev.set_event_type(EventTypeMap::instance().midi_event_type(buf[0]));
+
+ if (!have_event_id) {
+ event_id = Evoral::next_event_id();
+ }
+#ifndef NDEBUG
+ std::string ss;
+
+ for (uint32_t xx = 0; xx < size; ++xx) {
+ char b[8];
+ snprintf (b, sizeof (b), "0x%x ", buf[xx]);
+ ss += b;
+ }
+
+ DEBUG_TRACE (DEBUG::MidiSourceIO, string_compose ("SMF %6 load model delta %1, time %2, size %3 buf %4, type %5\n",
+ delta_t, time, size, ss , ev.event_type(), name()));
+#endif
+
+ _model->append (ev, event_id);
+
+ // Set size to max capacity to minimize allocs in read_event
+ scratch_size = std::max(size, scratch_size);
+ size = scratch_size;
+
+ _length_beats = max(_length_beats, ev.time());