summaryrefslogtreecommitdiff
path: root/libs/ardour
AgeCommit message (Collapse)Author
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-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-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-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-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-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-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-06Remove backend support for region-output exportRobin Gareus
This use-case is better served via stem-export.
2020-03-06Remove region-output export (GUI)Robin Gareus
This use-case is better served via stem-export. This export mode never worked correctly when latent plugins are present on the track. or when realtime export was chosen. This used to call track.export_stuff() -> bounce_process() periodically in small chunks from freewheeling callback, which is no longer functional.
2020-03-06Fix export alignment (#7916)Robin Gareus
Ardour's playback is aligned to master-out: "When the playback clock reads 01:00:00:00, the sample corresponding to 01:00:00:00 is audible at the speaker(s)" When exporting, and grabbing data from output ports, the signal is offset by the master-bus physical playback latency. This was compensated for, but lead to initial silence in the exported file. New approach is to start capturing export data during pre-roll, at the time when playback is written to the output buffers. To also shaves off a common offset to make this work with realtime export. Effectively this emulates processing with disconnected master-output port, while still keeping any latency of effects on the master-bus itself. Last but not least: jack updates latencies when freewheeling, (setting HW latency to zero). The callback arrives asynchronously some time after enabling freewheeling, but after Export Ports have been configured. Those callbacks are ignored.
2020-03-06Fix realtime export of multiple time-spansRobin Gareus
After exporting a time-span, the next time-span was started directly from the rt-callback. This had various issues. In particular with realtime export. Post-processing of a realtime-export enables freewheeling and is driven by freewheel callbacks. Freewheeling needs to be safely disabled for an upcoming realtime export. A similar issues existed when mixing realtime and non-realtime exports.
2020-03-06Do not de-click during freewheel exportRobin Gareus
2020-03-06Separate pre-roll cycle calculationRobin Gareus
This is also needed when exporting.
2020-03-05continue with code simplification and add comment given 4a40ff9e53Paul Davis
2020-03-05transport stop resets default_transport_speedPaul Davis
This means that using the wheel in the GUI (or equivalent) ends its effect at transport stop
2020-03-05Remove a suspected C99-ismJohn Emmas
'lower_bound()' iterates between param #1 and param #2, comparing the result with param #3 - either by making the comparison internally or by deferring to an external comparator function. Prior to C99 however, BOTH cases required param #3 to match the type being iterated. In the case of a deferred comparison, there was apparently a proposal to relax this restriction in C99, though I'm not sure if it in fact got implemented (can't find any examples of it anywhere...)
2020-03-02Retain custom internal-send name on session re-loadRobin Gareus
2020-03-02Refactor send naming (#7905)Robin Gareus
This allows users to rename sends without enforcing a numeric bitslot number. However this prevents a user to to use "send" names that are potentially used for new sends or inserts.
2020-03-02Do not include <stdint.h> in the Ardour namespaceRobin Gareus
2020-02-29Fix order setting I/O namesRobin Gareus
IO::set_name() may fail, in case Port::set_name() fails. In that case the IOProcessor should not update its name.