summaryrefslogtreecommitdiff
path: root/libs/ardour/disk_reader.cc
AgeCommit message (Collapse)Author
2019-12-18fix crash when looping with a MIDI trackPaul Davis
2019-12-16fix logic error that prevented MIDI playlists from being rendered at load timePaul Davis
An edit was required to force the render
2019-12-14fix behavior of DiskReader when moved after an instrumentPaul Davis
2019-12-13Fix mismatched deleteRobin Gareus
2019-12-12reduce another race condition riskPaul Davis
overwrite_queued == true is equivalent to _pending_overwrite != 0
2019-12-12remove useless lockPaul Davis
rbuf allocation/use is protected by process_lock
2019-12-12fix playback of newly added/modified MIDI dataPaul Davis
2019-12-12expand DEBUG_TRACE() statementPaul Davis
2019-12-11remove MIDI readahead parameterPaul Davis
We just don't do this anymore
2019-12-11variable renaming in Butler for various buffer sizesPaul Davis
2019-12-10should probably resolve MIDI notes when loop bounds changePaul Davis
We don't really need to do this if the bounds have moved "outwards", but at present we don't know if that is the case, so be safe and resolve in case the loop bounds moved "inwards" and we would otherwise get stuck notes caused by the now-missing noteOffs
2019-12-10fix unnecssary disruption of MIDI stream when disabling loopPaul Davis
2019-12-10use PlayistChanged appropriately to fix MIDI outputPaul Davis
We didn't render the MIDI data when a playlist was set, only when modified.
2019-12-10revert to single buffer for disk playback, and 5.x-style overwritePaul Davis
Also address issues with MIDI and also atomicity of _pending_overwrite
2019-12-08fix error when continuing to refill audio playback buffers after a buffer switchPaul Davis
The file_sample[AUDIO] member was not updated to reflect the last-read sample in the switched-to buffer. Also move several methods and members from DiskIO to DiskReader where they belong.
2019-12-08more debug outputPaul Davis
2019-12-07functional double buffering when using DiskReader::overwrite_existing_buffersPaul Davis
2019-12-07a few parameter changes, and flesh out code to switch rbufs in DiskReaderPaul Davis
2019-12-07initial conversion to double buffering inside DiskReaderPaul Davis
Second buffer is not used (or allocated) yet.
2019-11-24fix crash when using Region > LoopPaul Davis
2019-11-23remove debug outputPaul Davis
2019-11-23remove debug message about LOCATE WITHOUT DECLICK. This behavior is normal ↵Paul Davis
and legal when looping
2019-11-23more tweaks to correctly (or more correctly) reload disk reader buffers when ↵Paul Davis
loop fade choice changes
2019-11-22redesign of declicking and fades around loop boundariesPaul Davis
2019-11-21Fix multi-channel de-clickRobin Gareus
_declick_amp gain needs to be reset for each channel before the test (_declick_amp.gain() != target_gain) if de-clicking is needed.
2019-11-19Fix declick offset position for multi-channel tracksRobin Gareus
2019-11-18DiskReader::_declick_offs should only advance once per ::run() callPaul Davis
2019-11-18DiskReader::_declick_amp needs to repeat the same work for each audio ↵Paul Davis
channel handled
2019-11-18small changes to make declick out triggered by just stoppingPaul Davis
2019-11-18add missing NULL checkPaul Davis
2019-11-18use reverse-reading of MIDI data in DiskReaderPaul Davis
2019-11-15move DiskReader::inc_no_disk_output() into .cc to allow for easier debuggingPaul 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-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-06resolved notes need to use cycle-relative timePaul Davis
2019-11-06be sure to move effective_start while loop-reading MIDIPaul Davis
2019-11-06fix DiskReader::get_midi_playback() when loopingPaul Davis
Although at the Session level we never run "through" the loop end, latency compensation means that that start/end sample values passed to Processor::run() may cross the loop end. Fix how we handle this so that we do not read data from after the end of the loop
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-03another notable cleanup/simplification of DiskReader's MIDI handlingPaul Davis
Note that we resolve notes from the tracker directly into the output buffer. This happens after an edit causes a buffer overwrite
2019-11-03comment fixPaul Davis
2019-11-03immediate events time reference for zero is the start of the run() cycle, ↵Paul Davis
not absolute sample time
2019-11-02for now, show how long MIDI rendering takesPaul Davis
2019-11-02use playback filter when rendering MIDI; respond to changes in filter by ↵Paul Davis
re-rendering
2019-11-02lovely simplification of DiskReader::get_midi_playback()Paul Davis
This is made possible by knowing that it is never called upon to read across loop boundaries. The session splits the process cycle for the end of the loop
2019-11-02remove unused (empty) APIPaul Davis
2019-11-02remove unused APIPaul Davis
2019-11-02add another conditional to decide if we should merge disk MIDI data into ↵Paul Davis
input MIDI data
2019-11-02remove commented linePaul Davis
2019-11-02helpful variable renamePaul Davis
2019-11-02various adjustments so that a MidiPlaylist gets re-rendered whenever it changes.Paul Davis
This may still be missing a few changes (i.e. they do not cause re-rendering)