summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour
AgeCommit message (Collapse)Author
2020-02-06Prefer TLSF over realloc-pool for LuaProcRobin Gareus
With 4MB RAM and 1.5MB locked base memory (C++ bindings), TLSF has a better worst-case performance (-20% std-dev execution time compared to realloc-pool). Even though on average Realloc-Pool performs better (-9% average time, compared to TLSF).
2020-02-06Fix rt-safety (const reference, not const copy)Robin Gareus
PluginInsert (and a few other places) iterate over channel mappings using a const iterator. However mappings() allocated memory since it was copied
2020-02-06Update DSP::ConvolutionRobin Gareus
Expose zita-convolver bindings, to allow for custom NxM convolution matrices, and dedicated FIR processors.
2020-02-06Add a Read Only Memory Audio SourceRobin Gareus
This will come in handy for FIR, or short samples in combination with a Lua convolution processor.
2020-02-06Break out API to create readables from filesRobin Gareus
2020-02-04Auto-Input should default ON (per irc discussion)Ben Loftis
2020-01-30Allow StateProtector to save pending filesRobin Gareus
This is in preparation for saving state while the session is record-arm'ed. Most notably config changes and undo/redo. In case both normal and pending save happens, pending must be last and is required to recover from crashes during recording.
2020-01-29Fix MIDI loop capture alignmentRobin Gareus
Loop recording creates a single long source, regions have to be "split" from this source, using "start" as offset. Since MIDI uses absolute timestamps, offsetting this by accumulating buffer_position += (*ci)->samples; like Track::use_captured_audio_sources() does, is not correct. Furthermore, record_enabled() may be off when stopping recording, MIDI needs to be flushed regardless.
2020-01-29Fix loop recording alignmentRobin Gareus
DiskWriter::transport_looped() is called from the session when engine loops. This does not take local disk-reader run() latency offset into account. finish_capture() needs to be postponed until the disk-writer itself reaches the loop-position. This is achieved by postponing loop() and calling it once loop-length of samples has been captured. This works because engaging loop always seeks to the loop-position and first loop resets _capture_captured.
2020-01-27Fix some clang-scan warningsRobin Gareus
2020-01-26Fix the ability to set Session Start&End Range on a new, empty sessionBen Loftis
set_session_extents had a bug; it wasn't calling locations->add() on the newly created location. The correct implementation was in set_session_range_location, but this was only called from one place. This function was removed, and set_session_extents will be used in its place. set_session_extents will create a session location if one no longer exists, so there is no need for set_session_range_location.
2020-01-23add Session::locate_initiated()Paul Davis
This differs from ::locate_pending() by covering either phase of a locate - declick or refill
2020-01-23add TransportFSM::declicking_for_locate()Paul Davis
2020-01-23MIDI-region specific naming logicPaul Davis
plus slight cleanup of Region::set_name(). Note that issues with ARDOUR::legalize_for_path() not excluding colons still remain
2020-01-23remove no-longer used PostTransportWork bits and renumber the restPaul Davis
2020-01-20Change tape-machine-mode to auto-input-does-talkback (libardour part)Ben Loftis
In prior versions: if Auto Input was enabled, the default behavior was to monitor the Input of all tracks when stopped; even if they aren't armed. Tape Machine Mode changed the behavior of Auto Input so that it doesn't always monitor the track inputs when transport is stopped. After some discussion on IRC, we determined that Tape mode is likely more practical for a DAW user, and therefore a better default. Rather than default an ambiguously-named preference "on", we decided to invert the behavior, rename it sensibly(?), and default it OFF.
2020-01-20fix API and use of Session::force_locate()Paul Davis
Because of the addition of LocateTransportDisposition, this call was unconditionally forcing a roll during startup
2020-01-18remove fragile union designPaul Davis
Absurd to be memory-conscious about a couple of member variables in an object that represents user input
2020-01-18fix broken-ness caused by bad initialization of a StopTransport event in ↵Paul Davis
TransportFSM
2020-01-18rename DoTheRightThing to RollIfAppropriatePaul Davis
2020-01-18Session::request_locate() takes a tri-valued second argument for ↵Paul Davis
"roll-after-locate" This allows callers to defer logic about auto-play/current rolling state and more to TransportFSM where it can be cnentralized and is less ambiguous
2020-01-15Change default preferences as discussed on IRC todayBen Loftis
2020-01-13Add rubberband Lua bindings to process ardour regionsRobin Gareus
2020-01-08add concept of an owner region (by ID) to PlaylistSourcePaul Davis
2020-01-05remove the (unused) concept of a MIDI patchfile folder per sessionPaul Davis
2020-01-05use glibmm threads for the midnam load thread, instead of raw pthreads (for ↵Paul Davis
portability)
2020-01-03NOOP: line refoldingPaul Davis
2019-12-31remove MIDI Control input and output ports from session-level objectsPaul Davis
2019-12-29add Session::transport_stopped_or_stopping()Paul Davis
Session::TransportStateChanged notifies about transport stop before the stop is complete (i.e. at the start of the declick). Various other objects (notably control surfaces) connect to this signal and use it to modify their displayed state. We need a method that can tell them we are stopped (or stopping) even though we are not "fully" stopped yet. This is that method
2019-12-29Use human-numeric-sort for plugin scale-pointsRobin Gareus
2019-12-27add new Session method to return the worst_latency_preroll() value rounded ↵Paul Davis
up to the nearest buffer size
2019-12-27remove unused memberPaul Davis
Note: there is no global state for "the" transport master, since we have several at all times now
2019-12-25Use weak-ptr for source added/removed signals (1/2)Robin Gareus
This might fix a "SessionHandleRef exists across session deletion", when the shared_ptr was be pushed onto a x-thread pool, and not invalidated in time before the session was closed.
2019-12-25Prevent copy-construction of sources to be destroyed listRobin Gareus
destroy_sources () is only called from Session::remove_last_capture (). The list of sources to be destroyed is the local scope of that method and will hold a reference to the object. copy-construct the list and removing elements one by one from the copy is only unnecessary overhead.
2019-12-23add a mechanism to use existing MIDNAM info and connect to PatchesChanged in ↵Paul Davis
future, atomically The atomically is with respect to the initial thread-based MIDNAM loading
2019-12-23basics of threaded MIDNAM loadingPaul Davis
2019-12-17Convert Disksteam & Playlists from old 2.x sessionsRobin Gareus
2019-12-16reinstate missing latency initialization codePaul Davis
Removed (mistakenly) during work on transportFSM
2019-12-16Remove cruft, unused APIRobin Gareus
2019-12-14fix behavior of DiskReader when moved after an instrumentPaul Davis
2019-12-14Add Inline Control Port PropertyRobin Gareus
This allows to indicate that a control should by default be displayed inline in the mixer-strip. Previously that was hard-coded for and enabled for send-level controls only.
2019-12-14Make BusSendLevel 1st class citizen (1/2)Robin Gareus
Equivalent to Gain and Trim (gain-coefficient, not dB) and use it for Sends.
2019-12-12Add method to look up Lua script by nameRobin 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-12BOOST_SP_NOEXCEPT is n/a in boost 1.62Robin Gareus
Even though the method that is overridden (shared_ptr<t>::operator=), has that signature in modern boost, it's of no real significance for the case at hand (ExportChannel, ExportTimespan)
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-12Fix stackoverflow, endless recursion on ComparableSharedPtr assignmentRobin Gareus
boost::shared_ptr & operator=(shared_ptr const & r); is not declared virtual and cannot safely be overloaded.
2019-12-11Fix loading plugin state from sessionsRobin Gareus
While loading a session XML state, set_state must use `Stateful::loading_state_version`. When later copying processor state, `Stateful::current_state_version` is correct.