13
0
Commit Graph

30329 Commits

Author SHA1 Message Date
38c61b6dab fix design and implementation of (GUI) transport controllables to make them usable with MIDI CC control
The old code meant that their current value was always zero, and that they would do nothing unless
the new value exceeded 0.5
2020-04-26 23:00:12 -06:00
1983f56592
Work around jack2's insane thread semantics
jack2 can process in parallel with calling a graph-order or
latency-callback, so Ardour takes a lock to update those in sync.

Yet jack2 can also block while port-registrations happen,
and concurrently emit latency-callback from another thread..
2020-04-27 04:10:18 +02:00
b0daa85bfb
Prevent race between adding ports and IO port-lookup 2020-04-26 22:17:18 +02:00
31c39ed869
Remove duplicate i/o latency calculation
Port and connection changes always imply a latency_callback from
the engine. Worst I/O latency is updated directly in
Session::update_latency() which is called from
AudioEngine::latency_callback.

Explicit subscriptions to route->output()->changed() is not needed
to update the worst I/O latency.

Only set_block_size() needs to to update the I/O latency when
the buffer-size changes.
2020-04-26 21:34:26 +02:00
842e841e0d
Remove common prefix for latency debugging
-DLatency now triggers all four:
  * LatencyCompensation (entry-points, overall flow)
  * LatencyIO (Port/IO query, set/get private/public)
  * LatencyDelayLine (Delaylines for internal sends and alignment)
  * LatencyRoute (route processor latency)
2020-04-26 21:25:07 +02:00
de819e579a
Fix a deadlock (process_lock vs _update_latency_lock)
The backend may call update_latency() while at the same time
the auto-connect-port calls set_worst_io_latencies().

The latter already holds the process-lock, so update_latency()
first needs to acquire it, as well. If one already holds the
_update_latency_lock, one must not ask for the process-lock.

---

Previously Ardour's connection manager first took the process_lock
and then waited to the _update_latency_lock.
Meanwhile jack calls latency_callback(), takes the
_update_latency_lock and waits for the process_lock.
Classic deadlock.
2020-04-26 20:25:31 +02:00
Edgar Aichinger
68799805aa
Update German translation 2020-04-26 14:09:55 +02:00
3785cbbf03
Cont'd work on delayline-config (amend b196cef2) 2020-04-26 05:55:43 +02:00
0067a4596d
Speed up loading sessions with synths
LV2 plugins may add a MIDNAM file when they're loaded.
This can be happen concurrently with the MidiPatchManager,
loading the system-wide patch files.

Session load should not be interrupted by the initial
background scan of patch files, which can take a very long time.
We need to allow update_custom_midnam() to grab the _lock.
2020-04-26 04:55:59 +02:00
8399abd277
Fix translatable strings and translations (so far)
The typos in the original English were reported by Edgar
Aichinger while working on the German translation.
2020-04-26 03:19:22 +02:00
e97ea38108 update gtk2_ardour czech translations (Pavel Frich) 2020-04-25 10:39:29 -06:00
Nils Philippsen
845d7d3a3b Recognize dist, distcheck better to set app name
Previously, `dist` had to be the first argument to waf. If it came in a
different position (e.g. `APPNAME=Ardour ./waf tarball dist`) or
`distcheck` was used instead of `dist`, the resulting archive was named
`noname-....tar.bz2`.

Signed-off-by: Nils Philippsen <nils@tiptoe.de>
2020-04-25 10:39:29 -06:00
02e5605cdd
NO-OP: reduce scope, return early 2020-04-25 18:24:42 +02:00
b9c29c478c
Remove unused signal 2020-04-25 17:53:49 +02:00
b196cef2c4
Prevent delay-line reconfiguration while processing
Various backends have different strategies for updating latencies,
and different thread semantics for latency update callbacks.

With jack2 it is possible that processing happens concurrently
while port latencies are being changed.

Ardour internal backends emit the latency callback from the
main process thread, serializing latency changes with processing.

Various user actions can also trigger latency changes. e.g.
with a stopped engine it is possible to re-order plugins.
2020-04-25 17:52:54 +02:00
7751841b78
Allow to un/link panner directly from the panner #8024
When editing a sends, this allows to unlink send panner via
the panner's context menu.

NB. After 6.0-rc string freeze the context menu needs an update.
So far the text from the Processor Box context menu is reused.
2020-04-25 16:26:37 +02:00
e16ac09e54
Clean up 135814cf0, prefer PannableChanged signal
This allows to also catch cases when a panner-ui directly changes
set_linked_to_route() of the panner shell.
2020-04-25 16:26:37 +02:00
Nil Geisweiller
ba31151c42 Redisplay list editor when the region is moved or resize
Using connection list to not overwrite the previous connection
2020-04-25 09:40:56 +03:00
Nil Geisweiller
95b00315c0 Fix midi editor to only display notes within temporal visible region 2020-04-25 09:40:56 +03:00
6c9b03e2a3
Lua Dialog, fill window with single widget
This is particularly helpful with a file-selector (e.g. mixer
ccreenshot Script)
2020-04-25 05:33:16 +02:00
18228edd54 use ardour button rather than gtk::button in transport master widget 2020-04-24 15:54:29 -06:00
b1d5e8611f carefully position floating text entry when editing transport master names 2020-04-24 15:54:15 -06:00
afc8dd9022 fix thinko in Session::should_ignore_transport_request() and drop out of external sync if command is allowed
The semantics are that if the user configures things to allow transport commands while
using a transport master, issuing such commands first stops using the master
2020-04-24 14:22:06 -06:00
58304b3a7e make Session::should_ignore_transport_request() non-const 2020-04-24 14:20:59 -06:00
75b9689f0c only update port lists when a TransportMastersWidget is actually mapped
The overhead of rebuilding for every port registration and unregistration was absurd
2020-04-24 12:00:02 -06:00
12b48fff76 fix parentheses around expression that prevented port flags from being set for ltc slave 2020-04-24 11:51:45 -06:00
e6b12bd0aa ensure that when a Session emits Port::PortDrop, transport master ports are left in place 2020-04-24 11:50:43 -06:00
afcc95167e fix copy-paste error that prevent transport master request mask from being set correctly 2020-04-24 07:44:41 -06:00
961562b594 remove tools superceded by list_scripts.lua 2020-04-24 07:23:44 -06:00
9ce0fa3daf fix search for include scripts in grep expression 2020-04-24 07:23:44 -06:00
Luciano Iam
847eb93784 WebSockets: correct comment in mixer-demo/main.js 2020-04-24 13:23:32 +02:00
Luciano Iam
f983dfe6a7 WebSockets: workaround for index page on Windows
Avoid 404s when following surface links while the issue in https://github.com/Ardour/ardour/pull/491 is better investigated
2020-04-24 12:39:06 +02:00
ea8d1d09d4
Fix MacOS builds (API change in 705ac7bfc5) 2020-04-24 07:06:40 +02:00
5c127f35b1
Add a Lua script to map MIDI events for the AVL Drumkits 2020-04-24 06:52:01 +02:00
7d33c1688b
Lua script-list: consolidate whitespace in description 2020-04-24 06:05:22 +02:00
f72b05d3a5
Update Lua script descriptions, rename some scripts 2020-04-24 05:47:02 +02:00
fcf4e3e9eb
Add script to list Lua scripts for a html news page. 2020-04-24 05:16:44 +02:00
Fred Rech
f1ec998653
Revise French translation, part 5 -- #8035 2020-04-24 03:52:26 +02:00
2d50c3f907
Update key-bindings for all Lua action scripts #8034 2020-04-24 02:31:30 +02:00
dbcbfd7b5b
Fix builds, missing include 2020-04-24 01:53:59 +02:00
2aa5e90290
Update Russian translation 2020-04-24 01:06:16 +02:00
777f1ea3be
Indicate unlinked send-panners in pan-widget #8024 2020-04-24 00:57:15 +02:00
37e6a701bd
Define color for send panner 2020-04-24 00:57:15 +02:00
42b4ea89f4
Use send-API for pan-link, indicate status in tooltip and name 2020-04-24 00:57:15 +02:00
135814cf0d
Expose pan-link via Send API, emit signal on change 2020-04-24 00:57:15 +02:00
0719df9d21 two small scripts to facilitate generating an annotated list of Lua scripts 2020-04-23 16:55:23 -06:00
e15b5c6e6b
Clean up Audition realtime_overwrite
Auditioner seek calls are explicitly handled by the butler,
and DR:overwrite_existing_buffers() is called explicitly
to read MIDI data for audition.

Session::non_realtime_overwrite is no longer required.

This reverts commit 6fbcf83779
and parts of 2d11667ce3.
2020-04-23 17:08:09 +02:00
24ed3c5a9e minor code reworking for 46fca9062d (no semantic changes) 2020-04-23 09:05:18 -06:00
Mister Benjamin
46fca9062d Honour forward/rewind option when already rolling #8031
The options ForwardSlow, Forward and ForwardFast and their
respective Rewind options were not honoured in the execution
of forward/rewind operations when the transport was already
rolling at a slower speed than the forward or rewind option's
speed with same direction as the requested direction.
2020-04-23 08:19:20 -06:00
54bc1018d5
Fix MIDI auditioning
The Auditioner is not part of the session route-list and the
auditioner route's I/O latency is never updated.
Session::process_audition() does not handle pre-roll either,
so it need to be zeroed, otherwise Route::roll skips samples.

This has lead to initial samples being skipped, IFF the
auditioner's output-port had non-zero latency.

Since private port-latencies are usually only set for routes
in the route-list, and _remaining_latency_preroll is reset
at transport-stop, this *usually* worked...

Last but not least, MIDI notes need to be resolved when seeking.
2020-04-23 05:23:31 +02:00