Commit Graph

16280 Commits

Author SHA1 Message Date
Robin Gareus
c03f3d81a6 Allow Lua DSP scripts to override strict-i/o
This is handy for 1in, 2out plugins or 2in, 1in out (and multiples
thereof).
2020-07-13 00:52:59 +02:00
Ben Loftis
472e8a0d7b When copying a Range of MIDI, special-case the midi start+end in beats. This will likely get cleaner after nutempo. 2020-07-12 11:18:22 -05:00
Robin Gareus
f89ef872dd Increase a-fluidsynth polyphony 2020-07-12 06:33:34 +02:00
Robin Gareus
9d390f38bf Cache MIDI generator port latency
This reduces excessive, expensive calls to get_connected_latency_range()
2020-07-12 01:50:01 +02:00
Robin Gareus
ce47898639 Queue latency updates for initial connection
This may fix an issue with latency not being set correctly
on initial session-load (more common with Mixbus/JACK).
2020-07-12 01:48:45 +02:00
Robin Gareus
1796ee60b2 Clean up b5e479df and expose API to queue latency-updates 2020-07-12 00:38:56 +02:00
Robin Gareus
b5e479dfc3 Handle JACK latency callbacks in sync with process thread #8304
This is only relevant with JACK, where different implementations
use threads for the latency callback.

With jack 2, jack_port_register() blocks and the jack_latency_callback
arrives in a different thread: https://pastebin.com/mitGBwpq
with jack 1 the callback arrives in sync

In either case this usually happens while
_adding_routes_in_progress == true and Ardour holds the process-lock,
because jack2 can process in parallel with reconfiguring latency

See also 1983f56592
2020-07-12 00:15:26 +02:00
Robin Gareus
97025cf5a3 Improve debug message (tracking down JACK latency updates) 2020-07-11 23:38:44 +02:00
Robin Gareus
156c1e354a Fix recursive locks when removing procs with a sidechain - #8301
When removing a plugin-insert that has a sidechain on a bus
that is implicitly soloed the following happens:

 * Route::remove_processor() takes a  WriterLock(_processor_lock)
 * The sidechain input is disconnected
 * Route::sidechain_change_handler() is called which calls
 * Route::input_change_handler()
 * Since the route is implicitly soloed, propagation is attempted
   which calls
 * Route::direct_feeds_according_to_reality()
   which takes ReaderLock(_processor_lock)

Recursive locks, reader-lock after writer-lock don't cause
a deadlock, releasing the reader-lock effectively also
releases the writer-lock...
2020-07-11 22:10:43 +02:00
Robin Gareus
edfca68494 Auto write-activate automation in latch mode
This allows to use of control-surfaces without touch-sensitivity
or mouse-wheel to write automation on demand (until transport stop).
2020-07-09 22:33:09 +02:00
Robin Gareus
ce8846d13f Fix polygon redrawing -- #8148
Polygons used PolyLine::render() to render the path.
However since 7bb8ca1e76, the PolyLine path is constrained
(for automation lanes), and closed shaped polygons were not
always completely redrawn.
2020-07-09 02:10:28 +02:00
Robin Gareus
4d76388b8d Remove no-inplace check from rt-context
This may fix a crash due to concurrency when _in_map changes
while the plugin runs and calls ::check_inplace()
2020-07-08 22:49:50 +02:00
Robin Gareus
308d138144 Fix audible blibs due to inconsistent monitor state -- #8275
It is possible that Route::monitoring_state() returns
  (MonitoringDisk | MonitorSilence)

This lead to various cases where there were is a direct comparison
(ms == MonitoringDisk). DiskReader::run tests for MonitoringDisk
to check if the buffer needs to be zeroed while locating.

Likewise Route::process_output_buffers() also explicitly tests
for both MonitoringDisk and MonitoringDisk.

The issue was likely introduced in fbe8075117 (although
it may have been possible in earlier version when using hardware
monitoring as well).
2020-07-07 18:53:36 +02:00
Vincenzo Reale
2379b2a5cf Italian translation update 2020-07-06 20:28:02 +02:00
Paul Davis
06b71a50a1 Revert "clear PostTransportStop from post_transport_work immediately after Session::non_realtime_stop() has finished its work"
This reverts commit 132aae385a.

This commit was not properly thought out, and may not even have addressed a real problem.
2020-07-06 11:33:53 -06:00
Paul Davis
132aae385a clear PostTransportStop from post_transport_work immediately after Session::non_realtime_stop() has finished its work 2020-07-05 17:48:16 -06:00
Paul Davis
c1226eca73 add more info to DEBUG_TRACE output 2020-07-05 17:48:16 -06:00
Ben Loftis
0c7895298d Add Dotted option to a-delay, because dotted intervals cannot be expressed via the integer Divisor param 2020-07-05 15:24:38 -05:00
Edgar Aichinger
e35aaf5c28 update german translation 2020-07-01 15:47:52 +02:00
Robin Gareus
7fa7df0111 Remove unused variable
SoftwareMonitoring is handled by AudioTrack::get_input_monitoring_state
2020-06-30 23:25:41 +02:00
Robin Gareus
a3e30f72f0 Fix copy/paste mistake 2020-06-30 17:01:25 +02:00
Robin Gareus
1ecaffa642 Expose some more theme options to LV2 plugin UIs 2020-06-30 16:45:14 +02:00
Robin Gareus
92f54b3e98 Add API to query if systemic latency can be measured 2020-06-30 03:34:26 +02:00
Robin Gareus
a0bdf87720 Fix potential deadlock when adding sidechain port
Previously add_remove_sidechain() released the process-lock
(to create the I/O ports), while keeping a processor writer-lock.

Meanwhile the auto-connect thread may be woken up to perform
a latency update. This thread takes the process-lock and
then stalls, waiting for a processor reader-lock.

Then add_remove_sidechain() continues and tries to re-acquire
the process-lock.
2020-06-26 17:46:57 +02:00
Robin Gareus
fbcb0b6443 Add method to reset plugin statsistics 2020-06-26 13:01:45 +02:00
Robin Gareus
a006b8c412 Fix time_t <> long int ambiguity, 32bit builds
See 7cf68eaf72 for a detailed explanation.
2020-06-25 20:14:17 +02:00
Robin Gareus
7f5b3b9e33 Thin recent plugin stats, don't stats accumulate forever 2020-06-25 06:43:41 +02:00
Robin Gareus
148ca92518 Emit Signal when plugin-stats change 2020-06-25 04:59:00 +02:00
Robin Gareus
85034d0bca Pass through DnDTV signal_drag_motion event 2020-06-25 02:24:02 +02:00
Robin Gareus
6d83e47860 Fix Plugin-preset saving when preset exists
Previously the GUI explicitly called remove_preset() before
saving a plugin-preset. This functionality is now moved
into the backend.

This fixes a case when a user tries to save/replace factory presets
and works around https://github.com/lv2/lilv/issues/37
2020-06-24 23:59:09 +02:00
Len Ovens
4717f7806d issue 8186 strip controls reset then show on select
Causes motor controls to jiggle on all strips
	when select changes. Fixed
2020-06-23 20:25:49 -07:00
Robin Gareus
2685728f59 Start collecting plugin stats and recently used plugins 2020-06-24 04:02:17 +02:00
Robin Gareus
40aac796e9 NO-OP: Plugin Tag/Status indent and const'ness 2020-06-24 03:24:54 +02:00
Porrumentzio
2ca1f55d6b Updated and reworked Basque translation 2020-06-23 22:09:07 +02:00
Robin Gareus
91013a114b Fix some compiler warning, -Wsign-compare
This also partially reverts 76c7e87c02.
2020-06-23 22:05:40 +02:00
Olivier Humbert
49352d0732 Fix an issue (reported by waf i18n_pot) in cs.po 2020-06-23 21:30:10 +02:00
Nikolaus Gullotta
76c7e87c02 Make Session::session_name_is_legal less magical 2020-06-23 14:27:42 -05:00
Robin Gareus
c313b006cf LV2: keep track of supported properties
Register all plugin props that we may be interested in
to _property_values, and later intercept all messages for
registered properties (not just atom_Path).
2020-06-23 20:48:50 +02:00
Nikolaus Gullotta
cf0f1fd6c3 Fix undefined behaviour in Session::session_name_is_legal
The for loop was checking out of bound indicies causing some perfectly
legal session names to be identified as illegal
2020-06-23 13:33:51 -05:00
Len Ovens
32aa290578 issue 8243 select gets feedback past selected strips
make sure to drop old references when route is changed
2020-06-23 09:03:19 -07:00
Len Ovens
399192da4c OSC add width feedback to strips
Also detect panner type change
2020-06-22 23:29:11 -07:00
Robin Gareus
452607711b Invalidate LV2 state on any property change
This amends 417c780d4, LV2 property changes to intercept messages
from custom UIs
2020-06-22 18:52:44 +02:00
Robin Gareus
417c780d44 Mark session as modified when LV2 properties are changed 2020-06-21 17:37:00 +02:00
Robin Gareus
1674261f89 On plugin internal-state change, mark preset as modified 2020-06-21 17:36:01 +02:00
Robin Gareus
ff8a6dd328 Fix mismatching parenthesis in translatable string 2020-06-21 16:59:28 +02:00
John Emmas
8cea355906 Moving Controllable::set_interface() into a 'cc' file makes it easier to fix our MSVC build issue (with min + max) 2020-06-20 09:38:00 +01:00
Ben Loftis
203e20a8df On solo_section ('A' key), invalidate playlist when we stop. Fixes #8253 2020-06-19 17:11:40 -05:00
Paul Davis
4053e8cb76 update german translation 2020-06-19 12:12:43 -06:00
Paul Davis
71f088dbbd move virtual method requiring std::min from header into .cc
The method is virtual so it could never have been inlined anyway
2020-06-18 16:26:44 -06:00
Paul Davis
0d8fac079d The presence of "using std::***" in any header file is not acceptable. Do not revert or change this.
Revert "Partially revert commit #23feb0491e"

This reverts commit 3b5546cfce.
2020-06-18 16:19:18 -06:00