summaryrefslogtreecommitdiff
path: root/libs/ardour
AgeCommit message (Collapse)Author
2019-11-13Automation watch toggle buttons and enforce latchRobin Gareus
2019-11-13Remove boolean automation special caseRobin Gareus
Previously setting a boolean-control to "write" and roll did not create an automation-point. The state was not correctly captured. The boolean-control needed to be toggled explicitly to create an automation point.
2019-11-13Fix automation-write when locatingRobin Gareus
When locating while writing automation, begin a new write-pass, and add a guard point at the locate target position. NB set_in_write_pass takes 3 arguments: (write_enable, add_point, when) the last two default to false, 0.
2019-11-12Add API to query if a given MIDNAM is plugin-providedRobin Gareus
2019-11-11Only retain control-port connectionsRobin Gareus
When MIDI input follows selection, ports that provide music-data should be disconnected, even if they *also* provide control-data
2019-11-08Fix Metronome: use loop-range only when loopingRobin Gareus
2019-11-08Fix tempo-grid calculation: prevent duplicate events, enforce rangeRobin Gareus
2019-11-08Fix uninitialized valueRobin Gareus
ARDOUR::LV2Plugin::init -> lilv_state_restore () -> set_port_value () compares new against current value
2019-11-08Ignore latency of inactive routesRobin Gareus
2019-11-08Remove unused signalRobin Gareus
2019-11-08Click: pre-allocate memory for grid-point lookupRobin Gareus
2019-11-08Fix metronome when loopingRobin Gareus
2019-11-08Fix loop/pre-rollRobin Gareus
Pre-roll to fill buffers only needs to be done once when starting to play or when locating. Seamless looping just continues. Every processor takes the loop position into account locally.
2019-11-06remove stacktracePaul Davis
2019-11-06remove debug outputPaul Davis
2019-11-06do not transition "back" to Rolling by calling start_transport() if a locate ↵Paul Davis
was for loop-end We never stopped the transport, so there's no reason to start it again. Doing so causes alignment problems because all tracks have their ::run() ranges reinitialized
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-06Use strict-i/o on master-bus by defaultRobin Gareus
This precludes issues with multi-out-plugins adding an excessive number of ports and changing master-panning.
2019-11-06remove debug messagePaul Davis
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-06improve comment about warning messagePaul Davis
2019-11-04fix a bad transition in the transportFSM.Paul Davis
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-04rename method argument to better reflect its intended rolePaul Davis
2019-11-03when resolving notes for a locate, use zero as the timestamp, not the ↵Paul Davis
current Port::port_offset() All _immediate_events data gets written to the output buffer at the end of the current (split) cycle anyway, so the timestamp is irrelevant (as long as it is zero, and will therefore be read by ::snapshot_out_of_band_data()
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-03Correctly flush MIDI buffers on cycle-splitRobin Gareus
2019-11-03Clarify MIDI-port event-timestamp debug-messageRobin Gareus
2019-11-03Fix timecode generation after split-cyclesRobin Gareus
2019-11-03Add/remove source(s) in our MSVC project (libardour)John Emmas
2019-11-03Fix compiler warningRobin Gareus
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-03Auto-connect input should not disconnect other portsRobin Gareus
This fixes an issue with existing MIDI routing between MIDI tracks and/or busses. Automatic MIDI connections should only dis/re-connect ports that are explicitly configured in Preferences > MIDI Ports and leave all other connections alone.
2019-11-02comment updatePaul Davis
2019-11-02use new API to make locate happenPaul Davis
2019-11-02don't locate when enabling loop if loop-is-modePaul Davis
2019-11-02allow explicit "with-roll" argument to a locate to override ↵Paul Davis
Session::should_roll_after_locate()
2019-11-02remove unused parameter from Session::set_play_loop() APIPaul Davis
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-02NOOP: newline removedPaul Davis
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