summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/route.h
AgeCommit message (Collapse)Author
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-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-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-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.
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-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-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-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-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-11lots more work trying to create a common structure for accessing plugin and ↵Paul Davis
MIDNAME patch/preset/program names. still not done git-svn-id: svn://localhost/ardour2/branches/3.0@12665 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-06-11partially-done (but compile-friendly) move of instrument info into a new ↵Paul Davis
backend object git-svn-id: svn://localhost/ardour2/branches/3.0@12652 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-19add a simple method to return "the instrument" associated with a Route. see ↵Paul Davis
the comments about the semantics of this, which do not preclude 0..N "instruments" in a single route git-svn-id: svn://localhost/ardour2/branches/3.0@12027 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-14Fix a few framecnt / framepos type confusions.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@11975 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-03-16put back revised version of Route::has_external_redirects() and use it to ↵Paul Davis
give a warning when attempting to freeze a track with sends/inserts/returns git-svn-id: svn://localhost/ardour2/branches/3.0@11707 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-03-16remove now-unused Route::has_external_redirects()Paul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@11704 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-30Add aux sends at the position that the menu was opened, rather than always ↵Carl Hetherington
pre-fader (#4660). git-svn-id: svn://localhost/ardour2/branches/3.0@11387 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-25an improvement to the previous patch to catch up with solo state after a ↵Paul Davis
disconnect, but still not really done because it doesn't get triggered for both ends of a disconnect git-svn-id: svn://localhost/ardour2/branches/3.0@11353 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-25fix #4405, by explicitly cancelling solo when a route's inputs drop to zeroPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@11346 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-18fix two major assert failures arising from the optional monitor section ↵Paul Davis
commit; separate numbering of aux sends, sends and listens to fix #3671 (still testing, but the assert failures are critical) git-svn-id: svn://localhost/ardour2/branches/3.0@11263 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-18make monitor section an optional feature than can be added/removed as ↵Paul Davis
needed. this is a big commit, and breakage is possible. it has been moderately tested. this commit also locks the remote control ID of the master bus to 318 and the monitor section (if any) to 319. the numbers are based on MIDI Machine Control limits git-svn-id: svn://localhost/ardour2/branches/3.0@11256 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-26Tidy up monitoring slightly so that it matches oofus' truthCarl Hetherington
table for the various different states. Should fix #4533. git-svn-id: svn://localhost/ardour2/branches/3.0@11073 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-23Rename a few bits and fix a undeclared method.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@11066 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-23Do some renaming in the ARDOUR::Port class tree.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@11062 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-14send sustain=off and all-notes-off when a MIDI track is muted (may fix #4295)Paul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@11005 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-21Re-add code to support do-not-record-plugins (#4487).Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@10731 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-21Remove unused with_processors parameter toCarl Hetherington
process_output_buffers; functionality to return elsewhere. git-svn-id: svn://localhost/ardour2/branches/3.0@10722 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-16Slightly unpleasant fix for creation of tracks fromCarl Hetherington
templates; it would be nice if we could set things up using the Route's logic for setting names of its children, rather than repeating the same logic in XML-land (#4303). git-svn-id: svn://localhost/ardour2/branches/3.0@10655 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-16Remove set_state / _set_state dance in Route hierarchyCarl Hetherington
that seems to have been a hangover from when _set_state was called in constructors. git-svn-id: svn://localhost/ardour2/branches/3.0@10654 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-16Make activate/deactivate all only operate on visibleCarl Hetherington
processors (and also exclude the fader) (#4475). git-svn-id: svn://localhost/ardour2/branches/3.0@10649 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-16Save custom meter position so that it can be restored ifCarl Hetherington
the metering point is set to something else and then back to custom again (#4401). git-svn-id: svn://localhost/ardour2/branches/3.0@10641 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-09Alert the user if a connection is made which causesCarl Hetherington
feedback, and preserve the route graph in the state that it was in before the feedback was introduced. The intent being to simplify the code, reduce the number of areas of code which must consider feedback, and fix a few bugs. git-svn-id: svn://localhost/ardour2/branches/3.0@10510 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-29Remove some unused stuff.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@10331 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-28Revert inadvertantly committed stuff from 10322.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@10323 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-27Minor cleanups to IO.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@10322 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-24Remove unused call_base parameter from Route::_set_state.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@10302 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-21correctly track monitoring changes in libardour and the GUI; required ↵Paul Davis
removing propagation of session rec-enabled status through process chain and replacing it with call to Session::actively_recording() where necessary (may require a new RT event) git-svn-id: svn://localhost/ardour2/branches/3.0@10265 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-19Fix insertion of processors at the point at which the processor menu was ↵Carl Hetherington
opened; give a visual cue to indicate where a processor will be inserted. Kind of experimental. git-svn-id: svn://localhost/ardour2/branches/3.0@10236 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-09-253.X version of earlier major fix to 2.X: Route::check_initial_delay() should ↵Paul Davis
be virtual and do nothing for busses git-svn-id: svn://localhost/ardour2/branches/3.0@10123 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-09-18Remove unused rec_monitors_input variables.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@10091 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-09-16Remove unused parameter.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@10090 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-06-14monitor send gets access to the (shared) pannable of the track/bus, thus ↵Paul Davis
ensuring that the monitor feed is panned. required a few fixes along the way git-svn-id: svn://localhost/ardour2/branches/3.0@9731 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-06-14fix initialization of gain for Listen internal sends (to monitor bus); ↵Paul Davis
remove pannable object from monitor bus after (re)creation from XML git-svn-id: svn://localhost/ardour2/branches/3.0@9730 d708f5d6-7413-0410-9779-e7cbd77b26cf