summaryrefslogtreecommitdiff
path: root/libs/ardour/route.cc
AgeCommit message (Collapse)Author
2013-10-21Unify editor / mixer ordering.nick_m
2013-10-14add a back-pointer to the owner of a ProcessorPaul Davis
Use SessionObject* rather than Route so that per-region plugins will be possible in the future.
2013-08-09more purging of JACK as an explicit name from libardourPaul Davis
2013-08-05fix conflicts after merge with masterPaul Davis
2013-08-03properly handle port removal in route.Robin Gareus
bug: - add midi track - add additional midi port - remove additional midi port - press play -> crash because.. ARDOUR::MidiTrack::roll's route_buffer still has 2 midi-channels. This is because processor_max_streams was not updated (no plugins added/removed) fill_buffers_with_input() eventually asserts when trying to get the 2nd (nonexistant) midi port via ARDOUR::PortSet::nth_midi_port() in ARDOUR::PortSet::port().
2013-08-03on session-load: skip output-change-handler until IOs are restoredRobin Gareus
fixes loading a session with tracks that have more input-ports than output-ports. the problem: input -ports are added first, when added, IO::ensure_port() emits IOChange::ConfigurationChanged which in turn triggers the route to allocate corresponding output ports. Due to this callback the output-ports were created before the actual output-port-configuration and plugin-configuration from the session-state was parsed and set.
2013-08-03disallow invalid port-removalRobin Gareus
do not allow port-removal if the port would be re-added immediately after that again because the main-delivery actually needs it. As a side effect this prevents this crash: * create a stereo-track, then remove one output -> unhandled exception "AudioEngine::PortRegistrationFailure&" The problem: - the port is removed from the RCU ports list, but Port::drop() (which calls jack_port_unregister) is only called from the Port's destructor at some later time. (because a reference to the port still exists elsewhere) - the jack-port is not yet removed. - meanwhile Delivery::configure_io comes along and notices that there are more audio-buffers than ports and tries to re-register the port. - but the port still exists in jack, so it fails and throws an exception ...which is not handled.
2013-08-02rework MIDI [processor|plugin] chainRobin Gareus
* forward midi-data around plugins that have no MIDI-out * allow to insert plugins with no MIDI-input at a point with one MIDI-channel This works because excess ports (both plugin and route) remain unconnected and use scratch-buffers. Tested with LV2, LXVST and LADSPA. (AU plugins with variable in/out retain the old behavior, no bypass) fixes http://tracker.ardour.org/view.php?id=5630
2013-08-01full compilation and linking (coding not finished, will not run)Paul Davis
2013-07-30use dedicated buffers for route (and track)Robin Gareus
"scratch buffers are by definition scratch and their contents are undefined at all times" "silent buffers are by definition all-zero and should not be used for real data" But track & route were using those for actual data; plugins (which may run in the same thread and may get the same buffers) use them for scratch thereby overwriting real data. In particular get_silent_buffers() (used by LadspaPlugin::connect_and_run) clears the buffer which can holds real data: e.g. via Route::passthru_silence() -> plugin1 -> plugin2 (clears output of plugin1)
2013-07-30Revert "fix issue with generator plugins and no-roll disk monitoring"Robin Gareus
This reverts commit bd34ab04cd43ed2f5bf6eebb8b6ea0e0e5cbb727.
2013-07-30fix issue with generator plugins and no-roll disk monitoringRobin Gareus
2013-07-29use K-20 meter as default master busRobin Gareus
2013-07-25most of libardour now actually compilesPaul Davis
2013-07-25reset meters only when *really* necessaryRobin Gareus
..and continue to calculate fall-off in audio-cycle (rather than UI thread) TODO: check if this works properly when switching between audio/midi meter modes on a midi-track. One of the motivations to always reset meters when the meter-point changes was to resolve peak-hold & fall-off issues when a midi-meter replaces an audio-meter and vice versa.
2013-07-18reset meter when meter-point changesRobin Gareus
2013-07-15finally get to the bottom of where NO_PLUGIN_STATE needs to be in order to ↵Paul Davis
be useful
2013-07-15more plugin state debuggingPaul Davis
2013-07-15tweaks to NO_PLUGIN_STATE logicPaul Davis
2013-07-10Revert "show track-ID in mixer" and "...towards unique track numbers."Robin Gareus
This reverts commits: ca54ea2b462869bfd9254a493d073ca1e9ad4b8e. 9e87e058e26b87013e89ddf5d3b7358d50024d60.
2013-07-10show track-ID in mixerRobin Gareus
2013-07-10...towards unique track numbers.Robin Gareus
2013-07-10share meter-type among meter instances.Robin Gareus
2013-07-10remember meter type with sessionRobin Gareus
2013-07-10fix [some] issues when adding/removing output portsRobin Gareus
2013-06-13Generalize no-plugin-state from AudioUnits to all pluginsPaul Davis
Replace AU_STATE_SUPPORT compile-time define with NO_PLUGIN_STATE and make it prevent plugin state setting, preset loading, preset saving and plugin state saving. Blocks on these actions exist partially in the backend and partially in the GUI (this latter class are not absolute, and should OSC or MIDI be able to drive Plugin::save_preset() the block could be circumvented). Set NO_PLUGIN_STATE if --freebie is used at waf-configure time
2013-04-06rename Route::is_hidden() to Route::is_auditioner() and Route::Hidden to ↵Paul Davis
Route::Auditioner. this has been the meaning of these terms for years now and it would be better to make it explicit
2013-04-06for the Auditioner only, do not reset the buffer count for scratch buffers ↵Paul Davis
to the input configuration, since the input config is irrelevant (data comes only from disk, no passthru). Should fix #5427 and #5432)
2013-03-27Squashed commit of the following:Paul Davis
commit fdbae82077db53add90df7448a06869dac89acc6 Author: Paul Davis <paul@linuxaudiosystems.com> Date: Wed Mar 27 21:45:28 2013 -0400 mammoth changes in basic signal flow, total redesign of MIDI channel filtering and more. commit 59343a8283698e02bc0f622313b29e98f449e4c8 Author: Paul Davis <paul@linuxaudiosystems.com> Date: Wed Mar 27 01:58:53 2013 -0400 initial working version after changes to MIDI channel filtering. may affect metering input too. testing not yet finished this commit merges many deep changes in ardour's internal architecture, combined with a total redesign of how MIDI channel filtering works. data in a track used to flow from JACK port buffers to diskstream's ringbuffers and was then copied from the ringbuffers into a BufferSet for use during Route::process_output_buffers(). The butler thread would handle the movement of data between the ringbuffers and disk. with this commit, data now flows from JACK port buffers into the BufferSet used for Route processing, and is copied from the BufferSet into the diskstream's ringbuffers (the butler thread continues to handle interactions with disk as usual). this change allowed a dramatic consolidation of code and simplification of most aspects of Track/Route::roll() and Track/Route::no_roll(). in particular, see Route::fill_buffers_with_input() which now concisely describes how we move data from JACK port buffers into the BufferSet for all Route types (including Tracks). this work was initially motivated by changing MIDI channel filtering so that we can process capture and playback independently. there is now a very clean pathway for this - see MidiTrack::roll() (NOTE: This needs implementing in the no-roll case too - a TODO item). the channel selector for MIDI tracks has been moved out of the track header and is now accessible via the context menu. more work is likely here, to make it (more) obvious to the user when filtering is going on.
2013-01-21save aux sends in session/route templates (#5285)Paul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@13946 d708f5d6-7413-0410-9779-e7cbd77b26cf
2013-01-15fix a couple of unused parametersPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@13843 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-12-19prevent MIDI tracks from ever being in MonitoringSilence state, allows use ↵Paul Davis
of piano roll whether rolling or not git-svn-id: svn://localhost/ardour2/branches/3.0@13679 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-12-07fix issues with rec-enabling being done in RT context by splitting it into ↵Paul Davis
two parts, an RT-safe and RT-unsafe part. along the way, remove "do not record plugins" option which is just so 1999 and creates problems for various (all?) plugin APIs git-svn-id: svn://localhost/ardour2/branches/3.0@13613 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-11-21from the depths of thorwil's dumpster diving comes a fix incorrect solo ↵Paul Davis
behaviour in 2.X sessions loaded into 3.0 because master/monitor/auditioner routes are not told to ignore solo state; remove unnecessary error message git-svn-id: svn://localhost/ardour2/branches/3.0@13543 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-11-21add more DEBUG::Solo output ; fix assignment of remote control ID's from XML ↵Paul Davis
(#5079) git-svn-id: svn://localhost/ardour2/branches/3.0@13542 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-13provide forgotten case for restoring Windows VST pluginsPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@13265 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-12make sure routes instrument info initializes correctlyHans Baier
git-svn-id: svn://localhost/ardour2/branches/3.0@13254 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-09-19mark session dirty when route active status changesPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@13195 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-08-16make --disable-plugins/-d work again, probablyPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@13131 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-08-10add -Wpointer-arith -Wcast-qual -Wcast-align and others to compile flags, ↵Paul Davis
and fix const cast warnings generated by new flags git-svn-id: svn://localhost/ardour2/branches/3.0@13124 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-07-25convert from Glib:: to Glib::Threads for all thread-related APIPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@13084 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-07-19more work on RID and editor/mixer order matching; when a track/bus is hidden ↵Paul Davis
in the GUI controlling RID, it gets a extremely large RID to prevent it showing up on a control surface (but ... for now ... is still visible in the other GUI, even if "sync order between mixer + editor" is enabled); change font in editor route list git-svn-id: svn://localhost/ardour2/branches/3.0@13054 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-07-13dramatic overhaul of automation. too long to explain here. this work is not ↵Paul Davis
finished - write/touch passes do not correctly overwrite existing data because the semantics of ControlList::insert_iterator need clarification. more to follow git-svn-id: svn://localhost/ardour2/branches/3.0@13038 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-07-06do not deactivate the meter in a frozen trackPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@12991 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-06-28further efforts at cleaning up the design of the interaction/relationship ↵Paul Davis
between route sort order keys and remote control IDs git-svn-id: svn://localhost/ardour2/branches/3.0@12962 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-06-27first pass at the big rethink of managing sort order keys for editor and ↵Paul Davis
mixer. this appears to work, but remote control IDs are not yet correct (frequently off by one because of the presence of the master bus in the editor) git-svn-id: svn://localhost/ardour2/branches/3.0@12953 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-06-26Fix uninitialised variable.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@12944 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-06-25drastic rethink of the relationship between remote control ID and route ↵Paul Davis
order keys. unless the user explicitly switches to UserOrdered, Route::_remote_control_id is an unallocated pointer, and Route::remote_control_id() simply returns a value based on the relevant order_key() value. Also, change the key used in the Route::order_keys std::map<> from a string to an enum, since there is no evidence that we are benefitting from the theoretical benefit of using a string. Generally tidy up allocation of order keys so that the master and monitor busses always get a "special" MixerSort key value, based on the MMC ID for master (already defined within Ardour), and all other tracks/busses start at zero. Syncing keys between editor and mixer will leave the MixerSort key for the master and monitor bus alone, reflecting the fact that we display these in their own distinct parts of the GUI and they are not orderable like other tracks or busses within the mixer window git-svn-id: svn://localhost/ardour2/branches/3.0@12923 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-06-24Fix stem export. The capturing processor of routes was never removed, and ↵Sakari Bergen
was restored inactive, which made stem export fail. git-svn-id: svn://localhost/ardour2/branches/3.0@12916 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-06-20Comment declick stuff a bit, and fix confusing use of bool instead of int to ↵Carl Hetherington
hold the value. git-svn-id: svn://localhost/ardour2/branches/3.0@12800 d708f5d6-7413-0410-9779-e7cbd77b26cf