Commit Graph

100 Commits

Author SHA1 Message Date
Robin Gareus
2e98c57fb8 Finalize experiment: always propagate solo via sends
See also caf057f06d
2020-10-23 00:24:06 +02:00
Robin Gareus
10200f5e29 Fix crash when closing session with VCA slaved solo
Session::destroy() calls drop_references(),
which leads to  InternalSend::send_from_going_away()
calling InternalSend::propagate_solo().

This looks up the SoloControl to test soloed_by_others(), incl.
and VCA maters. Those VCAs however may already have been destroyed,
and (weak pointer) _master.lock() fails.
2020-05-13 17:58:37 +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
5b113c9c5b Fix un/bypassing Aux-send panners
This fixes issues with send-panner bypass whenever the
target bus input-count is different from the send's channel count.

--

Previously, when the aux-send panner was bypassed, data was
copied using BufferSet::read_from().
This sets the channel count of the output buffer set (here: mixbufs)
to match the input (here: bufs).

e.g. mono to stereo, "1 in -> 2 out" out was changed to "1 in -> 1 out".

Un-bypassing the panner later does not reconfigure the I/O.
Mixbufs remained mono, and PannerShell::run() "1 in -> 1 out"
does nothing. The panner was effectively not functional.
2020-03-12 02:23:49 +01:00
Robin Gareus
33f85b094b NO-OP: reduce scope 2020-03-12 02:13:27 +01:00
Robin Gareus
dd30b8b31e NO-OP: whitespace 2020-03-12 01:58:50 +01:00
Robin Gareus
82541b33a4 Retain custom internal-send name on session re-load 2020-03-02 21:54:38 +01:00
Robin Gareus
6e0062d549 Refactor send naming (#7905)
This allows users to rename sends without enforcing a numeric
bitslot number. However this prevents a user to to use "send" names
that are potentially used for new sends or inserts.
2020-03-02 20:07:52 +01:00
Robin Gareus
a22f918d9d Update libardour GPL boilerplate and (C) from git log 2019-08-03 15:53:16 +02:00
Len Ovens
777fe3c68f Add personal monitor sends 2018-10-19 08:51:29 -07:00
Len Ovens
5b280463ce Noop: fix white space 2018-10-17 16:25:49 -07:00
Len Ovens
5e21b6633d Option to hide send if aux is hidden 2018-10-17 15:59:00 -07:00
Robin Gareus
e31f5d9998 Clean up State API:
* Processor implement get_state(), classes derived from Processor
  implement protected ::state() -- as documented in processor.h
* likewise for Route, Track: make ::state() a protected interface
* removal of "full_state", use explicit "template_save"
* use RAII/Unwind to skip saving automation-state
2017-10-04 00:54:55 +02:00
Robin Gareus
9f9e948d84 Update Send: Include internal 'thru' delay-line
This allows to push latency upstream and delay the source
in case the destination has a longer latency.

Also add a signal to notify the Session in case this happens, intended
to queue a latency-recompute.
2017-09-29 05:03:48 +02:00
Robin Gareus
5a2ea4d0e2 Delayline naming -- for debug purposes 2017-09-29 05:03:48 +02:00
Paul Davis
30b087ab3d globally change all use of "frame" to refer to audio into "sample".
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode
and video in order to keep the legible
2017-09-18 12:39:17 -04:00
Robin Gareus
8e4eb42833 Fix send mono to stereo (or N to M; M > N) sends #7409 part 1/2 2017-06-29 04:40:00 +02:00
Tim Mayberry
34eb49b782 Use XMLNode::get/set_property API in ARDOUR::InternalSend class 2017-04-19 09:36:52 +10:00
Robin Gareus
9089c1c6bf Fix AFL/PFL from MIDI tracks without audio (zero buffers) 2017-03-05 21:18:18 +01:00
Robin Gareus
c21a0760a4 allow feedback (loops) from internal sends
This facilitates custom "Echo" chains:

  Bus 1 [FX] [aux-send to Bus 2] -> master
  Bus 2 [FX] -> Bus 2
2016-10-14 15:06:49 +02:00
Paul Davis
cf52d6e4b4 enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h 2016-07-14 14:45:23 -04:00
Robin Gareus
b64a6b658e handle internal-sends from audio to midi busses 2016-07-09 13:51:52 +02:00
Julien "_FrnchFrgg_" RIVAUD
09c4c51335 Make internal sends aware of non-audio data
When most internal sends are created, they are given a panner shell
which is then responsible for audio dispatch. Other data types were left
there without handling them at all. Ensure that all available data is
sent provided the internal send has enough outgoing buffers.
2016-07-09 02:00:27 +02:00
Robin Gareus
e9a8ccc7e2 major internal plugin & processor API change:
Pass current (latency compensated) cycle times to plugin.
This fixes time-reporting to plugins and also fixes automation
and when bouncing (the session->transport* is not valid) etc.
2016-06-25 02:23:56 +02:00
Paul Davis
17ace643e4 OMNIBUS COMMIT: prefer const XMLNode::property method (and provide a real one) 2016-05-04 23:09:45 -04:00
Paul Davis
1948b50a68 working version of new gain control design 2016-01-18 12:11:08 -05:00
Robin Gareus
22b07e0233 NOOP, remove trailing tabs/whitespace. 2015-10-05 16:17:49 +02:00
Paul Davis
96cc1dbe80 Revert "add an Amp to Delivery, remove it from Send, make use of this in various ::run() methods"
This reverts commit 601a34521c.
2015-09-16 18:38:44 -04:00
Paul Davis
601a34521c add an Amp to Delivery, remove it from Send, make use of this in various ::run() methods
Delivery::_amp now will handle monitor-related delicks assuming the Session::config.get_use_monitor_fades() is
true.
2015-09-15 16:35:37 -04:00
Ben Loftis
46f97e8d92 Initial Gain Coefficient tweaks
1)  Disambiguate 1.0 to GAIN_COEFF_UNITY, and 0.0 to GAIN_COEFF_ZERO
2)  Add GAIN_COEFF_SMALL which replaces SMALL_SIGNAL (-140dB)
3)  GAIN_COEFF_SMALL can used to avoid interpolating towards -inf on a db scale
4)  GAIN_COEFF_SMALL is used to detect very small (denormal?) gains and memset to zero
2015-04-22 00:22:43 +02:00
Robin Gareus
83519faffb low-pass filter gain-fader.
fixes various fader zipper noise issues.
It voids sample accuate fader automation (the fader-gain
is low-pass filtered at 10Hz). Yet all musical purposes this
makes a lot more sense than sample accuracy anyway.
2015-04-07 05:21:57 +02:00
Robin Gareus
07a651d2ec release shared route pointer kept by InternalSend when dropping refs.
fixes "SessionHandleRef exists across session deletion"
when using AuxSends
2014-09-03 05:20:28 +02:00
Robin Gareus
f6aaa1660b en/disable internal send+returns with tracks en/disable. 2014-06-23 00:48:47 +02:00
Robin Gareus
ca3c9cae6e basic integration of delaylines (still un-nused) 2014-06-11 17:14:18 +02:00
Robin Gareus
7bc3e0dab4 don't add a [shared] panner for the sends to monitoing section
fixes issue with 'stuck' mono panners (when using a stereo
monitoring section and auto-connect): the send to monitor
section is added after the main panner. At this point the
channel-count is different, but the send shared panner() with
the main route.

Here: mono-panner on track, stereo-panner; and they shared control
settings. since stereo-panner's width is 1, the position cannot be
changed.
2014-02-07 19:30:43 +01:00
Robin Gareus
06cc5e5240 fix bitslot already in use warning
in e45151b89c route.cc was changed to create internal sends
directly with role = Delivery::Aux; and not Delivery::Role (0).
This change was motivated to initialize the panner for Aux-sends
in the Delivery.

Role(0) was used to override bitslot numbering during initial
construction of the object when the state is loaded from XML after
construction.

This patch adds an explicit flag for that.
(The previous Role(0) approach only worked for Aux-Sends
but not Sends, anyway.)
2014-01-22 13:06:58 +01:00
Robin Gareus
0c384b7c21 update internal-send port-count when target port-count changes 2014-01-13 10:48:23 +01:00
Robin Gareus
5e2a145cdd ignore additional channels for AFL, PFL:
If the monitor-section has fewer-channels than the solo-listen point:
ignore additional channels.
2014-01-13 10:47:17 +01:00
Paul Davis
616f2a0370 fix conflicts after merge with master 2013-08-05 14:22:32 -04:00
Robin Gareus
bfd50cdeb0 rework MIDI [processor|plugin] chain
* forward midi-data around plugins that have no MIDI-out
* allow to insert plugins with no MIDI-input at a point with one MIDI-channel

This works because excess ports (both plugin and route) remain
unconnected and use scratch-buffers.

Tested with LV2, LXVST and LADSPA.
(AU plugins with variable in/out retain the old behavior, no bypass)

fixes http://tracker.ardour.org/view.php?id=5630
2013-08-02 03:39:00 +02:00
Paul Davis
9ac6bb9bef part-way through getting the audioengine changes to compile 2013-07-24 19:29:45 -04:00
Carl Hetherington
c40437430a Make send automation work (#4734).
git-svn-id: svn://localhost/ardour2/branches/3.0@12650 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-06-11 10:42:30 +00:00
David Robillard
6fa6514cfd Remove over 500 unnecessary includes (including 54 of session.h).
It's slightly possible that this causes trivial build failures on different
configurations, but otherwise shouldn't cause any problems (i.e. no actual
changes other than include/naming/namespace stuff).  I deliberately avoided
removing libardour-config.h since this can mysteriously break things, though a
few of those do seem to be unnecessary.

This commit only targets includes of ardour/*.h.  There is also a very large
number of unnecessary includes of stuff in gtk2_ardour; tackling that should
also give a big improvement in build time when things are modified.


git-svn-id: svn://localhost/ardour2/branches/3.0@12420 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-05-24 06:09:29 +00:00
Paul Davis
7a76168b66 more fixes/tweaks from the land of the lion
git-svn-id: svn://localhost/ardour2/branches/3.0@12150 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-05-02 20:45:17 +00:00
Paul Davis
68e72c94c8 more useful error message when an internal send fails to find its target
git-svn-id: svn://localhost/ardour2/branches/3.0@11328 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-24 13:34:20 +00:00
Paul Davis
759f1216af fix reload of session with new send naming in place, drop "aux-" prefix from name of aux sends
git-svn-id: svn://localhost/ardour2/branches/3.0@11264 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-18 18:37:26 +00:00
Carl Hetherington
36ec03358f Remove thought-to-be-unnecessary setup of Delivery::_no_outs_cuz_we_no_monitor
at the start of each cycle; it is set up at the start of Route::process_output_buffers.


git-svn-id: svn://localhost/ardour2/branches/3.0@11247 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-14 23:31:55 +00:00
Carl Hetherington
db24dda7a2 Fill extra channels if monitor sends have more outputs than
inputs (#4468).


git-svn-id: svn://localhost/ardour2/branches/3.0@10708 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-20 16:36:04 +00:00
Carl Hetherington
f65e3f287b Improve audioengine includes slightly.
git-svn-id: svn://localhost/ardour2/branches/3.0@10326 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-28 15:35:09 +00:00