Commit Graph

30083 Commits

Author SHA1 Message Date
Paul Davis
376d4f2e68 LocateRoll session events should always roll-after locate
Don't rely on ev->locate_transport_disposition
2020-05-12 11:34:37 -06:00
Paul Davis
c2e774e99d trivial reorder of variable assigment 2020-05-12 11:34:37 -06:00
Paul Davis
27e45e9336 Don't bother even checking let alone doing internal seeks for zero distances 2020-05-12 11:34:37 -06:00
Paul Davis
98a3a96d40 use more standard mechanism for "squishing" start of audio read into loop range 2020-05-12 11:34:37 -06:00
Paul Davis
7138e76d2d new mechanism to refill pre-loop buffer when loop changes (used for xfading loop ends) 2020-05-12 11:34:37 -06:00
Paul Davis
6a542fe5fe Use better method call to determine rolling status when loop is changed 2020-05-12 11:34:37 -06:00
Paul Davis
2debf52ef1 remove unused variable 2020-05-12 11:34:37 -06:00
Paul Davis
5a7b7b3bfb remove Route::reload_loop() and derivatives
Replacement to follow in subsequent commit
2020-05-12 11:34:37 -06:00
Paul Davis
6433647268 use const; style guide (no spaces around conditional parenthesis) 2020-05-12 11:34:37 -06:00
Paul Davis
da9b366e63 NO-OP: style guide issues (always use braces; no spaces around conditional parenthesis) 2020-05-12 11:34:37 -06:00
Robin Gareus
6f6d26d0ef Fix spacing of engine-delta display 2020-05-12 19:32:27 +02:00
Robin Gareus
9908419f89 Use byte-offset when reading size at ringbuffer boundary
This likely fixes https://github.com/sfztools/sfizz/issues/221
2020-05-12 19:30:15 +02:00
Robin Gareus
ab6e274613 Ignore idempotent set_name() calls
These calls are expensive, particularly for ArdourButton, that
triggers a re-layout.
2020-05-12 15:37:23 +02:00
Robin Gareus
7b2b2401a3 Optimize AudioClock info-text rendering
Avoid markup, pango markup parsing is expensive, particularly
for info strings which may be updated periodically at
short time intervals.
2020-05-12 15:08:39 +02:00
Robin Gareus
fb203f3df8 Consolidate delta-string format, avoid markup 2020-05-12 14:59:44 +02:00
Robin Gareus
b36e6b8341 Optimize drawing of buttons with changing text
When a button has a fixed size, there's no need to call queue_resize().
This fixes an issue with the ArdourClock info displays when slaved.
The Timecode and Delta display text changes in small intervals and
caused excessive CPU load due to GUI size-requests + redraws.
2020-05-12 13:22:11 +02:00
Robin Gareus
58a5e256a9 GNU libc 2.31 compatibility part two
This fixes underlinking against -lm and reverts the
prior workaround 83cd796a47.
2020-05-12 12:23:26 +02:00
Robin Gareus
ba1a60873a Fix MTC delta report
This amends a6ffc6213b.
apply the offset before the DLL.
2020-05-12 01:49:45 +02:00
Robin Gareus
feaf87d200 Dummy Backend: remove hardcoded MTC sequence 2020-05-12 01:49:45 +02:00
Robin Gareus
7c15ad099f Dummy Backend: add a MTC generator 2020-05-12 01:49:41 +02:00
Ben Loftis
20c09ccfc3 Transport Masters dialog: don't use an uninitialized char array. 2020-05-11 18:37:12 -05:00
Ben Loftis
26dbd30ae6 Transport Masters dialog: various layout changes to improve legibility
Use Fonts and Color to help discriminate columns:
Values that come from the TC Master are now in black boxen (ToDo: use gtk theming)

Reduce the number of columns, to improve legibility:
Consolidate the Slave's current TC chase value and Delta (offset from Ardour current TC)
Consolidate the last message received, and how recently it was received
Remove Collect checkboxes (just disconnect the port if you don't want it to run)
2020-05-11 15:37:40 -05:00
Ben Loftis
80abcc8b2d Transport Masters dialog: use delta symbol in all delta_strings (libardour tweak) 2020-05-11 15:37:40 -05:00
Ben Loftis
7581ec5ac5 Transport Masters dialog: fix typo 2020-05-11 15:37:36 -05:00
Robin Gareus
88fc77b4c0 Double dummy MTC sequence duration 2020-05-11 21:35:22 +02:00
Robin Gareus
5e2755baa1 Slave delta display tweaks
* use left-aligned sign symbol with "sample" unit.
  When the delta value jitters in decimal places (e.g. MTC)
  it's otherwise no possible to discern + vs -.
* Use white text by default (not green)
2020-05-11 21:34:01 +02:00
Robin Gareus
44d87f2cd7 TMM GUI: display delta time from all slaves 2020-05-11 18:37:16 +02:00
Robin Gareus
58c5f75fc9 Fix TCM requiring port-reconnect when engine restarts
An engine restart sends dis-connect messages for the reverse
port-mapping (after making the connection):

Connect: system:midi_capture_41a56f90 -> ardour:MTC in
Connect: system:capture_1 -> ardour:LTC in
DisConnect: ardour:MTC in -> system:midi_capture_41a56f90
DisConnect: ardour:LTC in -> system:capture_1

This lead to TransportMaster being marked as inactive.
This is likely an issue that should be fixed elsewhere, but in
case of JACK, we likely do not have control over this.
2020-05-11 03:42:21 +02:00
Robin Gareus
a6ffc6213b Fix MTC latency compensation
Offset the detected timecode instead of the detection time.
The latter is used by the DLL and later also used to calculate
delta times which lead to a constant offset.
2020-05-11 02:04:40 +02:00
Robin Gareus
f69a395893 Fix MTC slave port latency 2020-05-11 00:37:32 +02:00
Robin Gareus
4ff6fbe6b8 ALSA: Use same period for in+out #8075
Since the input is never flushed, capture latency is still
only one cycle.
2020-05-10 22:28:40 +02:00
Robin Gareus
e9401934c1 LTC: sync-lock is only relevant when clock is synced 2020-05-10 22:28:37 +02:00
Johannes Mueller
bff9c9a5a1 Work around a race condition
This covers a race condition in session transport that when synced to an
external engine it sometimes occurs that at the end of ::realtime_stop()
::transport_stopped_or_stopping() returns false when ::setup_rec_box() is
called. In this case the rec boxes are not erased when the recoding transport
is stopped.

This fixes this behavior about the remaining rec boxes, however the race
condition remains.

The race condition is reported in #8104. It should be considered reverting this
commit once the race condition is fixed.
2020-05-10 14:53:38 +02:00
Robin Gareus
52ae134efb Fix initial sync to external time source
TransportMasterStart needs to be set when this cycle's delta
can reach _remaining_latency_preroll.

This allows to directly catch the master-position and start
rolling without initial vari-speed.
2020-05-09 23:43:04 +02:00
Robin Gareus
34fd8b5356 Bundle script to send raw MIDI to a given port 2020-05-09 23:43:04 +02:00
Paul Davis
e3ea4a4a81 MIDI binding map for Nektar Panorama
This apparently needs several sysex files delivered to the device,
so may not be particularly useful
2020-05-09 11:43:39 -06:00
Robin Gareus
3ca33c07dc Update LTC reader port latency on connection change
This mechanism adds infrastructure that can later also be used
for MTC and MIDIClock.

PS. The LTC Generator port's latency is queried after the port
is created, and later kept in sync via LatencyUpdated signal.
2020-05-09 05:10:04 +02:00
Robin Gareus
a46091b86a Fix subtle bug breaking vari-speed (from d9caa7fd9a) 2020-05-09 02:20:15 +02:00
Robin Gareus
abe23b5885 ALSA backend: ignore idempotent latency settings 2020-05-09 01:22:18 +02:00
Robin Gareus
dffe780d95 Engine-dialog: latency spinbox sensitivity
This allows to change latency while running using numeric entry
or otherwise makes the spinboxes insensitive.
2020-05-09 01:19:03 +02:00
Robin Gareus
fe8df2eeae Remember I/O ports used for latency measurement 2020-05-09 00:55:40 +02:00
Robin Gareus
ace8a0d7b9 LTC Generator: prefer LatencyUpdated signal 2020-05-09 00:34:15 +02:00
Robin Gareus
ecd55f9fec LTC Slave: subscribe to LatencyUpdated signal
This uses a recently introduce Signal instead of the generic
GraphReordered, which was used in the past since it usually
happened after the latency was changed.
2020-05-08 23:51:40 +02:00
Robin Gareus
a2094d97ad NO-OP: clang-format/whitespace 2020-05-08 23:30:04 +02:00
Robin Gareus
21f2c01fcd Fix aux-send solo propagation
* Do not allow new send to change implicit solo (no propagation)
* Propagate changes to due aux-send removal upstream
  to tracks or busses connected to the source route.
* Forward solo-isolate
2020-05-08 14:59:44 +02:00
Robin Gareus
caf057f06d Experiment: propagate solo-state with internal-sends
So far internal-sends were explicitly special-cased, and implicit
solo-state only was only forwarded for direct up/down-stream
connections.  ...and nobody can remember why :)

This restriction is removed, so far mainly with commenting-out
code, as experiment.

Internal sends are not only more convenient, but also required
in cases where direct connections result in ambiguous latency.
2020-05-08 06:35:08 +02:00
Robin Gareus
3f6764f276 Fix 6afcb350c5, internal backends don't report externally_connected() 2020-05-08 04:01:24 +02:00
Len Ovens
cc5e9631eb Spelling mistake 2020-05-07 18:38:42 -07:00
Robin Gareus
d91189ffe5 Consistent GPL boilerplate 2020-05-08 03:19:17 +02:00
Robin Gareus
10df041421 Fix LTC generator alignment
When rolling forward the LTC generator needs to send future
a timestamp, so that when it matches the current time when
the signal arrives at the output port.

(A6 aligns transport playhead to output)
2020-05-08 03:17:28 +02:00