Commit Graph

950 Commits

Author SHA1 Message Date
luz paz 364f2f0788 Fix typos in gtk2_ardour/ directory
Found via `codespell -q 3 -S *.po,./share/patchfiles,./libs -L ba,buss,busses,doubleclick,hsi,ontop,ro,seh,siz,sur,te,trough,ue`
2022-01-26 12:35:38 -05: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
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 b72268f6e1
triggerbox: rename sidechain port when track's name chanes
Just like PluginInsert::update_sidechain_name, the name is
implicitly set, using the owning route's name, suffixed with the
[i18n localized] Processor name.

This fixes an issue if a track is renamed and a new track with
the old name is created. This commonly happens during File Import:
For each ImportAsTrack a generic named track (e.g. "Audio") is created
before it is renamed.

Previously this lead to
Failed to register port "Audio 1-trig/midi_in 1", reason is unknown from here
2022-01-04 01:22:34 +01:00
Paul Davis 610125b87c remove call to #ifdef'ed code 2021-12-27 11:24:03 -07:00
Paul Davis 75d5d54cb6 triggerbox: position triggerbox after disk reader, before polarity, by default 2021-12-27 11:20:40 -07:00
Paul Davis d82d8dd7d4 NO-OP: fix spelling mistake 2021-12-27 11:20:40 -07:00
Paul Davis ff89d998b2 triggerbox: steps toward sane trigger stopping API and design 2021-12-22 17:27:26 -07:00
Paul Davis 0fcc873ec5 correctly hide/show/position triggerbox in route processors 2021-12-13 16:24:13 -07:00
Ben Loftis e7569eabe7 Trigger Cues: implement master Stop button (libardour part) 2021-12-13 07:26:47 -06:00
Paul Davis 6326222a48 triggerbox: change APIs so that we can add a triggerbox to either type of track 2021-10-08 13:45:27 -06:00
Robin Gareus 8e5af55ae5
Prevent identical port-names when renaming tracks
Audio ports are sorted using PBD::naturally_less.
PBD::naturally_less is also used as compare function
for port-lists, port-sets, and port-maps.

So in sets and maps, the function is used to test
for uniqueness. This lead to issues since naturally_less
treats whitespace and underscores as identical.

While it was possible to have routes named "Audio_1",
and "Audio 1", this resulted in missing ports for one
of the routes.

see also 60ff3ef764
2021-10-08 04:12:55 +02:00
Robin Gareus 4998b2711b
Amend f301e692a: expose compensated port-latency
Retain min/max when copying inherited latency from
connected ports.

When there is a direct connection port A out -> port B in,
min/max latency range should be retained in direction
of signal flow.

Ardour can only adjust latency in reverse direction of signal flow
to match min = max with an internal delay-line. ie set playback
latency of an input port, or capture latency of an output port.
2021-09-14 21:39:53 +02:00
Robin Gareus f301e692a7
Expose compensated port-latency, fix ambig. latency detection
Previously Ardour only announced processor latency.
Routes that had additional latency to compensate for those
have not published this delay.

This is of no concern with internal backends, however with JACK,
Ardour reported incorrect *individual* port-latencies of
routes that perform PDC.

Since public port latency now includes delay-compensation,
some extra work is required to unset it before recalculating
latency of paths that include external ports.
2021-09-08 22:39:32 +02:00
Paul Davis dcfbdb482d triggerbox: reload sessions containing triggerboxen 2021-08-31 19:03:32 -06:00
Robin Gareus a556e96ed0
Fix latency report for unconnected tracks
When a track's output is not connected, its alignment
can /float/. Previously it assumed the worst (compensate
for worst-case latency).

The track itself has no playback latency, so any send would
delay the 'thru' path to match the send's playback latency.
This resulted in the track reporting a non-zero latency which
is not really present, nor relevant.
2021-08-16 22:33:15 +02:00
Paul Davis 1927e4673b remove StepSequencer, BeatBox and BeatBoxGUI from wscripts and #ifdef code occurences. Files remain 2021-08-13 12:51:36 -06:00
Paul Davis c452dcda53 add access for triggerbox as a well-known (possibly null) processor in a route 2021-08-13 12:51:36 -06:00
Paul Davis a71ba473f7 fix up post-rebase issues after rebase on master 2021-08-13 12:51:34 -06:00
Paul Davis 4a43f5aa0b newly-added InternalReturn processor requires a time domain (post-rebase on master) 2021-08-13 12:51:34 -06:00
Paul Davis 5ea862ccc2 fix several more controls to take a time domain from their owner (Automatable) 2021-08-13 12:51:33 -06:00
Paul Davis df37c62e37 mute controls starts with its stripable's time domain 2021-08-13 12:51:33 -06:00
Paul Davis 495cc1e4bc plugins use their route's automation time domain 2021-08-13 12:51:33 -06:00
Paul Davis cd59f876f7 solo isolate control starts with its route's time domain 2021-08-13 12:51:33 -06:00
Paul Davis a7b011c06b solo safe control starts with its route's time domain 2021-08-13 12:51:32 -06:00
Paul Davis 7c10cf1d54 Automatable now requires (and owns) a time domain to be used by automation data 2021-08-13 12:51:32 -06:00
Paul Davis eae9d276fe libardour: conversion to use timeline types (mega-commit) 2021-08-13 12:51:29 -06:00
Paul Davis b2e3df9fda actually add and position a beatbox processor to midi tracks 2021-08-13 12:51:26 -06:00
Robin Gareus 5c9f5ae895
Prevent DelayLine::set_delay() while processing
It was possible that auto-connect-thread or GUI thread called
DelayLine::set_delay without acquiring the process-lock.
Changing the delay while processing is not supported and
can cause glitches.

backtrace:
```
DelayLine::set_delay
Send::update_delaylines
Send::set_delay_out
InternalReturn::set_playback_offset
Route::update_signal_latency
Session::update_route_latency
Session::update_latency_compensation
Session::auto_connect_thread_run

```
2021-08-03 16:12:25 +03:00
Robin Gareus 90a0f0af89
CUE monitor during record w/preroll 2021-07-02 19:52:59 +02:00
Robin Gareus d8e0a29316
Fix A/B plugins, skip internal but visible plugins (e.g. LAN) 2021-05-19 02:10:33 +02:00
Robin Gareus 5957e14259
Remove unused #include<> (2/2)
PBD::stacktrace() is not used nor needed by default.
It should be used sparingly.
2021-05-05 17:57:16 +02:00
Paul Davis d26d8c91a0 fix per-processor latency to reflect transport direction 2021-04-23 17:38:16 -06:00
Paul Davis 8080a14537 fix Route::latency_preroll() for reverse playback 2021-04-23 17:07:47 -06:00
Robin Gareus 5e01275d0e
Set default master-bus meter-point to output
For master-bus measuring the signal directly at the
output is preferable. This includes the panner, mute,
and loudness gain.
2021-04-08 01:18:09 +02:00
Robin Gareus c1f1cd5b3e
Prepare for foldback bus A/PF Listen 2021-03-24 17:47:53 +01:00
Robin Gareus cc7b8b1bc5
gcc-11 compat, volatile atomic variables (1/2)
"While 'atomic' has a volatile qualifier, this is a historical
artifact and the pointer passed to it should not be volatile."

Furthermore "It is very important that all accesses to a
particular integer or pointer be performed using only this API"
(from https://developer.gnome.org/glib/2.68/glib-Atomic-Operations.html)

Hence initialization of atomic variables is changed to also use
this API, instead of directly initializing the value.

This also fixes a few cases where atomic variables were
accessed directly.

see also libs/pbd/pbd/g_atomic_compat.h
2021-03-22 15:30:07 +01:00
Robin Gareus 7ef4a08b5e
No-OP: remove unused variables 2021-03-17 17:53:43 +01:00
Robin Gareus ace11bd243
Consistency: replace "x-run" with "xrun" (1/2) 2021-02-26 22:22:08 +01:00
Robin Gareus 611fff21ae
NO-OP: remove unused variables 2021-02-25 23:57:33 +01:00
Robin Gareus 4ccad6eae4
Fix pasting processors pre-fader #7416
Previously when using index == 0, a hidden processor
(Recorder or Delayline) would be returned instead of the first
actual processor.
2021-02-25 19:54:12 +01:00
Robin Gareus dfffec9b58
Allow forcing cue-monitoring 2021-02-24 00:20:21 +01:00
Robin Gareus 78c5537639
Use MonitorReturn for Monitor Bus 2021-02-22 01:00:00 +01:00
Robin Gareus 1610b0baae
MonitorSection: fade input in/out for AFL/PFL
This slowly un/mutes the direct monitor signal when listen state
changes.

Listen sends already fade in as well. However un-soloing still
hard-removes the listen send path.
2021-02-22 00:59:57 +01:00
Robin Gareus 4a5b355d3d
Handle JACK latency callbacks in sync with process thread #8304
see also b5e479dfc3
2021-02-20 00:46:47 +01:00
Robin Gareus a62fd0379e
Consolidate monitor-send setup 2020-11-26 23:58:15 +01:00
Robin Gareus 1219271321
Cont'd work on implicit solo restore
This is an update to b90f057e6e, allowing processors
to configure when ports change. Fixes loading old sessions with
variable i/o polarity invert.
2020-10-29 19:55:27 +01:00
Robin Gareus b90f057e6e
Fix restoring implicit solo on session load
When a route's output is connected to multiple busses, re-establishing
port-connections on session-load calls Route::output_change_handler
multiple times.

Implicit solo counts are saved and restored by the route's SoloControl,
however the output_change_handler invalidated it on session load.

Since connections are restored iteratively, counting soloed downstream
routes will yield an incorrect result until all connections are
established.

This fixes the issue that implicit solo is lost on session-reload
in case a route has multiple connections with different up/downstream
solo states.
2020-10-28 22:31:26 +01:00
Robin Gareus 421c52ba7d
Fix bounce and freeze
* Include main-out channel-count when bouncing the output
* Do not de-activate disk-reader and mains-out when freezing a track
* Ignore meter when counting channels
2020-10-24 05:44:29 +02:00
Robin Gareus 2e98c57fb8
Finalize experiment: always propagate solo via sends
See also caf057f06d
2020-10-23 00:24:06 +02:00