Age | Commit message (Collapse) | Author |
|
|
|
|
|
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)
|
|
|
|
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.
|
|
|
|
|
|
|
|
Now handles color, partially.
|
|
|
|
luaBridge implicit inheritance uses a single direct parent
(other parents object need casts). This motivates
Route -> Stripable -> SessionObject
|
|
|
|
|
|
remote control ID and "order keys" have been removed.
|
|
Share assign code via Slavable; add visibility tags to Slavable+SlavableAutomationControl
|
|
Make it be based on the ParameterDescriptor, which indicates toggle status anyway
|
|
|
|
|
|
|
|
This is better tested with direct use of the solo_control and
Config->get_solo_controls_are_listen_controls()
|
|
|
|
|
|
VCA solo+mute (BUT ARE NOT DONE YET)
|
|
|
|
|
|
|
|
and used. The controls now own their own state, rather than proxy for state in their owners.
Massive changes all over the code to accomodate this. Many things are not finished. Consider this a backup safety commit
|
|
control is enabled/disabled. Add AutomationControl::master_changed() as a virtual method to handle ... master value changes
|
|
GroupControlDisposition)
This allows the signal to convey more information, which may be required by some handlers of a control's Changed signal
|
|
Route now calls back into Session when solo/mute/listen state changes. All other interested
parties must use the Route::{solo,mute,...}_control()->Changed() to be notified of changes.
The Session requires more information than the Changed signal can provide, in order to
propagate solo/mute changes across the entire Session correctly.
Note that this uses an experimental use of CRTP to isolate a public API within Session
|
|
logic and consistent master/slave behaviour
|