mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-06 06:44:57 +01:00
(maybe) fix MIDI consolidation issues
Stay in BeatTime, not audio time.
This commit is contained in:
parent
5d08e01b10
commit
e97d1d3d3f
1 changed files with 10 additions and 5 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue