Commit graph

34604 commits

Author SHA1 Message Date
Paul Davis
b6f37f11be triggerbox: CAS-based property updating GUI editing
Follow actions are now set by two distinct methods, not one
2022-01-25 18:07:21 -07:00
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
Ben Loftis
3fbfe72fa9 mini-timeline: fix some thinkos in prior commit; rename some variables for readability 2022-01-25 16:21:25 -06:00
Ben Loftis
2fa4eadf8e trigger_ui: cue_isolate deserves a button, not just a menu entry 2022-01-25 07:22:20 -06:00
Robin Gareus
0cf0de8c97
Remove indirection when showing/hiding TAV 2022-01-25 06:27:22 +01:00
Robin Gareus
dd4b4dc00b
Move PluginSetup callback to Editor
This is unrelated to the sidebar route-list and should never
have been in EditorRoutes.
2022-01-25 06:27:21 +01:00
Robin Gareus
28392bdcdb
GUI property "visible" applies only to automation-lanes
Tracks and Busses use PresentationInfo::hidden
2022-01-25 06:27:18 +01:00
Paul Davis
b7769a8f4b possible fix for a valgrind reported illegal read 2022-01-24 16:42:12 -07:00
Robin Gareus
5f3cd26d02
Cleanup at exit, delete duplicate_routes_dialog 2022-01-24 21:25:20 +01: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
4c433106a4 add interview mode to preferences and fix up implementation 2022-01-24 11:29:36 -07: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
b6b9d9231b
Trigger page, slot property layout hacks
The layout should eventually really be simplified.
Use a HBox, remove nested tables, get rid of tables with only
one Frame inside. etc.
2022-01-24 19:28:58 +01:00
Robin Gareus
5b5d8e72f1
Tweak TB layout: same height for all slot-property frames 2022-01-24 18:53:58 +01:00
Robin Gareus
9b224a79d4
Mixbus prefers stereo-tracks when importing files as triggers 2022-01-24 18:52:51 +01: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
dab9f8d226 trigger page: theme the rec-enable button 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
Ben Loftis
9e48633b82 trigger page: trigger cue buttons red when cues are record-enabled 2022-01-23 20:24:44 -06:00
Ben Loftis
e2b9995bb0 trigger_ui: fix typo 2022-01-23 20:24:44 -06:00
Ben Loftis
c72b6fc930 trigger page: slightly differentiate the rows of cues by color 2022-01-23 20:24:44 -06:00
Robin Gareus
92f3681977
minor translation fix -- #8862 2022-01-23 16:27:01 +01: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
Mads Kiilerich
a55ee74c4e i18n: Don't localize "" - that is a special gettext string
Address build warnings:
audio_clock.cc:911: warning: Empty msgid.  It is reserved by GNU gettext:
                             gettext("") returns the header entry with
                             meta information, not the empty string.
audio_clock.cc:912: warning: Empty msgid.  It is reserved by GNU gettext:
                             gettext("") returns the header entry with
                             meta information, not the empty string.
session_dialog.cc:604: warning: Empty msgid.  It is reserved by GNU gettext:
                                gettext("") returns the header entry with
                                meta information, not the empty string.
session_dialog.cc:605: warning: Empty msgid.  It is reserved by GNU gettext:
                                gettext("") returns the header entry with
                                meta information, not the empty string.

Use ("") instead of _("") to try to indicate syntactically that
localization markup intentionally has been left out.
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
Ben Loftis
b3f524a78a Ruler markers: less drastic highlights in ruler bars 2022-01-21 19:25:33 -06:00
Ben Loftis
d6815d7e40 trigger page: rough-in a control for Cue Recording 2022-01-21 17:45:26 -06:00
Ben Loftis
094fbfa132 trigger page: shrink Cue column to minimum (?) 2022-01-21 17:45:26 -06:00
Ben Loftis
b0a2d678dc trigger_ui: implement direct-Jump actions from trigger slots; context-menu and icons 2022-01-21 17:45:26 -06:00
Ben Loftis
8ed6f685cf trigger_ui: remove Jump action from trigger-master (column), seems pointless? 2022-01-21 17:45:26 -06:00
Ben Loftis
f62c4908e0 trigger_ui: implement direct-Jump actions for the slot properties (left&right FA) 2022-01-21 17:45:26 -06:00
Ben Loftis
a23f3aec50 trigger_ui: implement direct Jump actions for Cues (rows) 2022-01-21 17:45:26 -06: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