summaryrefslogtreecommitdiff
path: root/libs/ardour/session.cc
AgeCommit message (Collapse)Author
2016-03-26add "no-inplace" buffers.Robin Gareus
When allowing to cross-connect plugin-ports, inplace processing can no longer be used. We need a complete set of independent input and output buffers. Since scratch and silent buffers are used by the various plugin implementations we cannot re-use them in the PluginInsert. Besides we need a complete BufferSet which can hold both: ins + outs.
2016-03-16Midi Busses? why yes!Robin Gareus
2016-03-14use ForGroup to flag and detect route-group based control changesPaul Davis
2016-02-29initialize uninitialized variableRobin Gareus
2016-02-29pre-process (silence) before export to flush reverb tails etc.Robin Gareus
2016-02-24potential mem corruption at session close:Robin Gareus
ARDOUR::Session::~Session() ARDOUR::Route::~Route() ARDOUR::InternalReturn::~InternalReturn() ARDOUR::Return::~Return() ARDOUR::Session::unmark_return_id(unsigned int) boost::dynamic_bitset<unsigned int, std::allocator<unsigned int> >::reference::do_assign(bool) -> Invalid write of size 4 -> 0 bytes inside a block of size 4 free'd Thanks to The_CLA for valgrinding this.
2016-02-23Implement Lua session-scriptsRobin Gareus
2016-02-22add syntax and scaffolding for MIDI binding maps to refer to selected ↵Paul Davis
tracks/busses. THIS DOES NOT WORK YET. Selection information is not available in libardour at this time
2016-02-20add processor lookup by PBD::ID via sessionRobin Gareus
In preparation for Lua bindings this completes the basic set of Session object lookup: route, source, controllable, region, processor
2016-01-25change exposed type of various objects' gain controls; remove Amp::gain() as ↵Paul Davis
a shortcut
2016-01-22fix rebase issue from masterPaul Davis
2016-01-22rename Controllable::WholeGroup => InverseGroup to reflect real intent.Paul Davis
Add logic to RouteGroupMember::use_group() to implement the real intent of InverseGroup
2016-01-22first compiling, mostly working version of group controls changesPaul Davis
2016-01-19Add all_tracks_rec actionsBen Loftis
2016-01-19Revert "mackie: still respond to route groups visibility changes"Paul Davis
This reverts commit a9ec547457bfa65655ee946063426f1ba85b6f91.
2016-01-19mackie: still respond to route groups visibility 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-18move Amp::GainControl out into its own source module and out of AmpPaul 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
2016-01-16Change last commit to use it's own variable rather than borrowing solo'sLen Ovens
2016-01-16Mackie Control: fix global Solo lamp to get signalled for listens active too.Len Ovens
2016-01-08Fix monitor-section session-property vs preference state.Robin Gareus
The initial value of Config::get_use_monitor_bus() may not reflect the current session's state when loading a session.
2016-01-02change Controllable::set_value() API to include grouped control consideration.Paul Davis
This also removes Route::group_gain_control() and associated machinery. Not yet tested with Mackie or other surfaces. More work to done to start using the group capabilities, and also potentially to add or derive more controls as RouteAutomationControls
2015-12-26fix samplerate initialization.Robin Gareus
2015-11-25Prevent crash at session-close when analysing.Robin Gareus
The Analyser only holds a weak-pointer the the Source, session-destruction frees the actual Source, which is fatal for any ongoing audio analysis. This fix simply waits for the current ongoing analysis to complete, ideally TransientDetector::run, EBUr128Analysis::run, OnsetDetector::run and AudioAnalyser::analyse could be interrupted. Alternate option: cancel the Analyser::work thread (and re-create with the every session).
2015-11-14get PlaylistDisposition argument of Session::new_route_from_template() workingPaul Davis
2015-11-13substantial part of infrastructure required for track/bus duplicationPaul Davis
This includes removing the removal of ID values in XML, and its replacement with thread-local forcing of ID resets, implemented in a previous commit
2015-11-09more correct semantics for reserved IO name checkingPaul Davis
2015-11-07slightly improved fix for reserved name handlingPaul Davis
2015-11-07don't force rename of reserved route/IO names if the name isn't taken yetPaul Davis
2015-10-22Decouple Session from MidiPatchManager and reduce parsing of midnam xml filesTim Mayberry
The MidiPatchManager only requires a reference to the session to get the path to the Session midnam directory so change it so that the path is passed to MidiPatchManager::add_search_path on Session construction and removed on Session Destruction. This will also make it easier to test and reduce compile times etc. For the common case where the Session doesn't have a Session specific midnam patch files directory(for instance a new session) it won't cause a refresh and reparsing of all the midnam files. This saves about 2 seconds to load a Session on my machine(fast machine with SSD), or about half the time spent in the Session constructor for a new session. There is still going to be that initial cost of parsing the midnam files when the first session is created after starting Ardour. Options to remove that would be to parse the files asynchronously and or use a faster xml parser(eventually), neither of which seem worth doing at this stage. This change will cause a performance regression for the uncommon case where a Session with Session specific midnam files is unloaded and then another Session with Session specific midnam files is loaded as it will cause the common midnam files in midi_patch_path to be parsed twice(unload and load).
2015-10-15fix deadlock when removing subgroup bus w/sends.Robin Gareus
...and potentially other route removals that involve processor changes.
2015-10-07fix exclusive solo group-overrideRobin Gareus
2015-10-07implement solo group overrideRobin Gareus
2015-10-06more solo propagation fixes.Robin Gareus
handle cases Track(s) -> Bus1 -> Bus2
2015-10-06Solo-Isolate has no effect on solo propagation.Robin Gareus
'Isolate' means that when another track is solo'd the isolated track won't mute.
2015-10-05remove unused fstream includesRobin Gareus
2015-10-05NOOP, remove trailing tabs/whitespace.Robin Gareus
2015-10-05allow grouped AFL/PFL with excl. soloRobin Gareus
2015-10-05fix various stuck-solo cases:Robin Gareus
* solo groups * cancel-solo * SIP <> AFL/PFL changes The optimized plural-form route_solo_changed() relied on the false premise that solo-groups and port-connections are disjoint sets. -=- e.g. "cancel all solo" calls set_solo(get_routes(), false); Since All routes are affected, the "non_solo_change" set is empty, and no changes were propagated up/downstream. Routes that indirectly change state as group-members, wrongly end up in the "non_solo_change" list instead of the "solo_change" list. If a route feeds another in the same group, no changes were propagated.
2015-10-04globally remove all trailing whitespace from ardour code base.Paul Davis
Paul Davis was responsible for introducing almost all of this.
2015-10-04correct error messageRobin Gareus
2015-10-02explicitly drop control surface protocols before disconnecting from engine.Paul Davis
This is not bomb/thread proof yet, because it still requires at least one process callback to function
2015-09-28better more reliable checks on renamed, newly created and imported track/bus ↵Paul Davis
names
2015-09-28loop record is a feature whether or not loop-is-mode is true or notPaul Davis
2015-09-28Session::disable_record() should work whether we are in loop mode or notPaul Davis
2015-09-15use an explicit black list of route names that require numbering.Paul Davis
This replaces an attempt to check port names which fails for a number of reasons.
2015-09-11fail to create Monitor section if port-names are not uniqueRobin Gareus
We should still prevent a user from naming a route "Monitor", but since "Monitor" is a translatable string, this is an i18n safeguard. eg. - create a session with a mon-section and a track Монитор. - send the session to a friend in Russia.
2015-09-10use PortManager::port_name_prefix_is_unique to check for new route namesPaul Davis
2015-09-10when removing routes, don't do potentially expensive work once for each route.Paul Davis
We can update solo state and tell interested parties about the removal once the actual removal is done