(maybe) fix MIDI consolidation issues

Stay in BeatTime, not audio time.
This commit is contained in:
Paul Davis 2025-11-12 14:24:21 -07:00
parent 5d08e01b10
commit e97d1d3d3f

View file

@ -6399,20 +6399,25 @@ Session::write_one_track (Track& track, samplepos_t start, samplepos_t end,
}
}
/* XXX NUTEMPO fix this to not use samples */
Temporal::Beats bpos (timepos_t (position).beats());
Temporal::Beats bout_pos (timepos_t (out_pos).beats());
for (vector<MidiSourceLockMap*>::iterator m = midi_source_locks.begin(); m != midi_source_locks.end(); ++m) {
const MidiBuffer& buf = buffers.get_midi(0);
for (MidiBuffer::const_iterator i = buf.begin(); i != buf.end(); ++i) {
Evoral::Event<samplepos_t> ev = *i;
Evoral::Event<samplepos_t> sev (*i);
Evoral::Event<Temporal::Beats> bev (sev.event_type(), timepos_t (sev.time()).beats(), sev.size(), sev.buffer());
if (!endpoint || for_export) {
ev.set_time(ev.time() - position);
bev.set_time (bev.time() - bpos);
} else {
/* MidiTrack::export_stuff moves event to the current cycle */
ev.set_time(ev.time() + out_pos - position);
bev.set_time(bev.time() + bout_pos - bpos);
}
(*m)->src->append_event_samples ((*m)->lock, ev, (*m)->src->natural_position().samples());
(*m)->src->append_event_beats ((*m)->lock, bev, false);
}
}
out_pos += current_chunk;
latency_skip = 0;