Age | Commit message (Collapse) | Author |
|
|
|
|
|
* consistent hpf/lpf controllables (actually hi/lo bell in 32C)
* HPT, LPF frequencies are exposed as EQ band
* don't expose filter ctrl for mixbuses/master
|
|
|
|
Automatables when looking for for an Automation Control
It also needs renaming (to come)
|
|
Stripables and AutomationControls
|
|
Using string_compose in this instance doesn't seem necessary, is worse in terms
of readability and is no doubt slower.
|
|
|
|
|
|
|
|
In the past, we skipped processing if the routes had no inputs or outputs.
But:
A route with a generator plugin should work even if it has no inputs.
A route with "sends" should work even if it has no outputs.
|
|
(flush reverb tails etc)
PS. That comment "from RT audio thread" was wrong.
Route::flush_processors () is called from flush_all_inserts()
from Session::non_realtime_stop() which is not in rt-context.
Besides, the processor-lock regardless of the process_lock.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The re-order is queued to be performed click-free in realtime-context.
Meanwhile adding plugins will result in a race-condition.
|
|
|
|
change, not just configuration changes.
This prevents a scenario where the route has had its solo control's state set from
XML, but then we configure the route's output, and invoke output_change_handler().
Without the new conditional, this would check which downstream routes are soloed,
find none, and then unset the soloed-by-downstream state of the solo control.
|
|
propagation
|
|
* allow to directly fan-out when adding a multi-channel instrument
* Mixbus: move multi-channel instruments after Comp & EQ.
|
|
|
|
|
|
|
|
|
|
Moves global update of solo state and emission of Session::SoloChanged to
a single point after 1 to N solo controls are changed.
Also avoid unnecessarily emitted Activated() signal for listen controls,
though Process::{activate,deactive}() should probably be redesigned to
avoid this in a "deeper" way
|
|
|
|
The motivation is to allow a Processor (here Lua) to get a pointer
to the owning Route without resorting to iterative lookup.
|
|
This should be the final part of a fix for bug #7025, which means the id
property of PBD::Controllable is restored and a new id is not generated at
first save.
I'm assuming this was a typo, comparing with the wrong name meant the state of
the MuteControl was never being restored. This also fixes restoring bindings
associated MuteControl instances.
|
|
This [hopefully] fixes jack1 zombification on session-load with large
plugin-states. Previously it was possible to block
Route::process_output_buffers().
|
|
|
|
|
|
|
|
not try to use its own _solo_ignore to track Muteable::can_solo() or solo isolate state
|
|
re-arrange Route::set_state() to avoid duplicated control set_state() calls
|
|
The trim processor was moved to the front after the internal return was,
so the trim setting was applied before the signal coming from other
tracks/busses sends was mixed in. Change the order so that trim applies
to audio from internal sends as well.
|
|
|
|
|
|
So that MIDI in the ports is really made silent.
|
|
When flushing the buffers of Delivery processors owned by a Route/Track,
inner deliveries of PortInsert processors were missed since PortInsert
is not a Delivery subclass, but rather owns a Delivery as a private
member. Expose a flush_buffers() for PortInsert and call it too.
This is correct since (external) Send is a Delivery subclass, so that
just makes the send part of inserts behave as external sends do.
|
|
Route::no_roll(), Route::roll(), Track::no_roll(), AudioTrack::roll()
and MidiTrack::roll() all had the exact same loop for flushing buffers
of their Delivery processors. That was a lot of replicated code that had
to be kept synchronised by hand. Put that code into a protected method
Route::flush_processor_buffers_locked() which is called instead.
|
|
|
|
|
|
If a route has strict I/O then the main delivery follows the output of
the last processor, but libardour ensures it has at least as many
outputs as inputs in the master strip. A good consequence is that mono
tracks get their expected panner.
An akward side-effect is that MIDI-only routes (e.g. midi tracks or busses
without a synth) get two audio channels that have no use (and indeed no
panner is added because there is nothing to pan).
Skip the completion of audio outs if there was no audio out to begin
with.
|
|
* active(): hard bypass: en/disable. When disabled, run() is not called.
* enabled(): plugin run()s but may do nothing (or only be latent)
|