Commit Graph

983 Commits

Author SHA1 Message Date
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
Robin Gareus 8b6e1d78f9
Fix external/sidechain send solo propagation
Since caf057f06d sends propagate solo, however so far
only internal-sends properly cleaned up after disconnect or
removal.
2020-10-22 23:52:01 +02:00
Robin Gareus 81695b10e4
Take processor-lock to update latency of inactive routes 2020-09-22 23:41:38 +02:00
Robin Gareus 40439b6cc4
Disconnect plugin-signals on plugin-deletion
Use the plugin-insert itself as ScopedConnectionList, don't
clutter up the Route's List
2020-09-22 23:41:11 +02:00
Robin Gareus 4601507165
Collect and queue processor latency updates
This is only relevant when automating a plugin-bypass, due to
ActiveChanged the following could happen from the realtime thread:

#2 ARDOUR::Session::update_latency_compensation (false, false)
#3 PBD::Signal0<void, PBD::OptionalLastValue<void> >
#4 ARDOUR::AutomationControl::actually_set_value
#5 ARDOUR::PluginInsert::PluginControl::actually_set_value
#6 ARDOUR::PluginInsert::connect_and_run
#7 ARDOUR::PluginInsert::automate_and_run

In this specific case the update_latency_compensation()
is called with process-lock held but the caller lied:
  called_from_backend=false
When a delayline update is needed, this can lead to a deadlock,
since the process-lock is acquired again.

Simply postponing the update is preferable since this also
postpones the change when actively recording.

PS. This may need special casing for freewheel export.
2020-09-22 23:35:48 +02:00
Robin Gareus 2b139ead8d
Cache route's output playback latency
IO::latency iterates over the port-set retrieving the
private_latency_range of each port. The value can cached
since it can only change when connections or latency changes.

see also 40eefeddd6
2020-09-22 21:55:49 +02:00
Robin Gareus 824e54f399
Mark session as dirty when meter-type changes 2020-09-17 21:06:46 +02:00
Robin Gareus 0ca0b4f335
VST3 skeleton 2020-09-16 22:49:19 +02:00
Robin Gareus aa69fe49f5
Fix crash when removing master-bus output channels #8371
Previously when the master-bus had more outputs than inputs,
Ardour crashed when the monitor-section was set up.

Removing a master-bus output port calls
  Route::output_change_handler (master-bus)
 -> Session::reset_monitor_section
which first removes the corresponding monitor-section input,
then output port. The latter triggers
  ARDOUR::Route::output_change_handler (monitor-bus).

All with the process-lock held, so at this point in time Ardour
has removed the port-reference but the port still exists in the
backend.

Now the monitor-bus processors are re-configured and
the channel-count is updated. The port that was just removed
and triggered the ::output_change_handler() callback is
re-created.

unable to create port 'Monitor/audio_out 2': failed constructor

This fix changes the monitor-section to use strict-i/o (for plugins)
and also use master-bus output (not input) when configuring
processors.
2020-08-19 22:26:36 +02:00
Len Ovens 5c6e8954ed Add pre/post fader to foldback send creation
add position param to send creation
	default all to prefader as first step
2020-08-08 18:41:03 -07:00
Robin Gareus 57ef7334ef
Fix invalid iterator reference when removing plugins
processors.erase (i); invalidates the iterator and references
to the object, so we first need to try-cast and disconnect.
2020-08-05 20:24:13 +02:00
Robin Gareus 189faf557f
Rename Loudness Volume Ctrl to LAN Amp 2020-08-04 21:32:57 +02:00
Robin Gareus 7e5e9e46a1
Consolidate calls to IO::latency 2020-08-01 00:17:54 +02:00
Robin Gareus e9ff843bb1
Implement master/loudness volume processor
This provides for a better user-experience than using a-amp.
Particularly since a-amp only has a 20dB range and can be automated.
2020-07-27 21:56:41 +02:00
Robin Gareus 4dffe6e26e
Make master-output-volume optional 2020-07-21 05:50:30 +02:00
Robin Gareus ba0dac92f2
Add a main-outs volume control and dedicated master-volume
This is intended for loudness normalization - #8318 to add
additional gain as last step.
2020-07-21 02:18:38 +02:00
Robin Gareus a7a938275f
Add API to query if an instrument was fanned out
Since fan-out happens (interactively) in the GUI thread,
we need to keep track of this, in order to prevent later
auto-connection of the track to the master-bus.
2020-07-18 22:59:43 +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 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
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 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 2685728f59
Start collecting plugin stats and recently used plugins 2020-06-24 04:02:17 +02:00
Robin Gareus fbe8075117
Update monitoring
This partially reverts 208c781248
in order to fix monitoring when using punch-in/out.

This also allows to revert to Ardour 5 style MIDI exclusive
Input or Disk monitoring when not using layered-recording.
2020-06-17 23:51:13 +02:00
Robin Gareus 0f95bf001d
Remove unused API (Input Metering)
Input metering is now handled by Track::prep_record_enabled()
explicitly setting meter positions.
2020-06-16 22:42:16 +02:00
Robin Gareus 3294b1ce08
Allow to select pan-automation lanes - #8234
The GUI uses ::axis_view_by_control() if a controllable when
the CoreSelection contains a controllable.

CoreSelection::get_stripables() saves and looks up controllable
by PBD::ID. Panorama automation controls were previously
not found, since they are not directly owned by the route.
2020-06-14 20:31:50 +02:00
Len Ovens 4bfb2ee6cd Allow foldback sends to be pre or post fader 2020-05-28 07:05:59 -07:00
Robin Gareus d3ffc4d90a
Update more messages to prefer "Track/Bus" instead of "Route" 2020-05-24 19:38:04 +02:00
Paul Davis 5a7b7b3bfb remove Route::reload_loop() and derivatives
Replacement to follow in subsequent commit
2020-05-12 11:34:37 -06: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 2587ad6dc3
Ignore unconnected ports for latency-compensation
This fixed a false-positive "ambiguous latency" warning for
MIDI busses:

 MIDI track -midi-> MIDI Bus w/instrument -audio|midi-> master

The master-bus only has audio inputs, so the MIDI Bus'
MIDI out is left unconnected. Its latency does not matter,
it can float freely.

Previously it was assumed to be zero. So the MIDI Bus' input
playback latency range was [0, master-bus playback-latency].
2020-04-27 23:10:21 +02:00
Robin Gareus 8aa4ae825d
Skip delayline updates if no change is required 2020-04-27 14:08:37 +02:00
Robin Gareus 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
Robin Gareus 02e5605cdd
NO-OP: reduce scope, return early 2020-04-25 18:24:42 +02:00
Robin Gareus b9c29c478c
Remove unused signal 2020-04-25 17:53:49 +02:00
Robin Gareus 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
Robin Gareus 40eefeddd6
Micro optimization: cache output IO latency
IO::latency iterates over the port-set retrieving the
private_latency_range of each port. Since it can only change
when connections and latency changes, we can instead cache the value.

This is also in preparation to allow the auditioner to override it.
2020-04-23 04:56:45 +02:00
Robin Gareus 3f7de5ec8e
Do not add monitor-sends to foldback busses 2020-04-20 00:34:36 +02:00
Robin Gareus b7c7c02680
Optimize realtime listen-position change 2020-04-18 23:19:58 +02:00
Robin Gareus a90b0daadd
Support for lock-free AFL/PFL changes
Session::listen_position_changed() calls Route::listen_position_changed()
for every route in the session. Each call tool the process-lock
in turn.
2020-04-18 22:11:49 +02:00
Robin Gareus f0b25a776b
Update fan-out signal
* Signals use camelcase.
* use a static signal, independent of the route

Previously the signal was handled by RouteUI, which
caused various issues:
 * the RouteUI may not yet be available
 * There may be many RouteUIs for a single Route
   (mixer, editor-mixer, meter-bridge strips)
2020-04-02 20:27:51 +02:00
Robin Gareus 3b77472ac0
Overhaul InstrumentInfo
* Remove unused direct calls into plugin
* Assume empty model to mean plugin-provided MIDNAM (!)

The route owned Instrument-Info is the central access point used
by the GUI for MIDI name lookups.

At this point in time, custom settings are saved/restored by the
GUI (MidiTimeAxisView). InstrumentInfo provides a volatile store
for MIDNAM mode and model.
2020-04-01 16:31:58 +02:00
Robin Gareus bc1c3e5c21
Postpone disk-i/o setup during session-load
This fixes another assert(), caused by configuring processors,
before set_processor_state() was called.
Route::configure_processors() will be called later.

---
#3  0x00007ffff2472102 in __GI___assert_fail at assert.c:101
#4  0x00007ffff7a8ca1f in ARDOUR::Route::setup_invisible_processors() at ../libs/ardour/route.cc:5013
#5  0x00007ffff7a7a665 in ARDOUR::Route::configure_processors_unlocked at ../libs/ardour/route.cc:1870
#6  0x00007ffff7a79377 in ARDOUR::Route::configure_processors at ../libs/ardour/route.cc:1719
#7  0x00007ffff7a902c0 in ARDOUR::Route::set_disk_io_point at ../libs/ardour/route.cc:6041
#8  0x00007ffff7a7ea0a in ARDOUR::Route::set_state at ../libs/ardour/route.cc:2679
2020-03-31 19:48:17 +02:00
Robin Gareus 40e3364c66
Always delegate meter-point positioning to rt-thread
Previously set_state() -> set_meter_point() acquired the
process-lock to change meter-position, usually causing x-runs
when setting route-state.

This also fixes an issue introduced in fd414ec158. After
populating the processor list, force setting the meter-position
looks up the output streams of the processor before the meter.
However the processors are not configured. That will only happen
later from Session::post_engine_init().

---
#3 0x00007ff07b7d4102 in __GI___assert_fail at assert.c:101
#4 0x00007ff080d3224a in ARDOUR::PluginInsert::output_streams() const at ../libs/ardour/plugin_insert.cc:289
#5 0x00007ff080de8c30 in ARDOUR::Route::set_meter_point_unlocked() at ../libs/ardour/route.cc:4106
#6 0x00007ff080de8699 in ARDOUR::Route::set_meter_point(ARDOUR::MeterPoint, bool) at ../libs/ardour/route.cc:4037
#7 0x00007ff080ddfad3 in ARDOUR::Route::set_state(XMLNode const&, int) at ../libs/ardour/route.cc:269
2020-03-30 17:58:35 +02:00
Robin Gareus fd414ec158
Assert that plugins are configured before setting custom meter position
This fixes the following issue:
  On the master channel insert the waveform scope before the fader.
  Then set the meter position to custom and move the meter to the
  very beginning of the chain.

Before this change, when set_meter_point() was called the
processor list only contained the Fader (_amp) and no other
processor. _main_outs was not yet present in the list, and
Route::maybe_note_meter_position() triggered an
and assert(_processor_after_last_custom_meter.lock());

See also d0dca7daf0
2020-03-30 15:20:54 +02:00
Robin Gareus 84f8b8beae
Convert polarity invert state from v2 sessions 2020-03-25 23:58:15 +01:00
Robin Gareus 386264bd23
Pan: consolidate what_can_be_automated API 2020-03-21 19:46:39 +01:00
Robin Gareus 8f37865070
Prevent freeze/bounce of sidechain processors
This also consolidates code to test if a processor can be frozen
from various places.
2020-03-14 13:25:54 +01:00
Paul Davis 998b88b521 when inside Route::set_state() and calling set_name(), call the virtual method, rather than Route::set_name()
Without this, nothing in Track::set_name() is called, which means that tracks created from templates
do not get their name set appropriately
2020-02-19 19:21:11 -07:00
Paul Davis 585b61e58b fix paren/newline formatting 2020-02-19 19:21:11 -07:00
Robin Gareus 89bd6cafa0
Force Disk-Reader channel count to match Disk-Writer I/O.
This handles some special cases where a plugin is added after
the disk-writer but before the disk-reader.

The plugin may add/remove ports (e.g. an instrument: MIDI to audio,
or some stereo to mono processors). However we need to ensure
that any data that is recorded will be played back.

This is a new take replacing b2bc934e2.
2020-02-20 01:57:14 +01:00
Robin Gareus 4337e2b054
NO-OP: remove old comment and debug code 2020-02-20 01:57:07 +01:00
Paul Davis 95773f6bb7 fix compiler warning about dynamic_cast<T*>(ptr_to_T)
This is in a Route method, so it is obvious that dynamic_cast<Route*>(this) will return true
2020-02-19 15:07:42 -07:00
Robin Gareus 45ff356819
Fix Mixbus well-known filter controls (HP/LP freq) 2020-02-13 17:21:38 +01:00
Robin Gareus 46a6f47362
Address sidechain-port name uniqueness
[Re]name sidechain port directly when a plugin is added.

Usually plugins are constructed without an Route (owner is unset).
PluginInsert c'tor may already create a side-chain port, at the
time of construction the sidechain port will be created using
the port-name "toBeRenamed".

Previously the plugin had to be added to a route using "add_processor",
in order to set a unique name, before a new plugin with sidechain
could be constructed.

ProcessorBox::use_plugins() did that in the correct sequence,
however there may have been cases where this didn't work, and
Route::add_processors() was called directly..
2020-02-13 00:47:18 +01:00
Ben Loftis a9b614fc18 Fix a potential case where PresentationInfo type flag is not set (see comment for details) 2020-02-04 13:08:21 -06:00
Robin Gareus cfea85b496
Use session-version when loading processor state
Stateful::loading_state_version vs.
Stateful::current_state_version

See also 0a5837ec71
2020-01-30 18:52:32 +01:00
Robin Gareus 6452f62d64
Cont'd work on loading old route templates
This builds on top of 51d2bb:
 * v6 routes templates/states have a version per <Route>
 * older route-states are assumed to be from ardour-5
   Stateful::loading_state_version 3002,
   unless specified otherwise
2020-01-30 01:08:57 +01:00
Robin Gareus 51d2bb36ce
Save/Use state-version with route templates
Currently using Ardour-5 route templates (state version "3002")
with Ardour6 fails. As opposed to session-templates, Route
templates were not versioned.

This ensures future compatibility (and may allow to interpret
unversioned templates as "3002")
2020-01-29 23:20:37 +01:00
Robin Gareus 00150e105c
Fix AFL position
* update AFL position when preference changes
* "after post-fader processors (before pan)" is before
  the main-out (not at the end).
* Fix "immediately post-fader":
  The amp, when added was the last element. ++after_end then
  made the iterator point to .end()

This likely worked in the past when the monitor send was added
immediately after adding the fader/amp before any other processors.
2020-01-11 17:48:42 +01:00
Robin Gareus 2c24e6af36
Remove cruft, unused API 2019-12-16 23:37:57 +01:00
Robin Gareus 0a5837ec71
Fix loading plugin state from sessions
While loading a session XML state, set_state must use
`Stateful::loading_state_version`.

When later copying processor state,
`Stateful::current_state_version` is correct.
2019-12-11 16:25:08 +01:00
Robin Gareus 21f682164e
Fix automation alignment for latent plugins
This also solves bi-stable automation for plugins where latency
can change due to automation. e.g.

cycle 1: run (t): automation (t) = on: -> increase latency
cycle 2: run (t-latency): automation (t-latency) = off -> decrease latency
repeat.
2019-12-09 18:54:44 +01:00
Robin Gareus 7d94e1e1f9
Fix well-known control LPF/HPF order. 2019-12-05 16:43:20 +01:00
Paul Davis 1a2665e25f redesign of declicking and fades around loop boundaries 2019-11-22 23:41:56 -07:00
Robin Gareus d4ecfc7d85
Use new boost::optional API
get_value_or() has been deprecated since boost 1.56
2019-11-21 17:48:56 +01:00
Robin Gareus bd90499532
Ignore latency of inactive routes 2019-11-08 17:50:26 +01:00
Robin Gareus 41ad43fa5f
Remove unused signal 2019-11-08 17:50:23 +01:00
Robin Gareus 9694f89966
Use strict-i/o on master-bus by default
This precludes issues with multi-out-plugins adding an excessive
number of ports and changing master-panning.
2019-11-06 20:05:50 +01:00