summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/route.h
AgeCommit message (Collapse)Author
2015-08-15Update Route to handle UnknownProcessors as Stubs.Robin Gareus
2015-08-10convert Route::_solo_isolated from counter to a boolean.Paul Davis
This correctly manages the semantics - the counting part is only intended to cover upstream/downstream effects, not "am i solo-isolated" (similar to self-soloed)
2015-07-16separate solo isolate into two components (self-solo-isolate and ↵Paul Davis
solo-isolated-by-upstream)
2015-06-16add Record-Safe feature to libardour (from Nikolay Polyanovskii)Paul Davis
2015-05-29factor out Route::muted_by_others from existing codeBen Loftis
2015-05-02professionalize peak-metersRobin Gareus
The peak meter needs to withstand various test-signals without visual jitter (in particular 1kHz sine) regardless of settings (period-size, sample-rate, custom fall-off). This needs to be done in sync (and not by a random non-rt ‘smoothing’ thread). On the downside this voids the ‘visual smoothing’ particularly with large buffersizes - but then again exactly this “always fall-off no matter what [the next real data will be]” is the problem. One the upside, there’s one less high-frequency (100Hz) thread (Yay!) PS. it probably never worked on windows, anyway. Only peak-meters are affected by his change. K-meters, IEC I/II and VU were never visually smoothed.
2015-05-01constrain initial custom meter positions.Robin Gareus
The processor-box GUI only allows to move the custom meter position between trim and main_out/panner. Previously an initial switch from In -> custom or Out -> Custom left the meter at a position that can otherwise not be reached by manually repositioning the custom meter.
2015-04-29delegate signal emission to dedicated thread.Robin Gareus
This works around abysmal performance (~.15ms) of boost::function and boost::bind (in PBD::Signal). The overall load is probably higher but the realtime thread remains unaffected.
2015-04-27click-less processor re-ordering.Robin Gareus
2015-04-26clickless meter-point changesRobin Gareus
2015-04-25prepare trim automationRobin Gareus
2015-04-25prepare trim remote controlRobin Gareus
2015-04-24add Input Trim (just after disk i/o) to Audio TracksRobin Gareus
2014-12-18Mute automation via normal mute button.David Robillard
2014-06-26implement track numberingRobin Gareus
2014-06-15offset automation by latencyRobin Gareus
2014-06-11basic integration of delaylines (still un-nused)Robin Gareus
2014-06-04re-work bounce/freeze. Freezer stops at first active delivery.Robin Gareus
amend to 8f52bf7d9f
2014-05-25bounce to target number of channelsRobin Gareus
2014-05-25compensate for processor latency during bounceRobin Gareus
2014-01-19visibility macros and flush() added to SrcFileSource; merge with masterPaul Davis
2014-01-17remove cruftRobin Gareus
2014-01-10fix merge errors with masterPaul Davis
2014-01-09rework panning -- Squashed commit of the following:Robin Gareus
commit 6f4f4f161b00cb36252727f67ecc4913eb944fd7 Author: Robin Gareus <robin@gareus.org> Date: Wed Jan 8 22:13:09 2014 +0100 fix panner plugin discovery (prev commit) commit 26e514f4a80af9192cae3cbd62fde0ae95474dfc Author: Robin Gareus <robin@gareus.org> Date: Wed Jan 8 18:56:59 2014 +0100 update panner plugin discovery * recurse dirs in 'PANNER_PATH' and 'panner_dir_name' up to 1 level. * don't look in ardour_dll_directory() -- no panners are supposed to be in there * use .dylib on OSX exclusively. commit a514c3f1c425dccf3d42eee9d2b183b44fd26a03 Author: Robin Gareus <robin@gareus.org> Date: Wed Jan 8 16:48:34 2014 +0100 remove debug/devel printf()s commit d863742ddc69af493ee6a8817bc778968d9b0800 Author: Robin Gareus <robin@gareus.org> Date: Wed Jan 8 16:17:13 2014 +0100 panner-type: session backward/forward compatibility commit 25d5e4c663ada34129451b0f9045ab047d6cc2f0 Author: Robin Gareus <robin@gareus.org> Date: Wed Jan 8 16:09:07 2014 +0100 update URIs -> URLs commit 00a606a43d9456cfbaf43cae4fb598549326ba71 Merge: 0f1cec1 382eb0f Author: Robin Gareus <robin@gareus.org> Date: Wed Jan 8 03:29:45 2014 +0100 Merge branch 'master' into panning commit 0f1cec19babae538c9697eed4be5d6ddc851b013 Author: Robin Gareus <robin@gareus.org> Date: Wed Jan 8 02:41:15 2014 +0100 switch panner ID to URI commit 575282b412c3ae1cd8219cf75f00a1a4239e2813 Author: Robin Gareus <robin@gareus.org> Date: Wed Jan 8 00:50:15 2014 +0100 prepare API for panner URI commit ea62cd049308859782a7bb16e4f18169d8638b46 Author: Robin Gareus <robin@gareus.org> Date: Tue Jan 7 19:57:06 2014 +0100 update development doc relating to panner selection commit 586d7de2392e26b9d7f597b1a00b98dfaa42ecdc Author: Robin Gareus <robin@gareus.org> Date: Tue Jan 7 19:56:24 2014 +0100 clean up PanShell::set_user_selected_panner_type() API commit 99077886a5a1cacece908d87c29c3be12903027e Author: Robin Gareus <robin@gareus.org> Date: Tue Jan 7 04:46:22 2014 +0100 panner bypass: visualize & [in]sensitivity commit 46d688d216f0e67d672376a607157af02b359fb2 Merge: 4e67573 c4cdf61 Author: Robin Gareus <robin@gareus.org> Date: Tue Jan 7 02:18:54 2014 +0100 Merge branch 'master' into panning commit 4e67573517b3d60ddf65729783687b16cfb2adb7 Author: Robin Gareus <robin@gareus.org> Date: Tue Jan 7 01:05:17 2014 +0100 don't call configure_io() for merely swapping panners commit d32a4c51f6967f48f7680554866f1f7b311ccde1 Merge: a3226d4 cec3116 Author: Robin Gareus <robin@gareus.org> Date: Mon Jan 6 23:49:55 2014 +0100 Merge branch 'master' into panning commit a3226d46b598afae54a65ac69320eca84669f347 Author: Robin Gareus <robin@gareus.org> Date: Mon Jan 6 17:52:38 2014 +0100 add notes about panner re-design commit d1ae2366024605f22b05572a81ee249e6fdbcd2f Author: Robin Gareus <robin@gareus.org> Date: Mon Jan 6 15:06:40 2014 +0100 add simple stereo-balance panner for testing commit e0ddd256ff2288b8d8cfad3ad485a916964ce5b5 Author: Robin Gareus <robin@gareus.org> Date: Mon Jan 6 17:02:52 2014 +0100 add frontend/GUI for panner selection commit 2cb8f846755eb5aea8a2620d31ea981c446c4041 Author: Robin Gareus <robin@gareus.org> Date: Mon Jan 6 17:02:20 2014 +0100 prepare backend for panner selection
2013-12-03fix up wscript/build issues in exportvis after merge with masterPaul Davis
2013-10-21Unify editor / mixer ordering.nick_m
2013-10-17add export visibility macros across libardourPaul Davis
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