summaryrefslogtreecommitdiff
path: root/libs/ardour/rt_midibuffer.cc
AgeCommit message (Collapse)Author
2020-05-04add some (commented/ifdef'ed) debugging for RTMidiBuffer::read()Paul Davis
2020-03-05Remove a suspected C99-ismJohn Emmas
'lower_bound()' iterates between param #1 and param #2, comparing the result with param #3 - either by making the comparison internally or by deferring to an external comparator function. Prior to C99 however, BOTH cases required param #3 to match the type being iterated. In the case of a deferred comparison, there was apparently a proposal to relax this restriction in C99, though I'm not sure if it in fact got implemented (can't find any examples of it anywhere...)
2020-01-27Fix two more clang static analysis warningsRobin Gareus
2020-01-07fix serious but rare error in RTMidiBuffer's storage of MIDI events with ↵Paul Davis
size > 3 sizeof (T) is in units of bytes, not bits. Use C++ standard CHAR_BITS instead.
2019-11-18unset _reversed whenever RTMidiBuffer gets ::clear()'edPaul Davis
2019-11-18support backwards reading of MIDI from RTMidiBufferPaul Davis
2019-11-06fix unconditional note resolution during DiskReader::realtime_locate()Paul Davis
When looping, we do not want to resolve notes at the end of the loop via ::realtime_locate() - ::get_midi_playback() has already taken care of this. But when not looping, we need this. So, add an argument to tell all interested parties whether the locate is for a loop end or not
2019-11-04avoid use of Port::port_offset() everywhere except Port::flush_buffers() and ↵Paul Davis
Port::get_buffer() Split cycles are run as if they are an entire self-contained cycle, starting at zero and running for "nframes". We adjust the timing and position of data only when retrieving and writing it to Port buffers.
2019-11-02clarify clarifying commentPaul Davis
2019-11-02use a different MidiBuffer API to move data from RT MidiBuffer into ↵Paul Davis
MidiBuffer during ::read()
2019-11-02move ownership of an RT MIDI buffer from DiskIO to MidiPlaylistPaul Davis
2019-11-02fix reallocation/copy sizes for direct index and blob poolPaul Davis
2019-11-02add RAII-style write protection while rendering MIDI playlist into RTMidiBufferPaul Davis
2019-11-02add extra info to output of RTMidiBuffer::dump()Paul Davis
2019-11-02correct size computation for RTMidiBuffer, and reduce expansion amountPaul Davis
2019-11-02reimplement RTMidiBuffer using a highly optimized data structurePaul Davis
Reduces load time of Glass MIDI piece with 48k note events by about 35%. Improves data locality. Omits size for all 3 byte or less MIDI events, uses implicit size. No limit on size of sysex. Relies on the fact that the data structure is always filled linearly in time, and never modified.
2019-11-02add a MidiStateTracker to DiskReader and use to handle transport stop note ↵Paul Davis
resolving
2019-11-02trivial cleanupsPaul Davis
2019-11-02introduce new all-in-RAM MIDI datastructure and use it for MIDI playbackPaul Davis