Commit graph

18632 commits

Author SHA1 Message Date
Paul Davis
ccf90a9181 triggerbox: change to a CAS-based mechanism for setting UI-controlled properties
UIs only set a "shadow" value of most trigger properties, and use CAS to interlock (contention
is not expected to ever be an issue, it would imply two UIs being used to control this at
precisely the same time. The actual properties are updated whenever the trigger calls ::retrigger()
2022-01-25 18:07:21 -07:00
Robin Gareus
f7b826841b
Log Thread-name in stacktrace 2022-01-26 00:17:49 +01:00
Paul Davis
b7769a8f4b possible fix for a valgrind reported illegal read 2022-01-24 16:42:12 -07:00
Robin Gareus
bdb91a434a
Simplify call to find_route_name()
Use std::string directly. There's no need to create a temporary
std::string from a char* when the API can use it directly.
2022-01-24 21:25:20 +01:00
Robin Gareus
7128c9958f
Fix crash when duplicating track(s)
Compare to PluginInsert::set_state(). The sidechain must not
inherit the name from the template track. That leads
to port-name ambiguities.

Also later there will be a crash when ::update_sidechain_name()
calls IO::set_name since: _name is not found in _current_name.
2022-01-24 21:25:20 +01:00
Paul Davis
8a310a748a add new config variable for interview-editing
If enabled, this prevents range-selection from propagating across
all tracks when RippleAll is set
2022-01-24 11:29:36 -07:00
Robin Gareus
1c5cfdad82
..but there is a Temporal::timecnt_t modulo operation 2022-01-24 06:51:28 +01:00
Robin Gareus
dd0dcd6d59
timepos_t modulo operator is defined but not implemented 2022-01-24 06:50:52 +01:00
Robin Gareus
90ff5de6e3
Add Lua bindings for libtemporal type operations
This allows to use standard arithmetic (+ - * / %) and
relational (< <= ==) operations on Temporal::timepos_t
and Temporal::timecnt_t class instances.

Furthermore `print()` outputs the actual value (no longer
user-data pointer to the instance).
2022-01-24 06:23:16 +01:00
Robin Gareus
d51a1ccd99
Add API to modify Lua Metatable and set Metamethods
This allows to map C++ operators to be used as Lua
arithmetic and relational operations.
2022-01-24 06:23:16 +01:00
Ben Loftis
00aec4f91e Trigger page: changes to cue-recording behavior (see comments) 2022-01-23 20:24:44 -06:00
Ben Loftis
f35cb6da8f trigger page: cue recording should be disabled by default 2022-01-23 20:24:44 -06:00
Paul Davis
fea76a4adf fix thinko in cleaning up of XML nodes in Session::memento_command_factory()
"child" is not an independent object, but points to either before or after, both of which have
already been deleted
2022-01-23 07:46:45 -07:00
Mads Kiilerich
6ff1d86cad wscript: improve configure messages slightly 2022-01-22 22:19:07 +01:00
Mads Kiilerich
8bb91099c5 wscript: drop configure statements already present in the top level wscript
Avoid repeated pointless configure messages like:
Checking for 'g++' (C++ compiler!)                   : /usr/lib64/ccache/g++
Checking for 'gcc' (C compiler)                      : /usr/lib64/ccache/gcc
2022-01-22 22:19:03 +01:00
Mads Kiilerich
7f6ce9a010 sndfile: Fix skipping of first character of file names in error logging.
Logs for a file named ABCDEF.flac showed up as

  2022-01-19T16:31:55 [ERROR]: SndFileSource: could not seek to sample 90059776 within BCDEF.flac (No Error.)

So, evidently, there is no need for the substr(1).

_name is a PBD::Property<string> which already uses .val() for <<.

The same pattern is found and fixed in sndfilesource.cc and
coreaudiosource.cc .
2022-01-22 21:48:40 +01:00
Mads Kiilerich
197ec7a943 vst2: drop unused vst2_suffix static function
Address build warning:

../libs/fst/../ardour/vst2_scan.cc:549:20: warning: ‘std::string vst2_suffix()’ defined but not used [-Wunused-function]
  549 | static std::string vst2_suffix () {
      |                    ^~~~~~~~~~~
2022-01-22 20:26:50 +01:00
Robin Gareus
f9f3f598c4
Address rare race condition when creating sidechain inputs
Do not run the sidechaing processor before the processor
was configured. This ensure that Route::configure_processors()
has completed and ensure_buffers() was called.

Otherwise it may happen Sidechain::run could request a buffer
that is n/a (BufferSet::get_available assertion, see also 687149d8d2)
2022-01-22 19:26:27 +01:00
Robin Gareus
0e6561b009
Fix Thread & Lock issues when adding Triggerbox w/sidechain
Track::init() must not call `add_processor` directly.
The track is not in the process graph, yet and hence various
calls (e.g. lock graph, update latency etc) are not applicable.

Furthermore ::add_midi_sidechain() calls IO::add_port()
which takes the process-lock.

The solution is to create the Triggerbox early on and let Route::init
deal with it like any other internal processors.
2022-01-22 04:20:55 +01:00
Robin Gareus
687149d8d2
Require Session MIDI buffer for Triggerbox sidechain
This fixes an issue when adding a MIDI track, but there there
are no session-buffers for it, leading to:

ARDOUR::Buffer& ARDOUR::BufferSet::get_available(ARDOUR::DataType, size_t): Assertioni < _available.get(type)' failed.
2022-01-22 04:20:54 +01:00
Robin Gareus
fc9f796257
Revert "Process-lock is required when changing processors"
This reverts commit 0a213e71b3.
which needs a better solution to prevent deadlock in case the lock is
already taken.
2022-01-22 00:31:54 +01:00
Robin Gareus
0a213e71b3
Process-lock is required when changing processors
This is somewhat unfortunate, since session.cc also takes the
lock shortly afterward to call ->ensure_io()

This should be consolidated before release.
2022-01-22 00:06:13 +01:00
Paul Davis
2fa8c7cd42 triggerbox: if any cues were recorded, remove all existing cue markers in transport-roll-range before adding new ones 2022-01-21 13:08:47 -07:00
Paul Davis
fd3ddce80a do not play existing cue markers while recording cues 2022-01-21 10:55:55 -07:00
Paul Davis
e14acfc07d prevent multiple cue markers at the same location 2022-01-21 10:55:55 -07:00
Paul Davis
76f4813ee6 triggerbox: experimentally enable cue recording by default 2022-01-21 10:55:55 -07:00
Paul Davis
b023b97538 triggerbox: flush newly recorded cue markers back to RT context 2022-01-21 10:55:55 -07:00
Paul Davis
d830800ed9 triggerbox: add flush-at-transport-stop from recorded cues to locations 2022-01-21 10:55:54 -07:00
Paul Davis
8d1684e1f7 triggerbox: store cue bangs in process thread when discovered 2022-01-21 10:55:54 -07:00
Paul Davis
9abf6bc260 triggerbox: introduce member var to control cue recording 2022-01-21 10:55:54 -07:00
Paul Davis
f63c049d87 triggerbox: add struct and ringbuffer for recording cues 2022-01-21 10:55:54 -07:00
Ben Loftis
4bc3230756 Locations: provide a signal for when a single Location's Cue-ID changes 2022-01-21 10:06:18 -06:00
Ben Loftis
11bb40a06e Ruler Markers: for now, ignore Cue Markers in various Range operations 2022-01-21 10:02:18 -06:00
Paul Davis
5ade0927dd remove Other/Any follow action types 2022-01-20 18:56:07 -07:00
Paul Davis
b94c5dcec7 remove Next/Prev (Live-style) follow action types 2022-01-20 18:56:07 -07:00
Paul Davis
bbdfc5e777 remove FollowAction type "QueuedTrigger" 2022-01-20 18:56:07 -07:00
Paul Davis
90e6107972 triggerbox: left follow action == None means "no follow action at all" 2022-01-20 14:15:45 -07:00
Paul Davis
8ddf057553 triggerbox: fix enum (compiler should have noticed this) 2022-01-20 14:15:25 -07:00
Paul Davis
b884f7c534 triggerbox: do not use follow length when (left) follow action is None 2022-01-20 14:03:40 -07:00
Paul Davis
68c87c3f29 triggerbox: fix various errors caused by not setting transition_bbt
In cases where no quantization is done, transition_bbt was not set,
and this led to expected_end_sample being incorrect.
2022-01-20 13:57:47 -07:00
Paul Davis
02f4daffe4 fix inconsequential debug-trace garbage value report from clang 2022-01-20 13:40:49 -07:00
Paul Davis
ee5d3da929 fix inconsequential (unlikely) memory leak from clang 2022-01-20 13:40:49 -07:00
Paul Davis
4c9460b697 fix incorrect code that passed a null boost::shared_ptr<AudioRegion> into a ::get_state() call 2022-01-20 12:07:59 -07:00
Paul Davis
413f2e9d1b triggerbox: implement (?) JumpTrigger follow action 2022-01-20 11:01:00 -07:00
Paul Davis
993c7c4bec canvas: manually remove changes from 6f91dc0799 and implement same goal in a different way
The AudioClipEditor features a scroll bar that is a part of the canvas. Because scroll
groups are at the top level of a canvas, the scroll bar is necessary within a scroll
group, which causes it to get confused about the difference between its own
position within the canvas and that of the scroll group. This commit introduces
a per-Item flag, _scroll_translation, which is true by default. If false, the
item will not have coordinates translated to reflect scroll group position.
2022-01-20 09:45:47 -07:00
Paul Davis
95edfbac4a triggerbox: change FollowActions into an object with a target list
Should be no functional changes in this commit, but older sessions will likely not
load.
2022-01-19 15:50:55 -07:00
Robin Gareus
62a098811c
Allow DnDTreeView drag w/o object reference 2022-01-19 17:13:51 +01:00
Paul Davis
dbefba9904 temporal: have tempo map expose it's separate (intrusive) lists of tempo, meter and bbt points 2022-01-18 19:47:20 -07:00
Robin Gareus
4ec70bbaec
Source::natural_position API uses samplepos_t 2022-01-19 03:01:09 +01:00
Ben Loftis
267229c03c ArdourCanvas::Arc (i.e. Circle) should allow for child items to be drawn 2022-01-18 16:42:00 -06:00