13
0
Commit Graph

18090 Commits

Author SHA1 Message Date
4bbfc60126 add 2 new canvas debug bits 2021-09-10 12:15:24 -06:00
eb0498bb28
Overhaul ambiguous latency detection
Simply comparing connected latency min/max is insufficient
and allows for false positives.

get_connected_latency_range() reports private, uncompensated
latency for internal ports. In this case an additional test
is required to match it against the reported latency of
connected ports.

Since 13b8a9727bb05 remote connected ports now correctly
report latency for both internal as well as external ports.
2021-09-08 22:39:32 +02:00
6199d08f71
Add API to report I/O Latency 2021-09-08 22:39:32 +02:00
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
c342e4bfa9
Add API to announce managed MIDI port latency
Since Ardour implements jack latency callback, Arodur
is responsible to the set latency of those ports.
2021-09-08 22:39:32 +02:00
1978d3723e
Fix latency debug messages 2021-09-08 22:39:31 +02:00
Hector Martin
d4b0090850
Cache the absence of ffmpeg_harvid
Without this, absence of the transcode tool causes it to be searched for
for every entry in the file picker.
2021-09-07 04:33:07 +02:00
50b01732fd midi buffer handling: fix some logic errors in dealing with MidiRingBuffer reads 2021-09-06 13:55:26 -06:00
7932c9bde1 triggerbox: more behavioral improvements 2021-09-05 10:40:58 -06:00
c2abde9199 triggerbox: closing in on a one-at-a-time design 2021-09-04 23:20:08 -06:00
2cd88a67f1 triggerbox: start redesign based on only 1 trigger running at a time 2021-09-04 23:20:08 -06:00
e057088195 remove unused, empty glib event source/callback code (was from an experiment during nutempo2 development) 2021-09-04 07:39:27 -06:00
John Emmas
dda7612479 A few visibility changes needed for linking to libpbd (when building with MSVC) 2021-09-04 12:35:44 +01:00
John Emmas
f6ed73986b A few visibility changes needed for linking to libtemporal (when building with MSVC) 2021-09-04 12:28:15 +01:00
John Emmas
d7d966e02b Adapt 'Temporal::TempoMap::tempo_map_p' to be buildable with MSVC
Whenever a variable gets declared using 'thread_local' MSVC requires that it should not be compiled with DLL linkage (i.e. it mustn't be exportable). So for Temporal::TempoMap we'll need to export the required members individually, rather than exporting the entire class.
2021-09-03 10:02:41 +01:00
c74f80caa4
NO-OP: clean up maths, remove extra brackets
This may also help due to huge xdelta numbers.
2021-09-02 20:45:30 +02:00
8087bad9a0 triggerbox: create regions and sources using factories, and restore region in set_state() 2021-08-31 22:35:14 -06:00
7dba843cb4 temporal: fix error in operator>> for BBT_offset 2021-08-31 22:33:33 -06:00
dcfbdb482d triggerbox: reload sessions containing triggerboxen 2021-08-31 19:03:32 -06:00
af8be5e71d triggerbox: restore state initial implementation (incomplete) 2021-08-31 18:36:16 -06:00
a9d4668dee triggerbox: state saving 2021-08-31 16:46:19 -06:00
b46eaebb76 triggerbox: add enums to libardour enum decls 2021-08-31 16:46:14 -06:00
4eda53c8c9 temporal: add to_string() converters for BBT_Offset 2021-08-31 16:45:44 -06:00
51110a92d9 canvas: fix computation of Box bounding box 2021-08-31 13:21:12 -06:00
584e5c5b45 triggerbox: various improvements, including legato support, state tracking 2021-08-31 11:53:24 -06:00
3734277263 canvas: improve box packing - compute child dimensions more correctly 2021-08-30 17:40:06 -06:00
b47fbc91e0 canvas: provide Rect::shrink () with four arguments 2021-08-30 17:39:39 -06:00
2aa313eb4e triggerbox: actually fully stop trigger when explicitly requested, rather than use follow action 2021-08-30 16:32:02 -06:00
13a0f74ce4 triggerbox: add more debugging 2021-08-30 16:31:35 -06:00
940f3022c1 prevent addition of events to a ControlList whose time-domain does not match the ControlList's own time-domain 2021-08-30 15:15:14 -06:00
4fb3e24bd6 evoral: tentative fix for problems with Curve::multipoint_eval()
Now that we use superclock_t for audio time, it is possible for the square of an audio time value to overflow int64_t quite easily.
This change fixes that (and cleans up other code a little), but probably a different solution would be a good idea
2021-08-30 14:29:11 -06:00
25093af986 triggerbox: fix uninitialized variable 2021-08-30 09:13:48 -06:00
0699449f29 evoral: debugging curve errors 2021-08-30 09:04:27 -06:00
4cef8c681c evoral: fix for Curve coefficient computation 2021-08-30 09:04:27 -06:00
Nil Geisweiller
21c94b23f3 Make BBT_Time::print_padded const
As this method does not modify BBT_Time it can be const.  This allows such
method to be called over a const BBT_Time instance.
2021-08-30 02:24:38 +03:00
John Emmas
2de2ab8f91 Use std::vector<Sample*> rather than a simple array
(for a simple stack-based array, MSVC requires that the size should be known at compile time)
2021-08-29 15:40:59 +01:00
John Emmas
d3cd621f7a Initial changes needed for building libtemporal with MSVC
Later I'll need to push some extra changes (to support 'tempo_map_p' and 'boost::intrusive::list' etc) but these initial ones (hopefully!) won't cause any issues for the other builds.
2021-08-29 11:03:58 +01:00
cd792f3713 avoid intermediate unnecessary shared_ptr 2021-08-27 17:25:51 -06:00
fad71ce748 when creating new MIDI sources, be sure that we create a stub file on disk
These files will be removed at session close if they are still empty. Their existence prevents
collisions across snapshots and likely some other wierdness that relied on file existence for
various tests and conditions
2021-08-27 16:52:53 -06:00
eb0f353716
Session-cleanup: clear route references from graph
resort_routes() is a no-op during session destruction,
however _current_route_graph can still hold references
to routes. A GraphVertex is-a boost::shared_ptr<Route>.
2021-08-27 06:42:56 +02:00
8c7f2c93f0
VST3: Ignore .vst3 dll in bundle of wrong architecture 2021-08-24 21:58:02 +02:00
fee4292bde allow negative superclock -> negative beats computation 2021-08-23 11:36:54 -06:00
1e84f217ac
VST3: clear in-place MIDI buffers #8789 2021-08-23 07:09:16 +02:00
73326ade90
Don't include i18n in headers
The i18n header needs to be included last, since it defines
`_` which results in conflicts with other headers.

see #8361 and e.g.
boost/function_types/detail/class_transform.hpp:23:26:
error: ‘boost::mpl::placeholders::_’ has not been declared
using mpl::placeholders::_;
2021-08-23 06:43:16 +02:00
Hector Martin
9b99633abe
Fix MIDI send latency compensation 2021-08-20 17:37:09 +02:00
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
b4b4745bd4
Amend 55211b8d (PRNG seed, use local address) 2021-08-16 04:59:10 +02:00
baf5a13f17
Update atomic/volatile compat
With glib 2.64, volatile gint produce annoying Wcast-qual
compiler warnings with mingw/gcc-8.

Even though the the build succeeds, and only glib 2.68+
requires non-volatile atomics this results in a much
cleaner build-log.
2021-08-16 04:26:55 +02:00
55211b8dd6
Update triggerbox RNG API calls 2021-08-15 16:04:08 +02:00
a3b28b4114
Move PCG RNG implementation out of header, update API 2021-08-15 16:03:01 +02:00