summaryrefslogtreecommitdiff
path: root/libs
AgeCommit message (Collapse)Author
2020-03-17NOOP: indent/whitespacePaul Davis
2020-03-17allow loading of regions derived from formerly "destructive" sources with ↵Paul Davis
correct length Without this change, such regions end up with insanely large (though legal) lengths
2020-03-17restore being able to load a 5.12 session with a destructive track.Paul Davis
Not all is working right yet, however
2020-03-17remove destructive/tape mode tracksPaul Davis
2020-03-17remove tape_file_matcher sourcePaul Davis
2020-03-17LV2: Implement ui:requestValue featureDavid Robillard
2020-03-15Change default stereo panner to equal power balanceRobin Gareus
The stereo-width panner is not generally useful. In order to change the azimuth, width has to be reduced, which usually leads to comb-filter artifacts. Equal power stereo, also matches the default mono to stereo panner better than the stereo-width panner. Last but not least, control surfaces only have an azimuth control knob, without an easy way to reduce width, this leaves the panner insensitive.
2020-03-15Fix cleanup report #7891Robin Gareus
Direct call to Session::cleanup_sources() from ARDOUR_UI::cleanup() didn't zero initialize size. This centralizes initialization, so cleanup_trash_sources() does not need to explicitly clear it.
2020-03-15Add/use default argument for track creationRobin Gareus
2020-03-15Fix loading playlists of old sessionsRobin Gareus
Previously when loading Ardour v2, v3-5 sessions, tracks were created with a dummy name "toBeResetFroXML". In v6, Track::init() creates a playlist when the track name is not empty. Later Track::set_state() calls set_name(). When a playlist exists, the playlist's name is set to match the track's name. When loading v6 sessions none of this happens. A previously loaded playlist will be assigned by ID. Older versions identified Playlists by name and by the time the playlist is assigned, there may be ambiguities. With the default (track-name = playlist-name) two playlists with the same name exist: (1) the playlist loaded from the session file (2) the playlist created by Track::init() Playlists are stored in an ordered std::set<shared_ptr<Playlist>>, and name-lookup iterates over the set. When loading an old session after starting Ardour, it is very likely to always lookup the playlist (1), because new, later allocations from (2) are on top of the heap and ordered last. The session seemingly loads correctly, except for lingering, unused empty playlists "toBeResetFroXML" renamed to "Track name" that were never deleted. However when loading an old session from a running instance, ordering is mostly random, and many tracks end up with using the empty playlist (2) instead of the correct playlist (1).
2020-03-15More useful debug message (print script that failed to parse)Robin Gareus
2020-03-14Fix SessionHandleRef shared-ptr leak when unfreezing tracksRobin Gareus
2020-03-14Prevent freeze/bounce of sidechain processorsRobin Gareus
This also consolidates code to test if a processor can be frozen from various places.
2020-03-14import_pt.cc: Remove process lock on AudioEngine && save less oftenDamien Zammit
2020-03-13remove debug outputPaul Davis
2020-03-13add/alter DEBUG_TRACE outputPaul Davis
2020-03-13add comment and additional reset when reinitializing transport master engine DLLPaul Davis
2020-03-13when locating to follow a transport master, reset engine DLLPaul Davis
2020-03-13add new API to TransportMasterManager to manage use of ↵Paul Davis
DiskReader::{inc,dec}_no_disk_output()
2020-03-13adjust TransportFSM to avoid declick to locate if ↵Paul Davis
DiskReader::_no_disk_output is set Under those conditions, the DR will not execute a code path that will cause the declick to take place and therefore the declick will never finish
2020-03-13prevent out-of-window MTC messages from moving transport if we're not using MTCPaul Davis
in 5.x, we would only run the MTC parsing code if slaved to MTC. That's no longer true in 6.0, and without this change, MTC will cause a locate at startup
2020-03-13mingw/gcc-8: use glib's stat(), drop hardlink supportRobin Gareus
2020-03-12Fix un/bypassing Aux-send pannersRobin Gareus
This fixes issues with send-panner bypass whenever the target bus input-count is different from the send's channel count. -- Previously, when the aux-send panner was bypassed, data was copied using BufferSet::read_from(). This sets the channel count of the output buffer set (here: mixbufs) to match the input (here: bufs). e.g. mono to stereo, "1 in -> 2 out" out was changed to "1 in -> 1 out". Un-bypassing the panner later does not reconfigure the I/O. Mixbufs remained mono, and PannerShell::run() "1 in -> 1 out" does nothing. The panner was effectively not functional.
2020-03-12NO-OP: reduce scopeRobin Gareus
2020-03-12NO-OP: whitespaceRobin Gareus
2020-03-11fix apparent free-ordering issue reported in #7926Paul Davis
2020-03-11Fix win32, mingw/gcc-8.3 buildsRobin Gareus
2020-03-10Add Lua binding to query a region's playlistRobin Gareus
2020-03-10Add Lua bindings to access region-fadesRobin Gareus
2020-03-10NO-OP: use set/clear_flag() API instead of set_flags()Robin Gareus
2020-03-10Add convenience ControlFlags operatorsRobin Gareus
Explicit functions for operator&=~ and operator|=
2020-03-10create transport master in the factory method if the engine is runningPaul Davis
This fixes the GUI thinking there is no port because it is notified about the TM before the port is created
2020-03-10small adjustments to TransportMaster API to better accomodate the ↵Paul Davis
"ignore/accept commands" concept
2020-03-10do not reset default transport speed when stopping to prepare for a locatePaul Davis
2020-03-10Adhere to Ardour style guide - 810b2fb78dNikolaus Gullotta
2020-03-10Avoid using 'boost::aligned_storage' which is known to be problematic in ↵John Emmas
MSVC builds:- https://www.boost.org/doc/libs/1_65_0/libs/type_traits/doc/html/boost_typetraits/reference/aligned_storage.html
2020-03-09Session::have_looped must only be true when we locate because we reached the ↵Paul Davis
loop end Locating the start of the loop range at transport start does not count as "have looped". This was preventing pre-roll when starting to loop, which in turn caused data/event loss because the start/end sample ranges would be incorrect inside process
2020-03-09Revert failed experiment, scripted multiple MIDI outputs via dsp_run()Robin Gareus
This reverts commit 8702ff2189665b473918ed60f34b6be4010a06f7, and b10d9cf09bf6150f0ba0eae5dc34fd8db8b2fa91. There was a misconception on the iterator (port vs message in sequence), besides Ardour's mixer-strip is preferably used with a single MIDI port. Most plugin-standards also only support one port. If need be LuaDSP run_map() can be used to handle multiple MIDI I/O ports already.
2020-03-09Prevent double free of global observersNikolaus Gullotta
We accomplish this by explicitly setting the global_obs to NULL after free'ing it. The crash that led to this fix can be replicated as such $ sendosc localhost 3819 /set_surface i 8 i 159 i 8 $ sendosc localhost 3819 /set_surface i 0 i 0 i 0 $ sendosc localhost 3819 /set_surface i 0 i 0 i 0 In this example the observer is created, then free'd, and then free'd *again* because the new observer was never made (sur->feedback[x] checks fail)
2020-03-09Fix MacOS 10.11 (clang-8.0.0) buildsRobin Gareus
gcc, and recent clang-10 can construct new objects using references as arguments. However clang-8 (and MSVC?) do not: "error: no matching function for call to 'operator new'" The compiler apparently does not expand the template class A <-> `A*` vs. `A const&` for different cases.
2020-03-08Replace strftime() with Glib::DateTime()Robin Gareus
This is mainly for windows compatibility "%F" is not supported. An alternative would be to s/%F/%Y-%m-%d/ to produce the ISO date.
2020-03-08Fix count-in and loop-as-mode metronome clicksRobin Gareus
2020-03-07Remove Mixbus send special caseRobin Gareus
Mixbus v6 uses AutomationType BusSendLevel like other Sends, however with different min/max range compared to default Ardour Aux sends. Control surfaces should use interface/internal API.
2020-03-07Fix OSC endless loop for tracks with hidden pluginsRobin Gareus
2020-03-06Fix MIDI export and post-export transport issuesRobin Gareus
Bug was introduced in 128a45954cf, declick-amp gain was overridden, but declick not cleared. For some reason this did not affect audio-only exports nor all session exports.
2020-03-06Fix potential deadlock when exporting w/normalizingRobin Gareus
start_post_processing() may be called from the freewheeling callback, when starting to normalize.
2020-03-06RT-safety use stack (not heap) for plugin pin mappingsRobin Gareus
2020-03-06Add a STL Allocator using the stack (for rt safety)Robin Gareus
This is a dumb stack allocator using LIFO allocation/free, with a fallback to new/delete. This works well for small STL containers in particular std::vector, but it's also suitable for std::map<>, in particular copy constructing small POD maps (plugin pin mappings). Eventually this could be combined with TLSF for a flexible memory arena management. This is however not currently needed for any the planned use-cases. This code is ANSI C++98 compatible, and yet also works with modern C++11, C++14
2020-03-06Fix Coreaudio buffersize changesRobin Gareus
2020-03-06Increase accuracy of analyzed true-peak positionsRobin Gareus