summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/route.h
AgeCommit message (Collapse)Author
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-07-21fix issue with solo-in-placePaul Davis
Monitor outs cannot be muted by other soloing. Duh.
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-09move latency-recompute into dedicated thread.Robin Gareus
this fixes an issue with jack1 and jack_latency_recompute() since must not send a server request from inside the server callback.
2016-06-08move gui_changed() signal from Route to StripablePaul Davis
2016-05-31update lua bindings for API changesRobin Gareus
luaBridge implicit inheritance uses a single direct parent (other parents object need casts). This motivates Route -> Stripable -> SessionObject
2016-05-31add generic ::slaved() method to RoutePaul Davis
2016-05-31first vaguely working version using PresentationInfoPaul Davis
remote control ID and "order keys" have been removed.
2016-05-31rearrange inheritance so that Automatable IS-A SlavablePaul Davis
Share assign code via Slavable; add visibility tags to Slavable+SlavableAutomationControl
2016-05-31add Slavable API for VCA assign/unassignPaul Davis
2016-05-31remove Route::listening_via_monitor()Paul Davis
This is better tested with direct use of the solo_control and Config->get_solo_controls_are_listen_controls()
2016-05-31move ever close to working master/slave logic, this time with audio testingPaul Davis
2016-05-31a variety of changes that get closer to correctly functioning behaviour for ↵Paul Davis
VCA solo+mute (BUT ARE NOT DONE YET)
2016-05-31universal change in the design of the way Route/Track controls are designed ↵Paul Davis
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
2016-05-31add implicit mute state to MuteMaster and use when a master of a mute ↵Paul Davis
control is enabled/disabled. Add AutomationControl::master_changed() as a virtual method to handle ... master value changes
2016-05-31change API of Controllable::Changed signal to include (from_self, ↵Paul Davis
GroupControlDisposition) This allows the signal to convey more information, which may be required by some handlers of a control's Changed signal
2016-05-31new API for route solo/mute state mgmtPaul Davis
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
2016-05-31rearrange AutomationControl and RouteAutomationControl to get more shared ↵Paul Davis
logic and consistent master/slave behaviour
2016-05-31move VCA assignment up to Route levelPaul Davis
2016-05-31redesign Route and VCA objects to inherit from ARDOUR::StripablePaul Davis
2016-05-31start shaping up VCA assign processPaul Davis
2016-05-19prepare plugin configuration and replacing instrumentsRobin Gareus
2016-05-10prepare route pin display (shared mixer + editor-mixer window proxy)Robin Gareus
2016-05-04NO-OP, whitespaceRobin Gareus
2016-04-28fix a deadlock with jack2 when inserting a plugin adds ports.Robin Gareus
When adding a processor, the processor may add ports leading to a call to jack_port_register(). while Ardour holds a WritertLock on the processor-list (this commit removes this WriterLock). with jack2 that results in a graph-reorder callback (WHY?) jack2 issues that graph-reorder in a separate thread BUT port-registration does not return until the graph-reorder is complete. On Ardour's side, graph_reordered() calls Session::resort_routes () which eventually checks Route::direct_feeds_according_to_reality() which needs a ReadLock on the processor-list to check I/O. Since jack_port_register() does not return, this constitutes a deadlock. THE ACTUAL PROBLEM IS JACK2's THREAD DESIGN! Why does jack_port_register() trigger a graph-order in jack2? No connections are made. ..and why does it block jack_port_register() from returning if that graph-order callback is in a different thread? http://pastebin.com/DZANXJLz
2016-04-27allow to customize variable i/o plugin inputsRobin Gareus
2016-04-17add self-removing Sends (remove on disconnect)Robin Gareus
The idea is to dynamically add/remove sends for feeding a sidechain and re-use all existing "External Send" infrastructure in particular latency compensation.
2016-04-15variable plugin port config.Robin Gareus
* extend plugin API (query IO ports) * collect possible variable plugin configurations (AU, Lua) * prepare semi-automatic configuration (presets: mono, stereo, N)
2016-04-13yet more documentation..Robin Gareus
2016-04-12NO-OP; document some more parameters.Robin Gareus
Since headers only provide the declaration, function parameters need to be documented.
2016-04-06Route API to query all outputs (incl sends) and graph-feedsRobin Gareus
2016-04-03Fix graph ordering incl. Inserts, Returns and SideChainsRobin Gareus
When building the process graph. Ardour usess Route::direct_feeds_according_to_reality() This function only tests if the current route (or any ioprocessors) is feeding another route's *input*. Inserts, Return and now Sidechains are ignored as destinations on the destination route are not taken into account. This is now resolved by adding an IOVector, a collection of all inputs of the destination route.
2016-04-03handle sidechain input changesRobin Gareus
2016-04-03expose plugin sidechain (via route):Robin Gareus
Processor and Process lock are needed, and the plugin chain needs to be reconfigured, so this cannot be directly performed by the plugin.
2016-03-27closing in on pin management.Robin Gareus
overall the PluginInsert API is complete. many implementation details remain.
2016-03-25prepare strict-i/o configuration.Robin Gareus
2016-03-19prepare Instrument slots -- replace processor in placeRobin Gareus
2016-02-03mackie control: Fix crash when selecting Track on MIDI strip, don't create ↵Len Ovens
phase control if there is none.
2016-02-01clean up mess in Route/Track controllables caused by not understanding the ↵Paul Davis
significance of ParameterDescriptor
2016-01-31provide route solo isolate and solo safe automation controlsPaul Davis
2016-01-31add a new constructor for RouteAutomationControllable that takes a ↵Paul Davis
ParameterDescriptor
2016-01-29add new Route API ::master_send_enable_controllable() to provide generic ↵Paul Davis
access to a mixbus-centric control
2016-01-28add new API to Route to get name of "well-known" nth-sendPaul Davis
Route::nth_send() has the wrong semantics in Mixbus for this purpose. Probably need to revisit this at some point
2016-01-27make Route::nth_send() and Route::nth_processor() be constPaul Davis
2016-01-27add stubs and enums to access "well-known" send controlsPaul Davis
2016-01-25change exposed type of various objects' gain controls; remove Amp::gain() as ↵Paul Davis
a shortcut
2016-01-22first compiling, mostly working version of group controls changesPaul Davis
2016-01-18add group disposition argument to Route::set_gain() and use it in various UIsPaul Davis
Executive decisions were necessary in a couple of places about the correct group disposition behaviour, notably faderport and OSC surfaces
2016-01-18working version of new gain control designPaul Davis
2016-01-18change ownership of the AutomationControl used by Amp.Paul Davis
It used to be owned by Amp. Now it is owned by Amp's owner