summaryrefslogtreecommitdiff
path: root/libs/ardour/route.cc
AgeCommit message (Collapse)Author
2017-05-14Sanitize "well-known" ctrl APIRobin Gareus
2017-05-13Fix copy+paste error for mb32c filter freq.Ben Loftis
2017-05-13amend efc2660f, well-known stripable controls:Robin Gareus
* 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
2017-05-12MCP: Mixbus32C: Restore missing filter controls to the Dyn page.Ben Loftis
2017-05-10Selection::get_stripables() needs to recurse into an Automatable's child ↵Paul Davis
Automatables when looking for for an Automation Control It also needs renaming (to come)
2017-05-05libardour now has CoreSelection object to manage selection status of ↵Paul Davis
Stripables and AutomationControls
2017-04-19Use std::string::operator+() instead of string_compose template in Route classTim Mayberry
Using string_compose in this instance doesn't seem necessary, is worse in terms of readability and is no doubt slower.
2017-04-19Use PBD::string_to<bool> in legacy ARDOUR::Route methodsTim Mayberry
2017-04-19Use XMLNode::get/set_property in ARDOUR::Route classTim Mayberry
2017-04-19Use ID::to_s() in libardour instead of ID::print()Tim Mayberry
2017-04-17Only check active_state when potentially skipping the route processing.Ben Loftis
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.
2017-04-17Flush processor (re-activate) on route active changeRobin Gareus
(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.
2017-04-17amend 649b9e92f, backport MB codeRobin Gareus
2017-04-17Backport some MB specifics (to avoid -Wmisleading-indentation)Robin Gareus
2017-04-17Update well-known controls (Ardour, Mixbus, 32C)Robin Gareus
2017-04-14Exclude MB EQ/Comp from visible processors de/activate.Robin Gareus
2017-04-14Don't A/B en/disable invisible processors, nor MB channelstripRobin Gareus
2017-04-14Convert polarity-invert from older session-formatsRobin Gareus
2017-04-12Properly expose "well known" comp_redux output.Robin Gareus
2017-04-12fix mb32 well-known EQ (4 bands, different ports)Robin Gareus
2017-03-13Add track/bus rename safeguards to the backend (handy for scripting)Robin Gareus
2017-03-01Fix crash when adding a plugin immediately after re-order (via script)Robin Gareus
The re-order is queued to be performed click-free in realtime-context. Meanwhile adding plugins will result in a race-condition.
2017-02-07remove debug outputPaul Davis
2017-02-07only reverse propagate solo-by-others-downstream if connections on a Route ↵Paul Davis
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.
2017-02-07don't call shared_from_this() for every route when doing solo-downstream ↵Paul Davis
propagation
2017-01-21Instrument insert options:Robin Gareus
* allow to directly fan-out when adding a multi-channel instrument * Mixbus: move multi-channel instruments after Comp & EQ.
2017-01-19Relax monitor-section processor channel restrictionRobin Gareus
2017-01-08prototype track/bus sharing: state-exportRobin Gareus
2016-12-07Save/Restore MIDI Automation Controls (current CC, PGM)Robin Gareus
2016-11-25Do not try to restore Route solo state after clearing all solo statePaul Davis
2016-11-25provisional changes to speed up solo changes to large numbers of routes.Paul Davis
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
2016-11-13Mac VST-2.x supportRobin Gareus
2016-10-10Allow to get a route reference from SessionObject*Robin Gareus
The motivation is to allow a Processor (here Lua) to get a pointer to the owning Route without resorting to iterative lookup.
2016-09-20Restore ARDOUR::MuteControl state, fixes bug #7025Tim Mayberry
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.
2016-08-24Take process-lock before processor-lockRobin Gareus
This [hopefully] fixes jack1 zombification on session-load with large plugin-states. Previously it was possible to block Route::process_output_buffers().
2016-08-19fix Aux-Send Panner LinkingRobin Gareus
2016-08-10fix crash when copy'ing latent plugins5.0Robin Gareus
2016-07-26add Sidechain change handler for automatically added initial SC portsRobin Gareus
2016-07-20MuteMaster should (a) use a Muteable's own ::muted_by_others_soloing() (b) ↵Paul Davis
not try to use its own _solo_ignore to track Muteable::can_solo() or solo isolate state
2016-07-20ensure that Route::_phase_control has its state restored, and also ↵Paul Davis
re-arrange Route::set_state() to avoid duplicated control set_state() calls
2016-07-20Make bus's trim control also affect sends to the busJulien "_FrnchFrgg_" RIVAUD
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.
2016-07-16add a note to selfRobin Gareus
2016-07-16allow inserts to connect it itself - #6924Robin Gareus
2016-07-14Make Route and Track ::silent_roll() also flush out ports buffersJulien "_FrnchFrgg_" RIVAUD
So that MIDI in the ports is really made silent.
2016-07-14Also flush buffers of the inner delivery of insertsJulien "_FrnchFrgg_" RIVAUD
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.
2016-07-14Consolidate delivery buffer flushing of all route typesJulien "_FrnchFrgg_" RIVAUD
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.
2016-07-14enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.hPaul Davis
2016-07-10align stem-export (raw track outputs (with and w/p processing)Robin Gareus
2016-07-07Don't add audio outs to non-audio routes with strict I/OJulien "_FrnchFrgg_" RIVAUD
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.
2016-07-05update route/processor semanticsRobin Gareus
* active(): hard bypass: en/disable. When disabled, run() is not called. * enabled(): plugin run()s but may do nothing (or only be latent)