mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-28 09:27:39 +01:00
Better MidiModel command framework, ready to go for all your canvas editing needs.
Rewrote MidiEvent to be a well-behaved self-contained object that optionally owns it's buffer, has proper copying semantics, etc. Fixed crazy bugs triggered by adding lots of events with varying times to a region. Speed up initial session display significantly (don't redraw each MIDI region tons of times, though still happens more than once and can use fixing...). git-svn-id: svn://localhost/ardour2/trunk@2213 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
3f421ac450
commit
d7db3f757f
22 changed files with 319 additions and 181 deletions
|
|
@ -382,10 +382,10 @@ SMFSource::write_unlocked (MidiRingBuffer& src, nframes_t cnt)
|
|||
|
||||
for (MidiBuffer::iterator i = buf.begin(); i != buf.end(); ++i) {
|
||||
MidiEvent& ev = *i;
|
||||
assert(ev.time >= _timeline_position);
|
||||
ev.time -= _timeline_position;
|
||||
assert(ev.time >= _last_ev_time);
|
||||
const uint32_t delta_time = (uint32_t)((ev.time - _last_ev_time) / frames_per_beat * _ppqn);
|
||||
assert(ev.time() >= _timeline_position);
|
||||
ev.time() -= _timeline_position;
|
||||
assert(ev.time() >= _last_ev_time);
|
||||
const uint32_t delta_time = (uint32_t)((ev.time() - _last_ev_time) / frames_per_beat * _ppqn);
|
||||
|
||||
/*printf("SMF - writing event, delta = %u, size = %zu, data = ",
|
||||
delta_time, ev.size);
|
||||
|
|
@ -395,12 +395,12 @@ SMFSource::write_unlocked (MidiRingBuffer& src, nframes_t cnt)
|
|||
printf("\n");
|
||||
*/
|
||||
size_t stamp_size = write_var_len(delta_time);
|
||||
fwrite(ev.buffer, 1, ev.size, _fd);
|
||||
fwrite(ev.buffer(), 1, ev.size(), _fd);
|
||||
|
||||
_track_size += stamp_size + ev.size;
|
||||
_write_data_count += ev.size;
|
||||
_track_size += stamp_size + ev.size();
|
||||
_write_data_count += ev.size();
|
||||
|
||||
_last_ev_time = ev.time;
|
||||
_last_ev_time = ev.time();
|
||||
}
|
||||
|
||||
fflush(_fd);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue