Commit graph

18615 commits

Author SHA1 Message Date
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
Ben Loftis
9be853d555 triggerbox: initialize the follow_count value as well as barcnt 2022-01-18 16:33:45 -06:00
Ben Loftis
6cdeed8945 triggerbox: first draft: allow gui access to audio-segment meter and barcnt 2022-01-17 18:04:43 -06:00
Robin Gareus
e0f6ef4369
Always use a sidechain input to control triggers
This allows MIDI trigger tacks to distinguish between music-data
and control-data.
2022-01-17 05:03:18 +01:00
Paul Davis
bf9ef3abd3 add comment 2022-01-16 20:34:24 -07:00
Robin Gareus
7e37ae4b17
Do not add TriggerBox Processor to Auditioner 2022-01-17 04:31:25 +01:00
Ben Loftis
3e0bb03363 triggerbox: defensive coding changes 2022-01-16 10:57:07 -06:00
Ben Loftis
869a862c86 triggerbox: use_follow_length should be an explicit property
this allows you to enable/disable the follow-length without starting from 0 every time
2022-01-16 10:57:01 -06:00
Paul Davis
9ee4c14bce generic MIDI: extend menu options to drop ALL MIDI bindings, not just a binding map 2022-01-15 13:15:38 -07:00
Robin Gareus
cb640c7e9c
NO-OP: clang-format (and some manual re-indent) 2022-01-15 04:46:58 +01:00
Robin Gareus
21c22cc850
Add API to render a Icon with a text caption 2022-01-15 04:46:55 +01:00
Paul Davis
f339c0b5f9 triggerbox: remove "use follow action" as an explicit property of a trigger 2022-01-14 17:39:27 -07:00
Robin Gareus
670e1f9025
NO-OP: clarify variable name (1/2) 2022-01-15 00:06:26 +01:00
Robin Gareus
76facc0b13
Unconditionally create Triggerbox for each Track
This addresses and issue when loading old sessions or creating
tracks from [old] templates.
2022-01-14 22:46:50 +01:00
Robin Gareus
0c4769cb3f
Fix compilation when including polarity_processor.h directly 2022-01-14 22:46:50 +01:00
Paul Davis
de9322e0d3 triggerbox: cleanup some DEBUG_TRACE statements and convert some debug output to trace statements 2022-01-14 14:39:16 -07:00
Paul Davis
6a6a42c272 triggerbox: another important tweak for trigger behavior
This fixes another code point where we realize that there is nothing to do
within a triggerbox, but we failed to reset _stop_all to false, causing
misbehavior until the next trigger plays to completion with no subsequent
trigger.
2022-01-14 14:37:53 -07:00
Paul Davis
8e9c4f6a67 triggerbox: fixes to get follow length to do what is intended to do
Hard to explain more concisely than the code changes, so please read.
2022-01-14 14:36:38 -07:00