summaryrefslogtreecommitdiff
path: root/libs
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 of LuaProc w/o chanmappingRobin Gareus
Since Lua function arguments are not typed, there is no explicit "const", and a function can always modify the parameter. When passing `ChanMapping const&` as argument, the object is copy constructed. In this specific case the std::map<> members of ChanMapping allocate memory. Passing a pointer to the object works around this issue. LuaBridge later dereferences the object as needed when calling c++ methods, and copy-construction would only happen later.
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-06Audio ROM Lua BindingsRobin Gareus
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-06Add Lua Bindings for Readable c'torRobin Gareus
2020-02-06Break out API to create readables from filesRobin Gareus
2020-02-06Lua Array, assert indices > 0Robin Gareus
2020-02-06Extend Lua binding for static methodsRobin Gareus
This add support for Lua bindings for static member functions in weak/share ptr class bindings.
2020-02-04Auto-Input should default ON (per irc discussion)Ben Loftis
2020-02-04Fix a potential case where PresentationInfo type flag is not set (see ↵Ben Loftis
comment for details)
2020-02-03Initialize uninitialized variable (Session StateProtector)Robin Gareus
2020-01-31Lua bindings for locations and locate dispositionRobin Gareus
2020-01-30Fix assert() when removing track(s)Robin Gareus
ARDOUR::Session::remove_routes() explicitly calls save_state (_current_snapshot_name) Update assert() to treat an empty name equivalently as explicitly specified _current_snapshot_name
2020-01-30Use session-version when loading processor stateRobin Gareus
Stateful::loading_state_version vs. Stateful::current_state_version See also 0a5837ec7111
2020-01-30Fix recursive locks during undo/redo due to state saveRobin Gareus
undo may restore locations, which may trigger a state-save. This can result in a deadlock: Location::set_state () -> Locations::get_state() both acquire a the same lock: #2 0x000055a8421836d0 in Glib::Threads::Mutex::Lock::Lock(Glib::Threads::Mutex&) (this=0x7ffe38dcad40, mutex=...) at /usr/include/glibmm-2.4/glibmm/threads.h:687 #3 0x00007fc637731e9c in ARDOUR::Locations::get_state() (this=0x55a8466d4740) at ../libs/ardour/location.cc:1075 #4 0x00007fc637bf14b7 in ARDOUR::Session::state(bool, ARDOUR::Session::snapshot_t, bool) (this=0x55a846d0f050, save_template=false, snapshot_type=ARDOUR::Session::NormalSave, only_used_assets=false) at ../libs/ardour/session_state.cc:1406 #5 0x00007fc637bed2c8 in ARDOUR::Session::save_state(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, bool, bool, bool, bool) (this=0x55a846d0f050, snapshot_name="", pending=true, switch_to_snapshot=false, template_only=false, for_archive=false, only_used_assets=false) at ../libs/ardour/session_state.cc:815 #6 0x00007fc637b4d967 in ARDOUR::Session::auto_punch_start_changed(ARDOUR::Location*) (this=0x55a846d0f050, location=0x55a848fe11d0) at ../libs/ardour/session.cc:1395 #7 0x00007fc637b4da21 in ARDOUR::Session::auto_punch_end_changed(ARDOUR::Location*) (this=0x7fc637b4da21 <ARDOUR::Session::auto_punch_end_changed(ARDOUR::Location*)+67>, location=0x7ffe38dcbf10) at ../libs/ardour/session.cc:1403 [..] #14 0x00007fc637730a2a in ARDOUR::Location::set_state(XMLNode const&, int) (this=0x55a848fe11d0, node=..., version=6000) at ../libs/ardour/location.cc:715 #15 0x00007fc637732428 in ARDOUR::Locations::set_state(XMLNode const&, int) (this=0x55a8466d4740, node=..., version=6000) at ../libs/ardour/location.cc:1130 #16 0x000055a842388dd7 in MementoCommand<ARDOUR::Locations>::undo() (this=0x55a84d1e5f10) at ../libs/pbd/pbd/memento_command.h:141 #17 0x00007fc635b50707 in UndoTransaction::undo() (this=0x55a84d513b80) at ../libs/pbd/undo.cc:128 #18 0x00007fc635b50e1c in UndoHistory::undo(unsigned int) (this=0x55a846d11338, n=0) at ../libs/pbd/undo.cc:267 #19 0x00007fc637c0dfff in ARDOUR::Session::undo(unsigned int) (this=0x55a846d0f050, n=1) at ../libs/ardour/session_state.cc:5577
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-30Add some sanity checks for Session::save parametersRobin Gareus
2020-01-30Cont'd work on loading old route templatesRobin Gareus
This builds on top of 51d2bb: * v6 routes templates/states have a version per <Route> * older route-states are assumed to be from ardour-5 Stateful::loading_state_version 3002, unless specified otherwise
2020-01-29Save/Use state-version with route templatesRobin Gareus
Currently using Ardour-5 route templates (state version "3002") with Ardour6 fails. As opposed to session-templates, Route templates were not versioned. This ensures future compatibility (and may allow to interpret unversioned templates as "3002")
2020-01-29Fix tests failing to build by adding LIB_FFTW3FNikolaus Gullotta
2020-01-29Reduce overhead of Lua session-scriptsRobin Gareus
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-29Allow to dis/engage rec-arm while loopingRobin Gareus
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-28Micro optimization: query PI flags onceRobin Gareus
This also removes a Mixbus special case, explicit ->mixbus() tests are no longer required.
2020-01-28fix previous commit, and another instance of the same (incorrect ↵Paul Davis
constructor) issue
2020-01-28fix assert-crash caused by not constructing a StopTransport event correctlyPaul Davis
2020-01-27correct location of resolved note-offs after region is renderedPaul Davis
2020-01-27Fix sending MMC Start/Stop messagesRobin Gareus
Ardour 5.x slave check was incorrectly ported to A6's TMM: In Ardour 5 the comparison tested for *not* MTC: ``` if (!dynamic_cast<MTC_Slave*>(_slave)) { ..send MMC.. } ``` Other MMC messages (Record, Locate) are sent unconditionally.
2020-01-27Add new requirements from AudioEngine::stop to ::drop_backendRobin Gareus
This fixes an issue that after changing backends (::set_backend), the session-transport was in inconsistent state. If it was rolling, it continued to roll with "stop" being unavailable.
2020-01-27Fix building unit-testsRobin Gareus
2020-01-27Fix two more clang static analysis warningsRobin Gareus
2020-01-27Delete out-of-bounds metronome clicksRobin Gareus
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-26Fix Loop-length (no pre-roll on loop-iterations)Robin Gareus
2020-01-25remove debug outputPaul Davis
2020-01-25Remove midi-event by iterator, not key -- #7885Robin Gareus
With concurrent events removing by key, allowed for invalid iterators.
2020-01-25Update waf2.x "subst" feature uses obj attributesRobin Gareus
2020-01-25Downgrade "using all channels" warning to info - part 2Robin Gareus
2020-01-25Tweaks to build/package scripts for new wafRobin Gareus
* Windows: delete waf installed .dll.a files * Windows: override waf's conf.env.LIBDIR = conf.env.BINDIR with explicit --libdir * Windows: fix asm (`x86_64-w64-mingw32-as` -D flag is for debug messages, -D defines are not available) * Mac: override waf adding -install_name (and -Wl,-compatibility_version -Wl,-current_version) by moving -dynamiclib from linkflags to ldflags * Mac: Allow libs with compat version number suffix (not needed anymore, but may help in the future)
2020-01-25Explicitly use OSXRobin Gareus
Previously this was inherited via PBD. On MacOS/X, this adds "-undefined dynamic_lookup -flat_namespace" and various "-framework .." options to linkflags Without this flag, .dylibs fail to link usually because of missing `-lintl` (Undefined symbols: "_libintl_dgettext") On other systems this is a NO-OP: CFLAGS_OSX, CXXFLAGS_OSX and LINKFLAGS_OSX are only set on the darwin platform.
2020-01-25Towards waf python 2+3 supportDavid Runge
2020-01-25Special case checkbox border color in TreeviewRobin Gareus
2020-01-24Downgrade "using all channels" warning to info messageRobin Gareus
2020-01-24Engine: debug-print alignmentRobin Gareus
2020-01-23tentative fix for stop-transport not working after a locate at loop endPaul Davis
2020-01-23add more debug outputPaul Davis