13
0
Commit Graph

50 Commits

Author SHA1 Message Date
bfb22e2acc
Ctrl Surfaces: update bound controllables
Note: this only affects surfaces that use mapped_controls, and do
not already subscribe to processors_changed/RouteProcessorChange signal.
2024-01-13 17:14:17 +01:00
b35518e212 switch from boost::{shared,weak}_ptr to std::{shared,weak}_ptr
This is mostly a simple lexical search+replace but the absence of operator< for
std::weak_ptr<T> leads to some complications, particularly with Evoral::Sequence
and ExportPortChannel.
2023-03-24 14:19:15 -06:00
7bf89ce109 Constification: make Stateful::get_state() const, with all other required const-ness added (libs) 2022-04-06 21:56:59 -06:00
db1821a363
Fix crash when removing plugin with mapped controllable #8756
MidiControlUI drops the reference to a given controllable in
its own thread. This can happen after the plugin is already
destroyed (even though the PBD::Controllable still exists).
2021-06-21 05:27:11 +02:00
365f6d6337
Update plugins/addons GPL boilerplate and (C) from git log 2019-08-03 15:53:18 +02:00
c97116083f
Fix generic-midi controllable race-condition
Continued work after e9b36f2bea. Prefer a shared_ptr<>.

MIDIControllable::write_feedback() runs in realtime context, directly
from the main process-thread. Synchronizing weak-pointers and deletion
across threads does not work reliably. Retaining a shared_ptr<> for
controllables that are in use can solve this.
2019-03-23 16:32:48 +01:00
e9b36f2bea
Update GenericMidiControlProtocol to use shared/weak Controllable pointers
This fixes a race-condition when a controllable is deleted
while sending feedback to the device.

Previously there was a race-condition MIDIControllable::write_feedback()
triggered from rt-thread, processed in Surface-thread and deleting
a route or processor.

This is a first step, currently state-restore is not fully functional
session->controllable_by_id() does not cover all Controllables.
2019-03-23 02:09:39 +01:00
8725ed5bd1 add Ctl_Dial to get better behaviour when binding a MIDI controller KNOB/DIAL to a toggled controllable.
No intent to change Ctl_Momentary or Ctl_Toggle behaviour, plus I tried to document what they are intended to support
2018-06-21 22:28:11 -04:00
8a18929d57 remove Session::controllable_by_descriptor() and move code into GenericMIDI code (the only user).
This also removes enums introduced to describe well-known parameters for Mixbus. Lookup now involves string
parsing every time, but this is not likely to be a notable cost.
2018-06-21 13:05:58 -04:00
Jan Lentfer
a2af019c95 generic_midi: add proper handling of midi controll toggles 2018-03-03 14:04:12 +01:00
93f837b43e generic MIDI: put controllables into touch mode (if appropriate) when data is received 2017-01-23 13:25:56 +01:00
81123a774a amend 3afe3f32df (remove unused global feedback option)
That commit accidentally removed unrelated code in generic-midi surface
which just happened to have the same name (get/set_midi_feedback) as the
unused preference.

Regardless, there was more cruft there. GMCP midicontrollables now use
the control surfaces' feedback option.
2016-12-31 15:20:07 +01:00
3afe3f32df Remove cruft (old MIDI feedback API) 2016-12-30 17:29:08 +01:00
d5127001bb move ControllableDescriptor from libpbd to libardour; add support for describing VCAs 2016-05-31 15:30:42 -04:00
dd05f1e257 Fix bug #5633, Don't drop all midi bindings when a track is removed
Only drop the controllable that is being destroyed, not all of them.
2016-02-03 22:30:41 +10:00
3c9b71b50e allow use of (N)RPN messages in generic MIDI binding maps (UNTESTED) 2015-11-23 12:27:51 -05:00
22b07e0233 NOOP, remove trailing tabs/whitespace. 2015-10-05 16:17:49 +02:00
4dc63966f0 globally remove all trailing whitespace from ardour code base.
Paul Davis was responsible for introducing almost all of this.
2015-10-04 14:51:05 -04:00
8b4a237ee3 Handle the 4 common encoder types. 2015-07-27 16:17:38 -04:00
d3b4ef4eed Add enc to midi map for mcp style encoders. 2015-07-27 16:17:38 -04:00
1ab61b8564 major redesign of MIDI port heirarchy and management (part 2) 2013-08-07 22:22:11 -04:00
1708ab55b9 fix MIDI binding stuff when the controllable does actually exist the first time we go looking for it (#4950)
git-svn-id: svn://localhost/ardour2/branches/3.0@12957 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-06-28 14:44:29 +00:00
a054a74dd2 disconnect from a Controllable when it is destroyed
git-svn-id: svn://localhost/ardour2/branches/3.0@12938 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-06-26 01:55:53 +00:00
92469df6ab add late/lazy binding between generic MIDI bindings and controllable elements in the session. this allows you to load a binding map that refers to elements that have not yet been created in the session, and when they are created, the binding will work
git-svn-id: svn://localhost/ardour2/branches/3.0@12921 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-06-25 12:33:13 +00:00
Carl Hetherington
fb6895ba86 Add motorised attribute to DeviceInfo for generic MIDI maps so that
we can specify if a surface is motorised, and as such will keep its
phyiscal controls in sync with Ardour's controllables at all times.
If this is not the case, we enable the code to avoid jumps when controls and
controllables are out of sync.  Mark the BCF2000 as motorised.



git-svn-id: svn://localhost/ardour2/branches/3.0@11611 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-03-07 01:11:22 +00:00
Carl Hetherington
fe86f97563 Work around problems with some JACK<->ALSA midi bridges which don't
transfer multiple MIDI messages when they are written in one
jack_midi_event_write.  Support pitch bend messages in the
generic midi control surface code.


git-svn-id: svn://localhost/ardour2/branches/3.0@11601 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-03-06 15:08:17 +00:00
dcccd5b4d6 patch from roy vegard to stop feedback from causing jumps when a MIDI controller and ardour are out of sync
git-svn-id: svn://localhost/ardour2/branches/3.0@11001 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-14 15:57:48 +00:00
6572f421a4 provide limited momentary note on/off MIDI binding option; remove some debugging output; add bank selector to generic MIDI UI
git-svn-id: svn://localhost/ardour2/branches/3.0@6430 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-01-01 18:14:32 +00:00
6c717a56e2 new PBD::ControllableDescriptor class to encapsulate parsing of binding URIs and speed up lookup at runtime
git-svn-id: svn://localhost/ardour2/branches/3.0@6427 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-12-31 23:43:47 +00:00
74933f5865 restore excess calls to sync-order stuff (for now); allow MIDI controllers to use the same non-linear fader response as the gui; add various flags to PBD::Controllable and remove URI from that class
git-svn-id: svn://localhost/ardour2/branches/3.0@6414 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-12-30 16:48:58 +00:00
8a17b0fb90 make generic MIDI control track remote control ID changes; fixup messes in the editor+mixer that caused excessive calls to SyncOrderKey stuff. generic MIDI still doesn't track editor/mixer order changes if we're not syncing both windows
git-svn-id: svn://localhost/ardour2/branches/3.0@6413 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-12-30 12:41:10 +00:00
77cc0f7cc8 editors for control protocols (generalized); editor for Generic MIDI that allows choosing a MIDI binding map (or none); support banking in binding URLs, and other miscellany related to generic MIDI; save+restore JACK_MidiPort connection state (but cause a crash at shutdown time)
git-svn-id: svn://localhost/ardour2/branches/3.0@6411 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-12-29 21:31:14 +00:00
109acd1568 MIDI binding maps make their debut
git-svn-id: svn://localhost/ardour2/branches/3.0@6408 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-12-28 16:49:44 +00:00
aae367b63c use new syntax for connecting to backend signals that enforces explicit connection scope, plus a few other related matters
git-svn-id: svn://localhost/ardour2/branches/3.0@6376 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-12-19 20:26:31 +00:00
f6fdd8dcbf switch to using boost::signals2 instead of sigc++, at least for libardour. not finished yet, but compiles, loads sessions, records and can close a session without a crash
git-svn-id: svn://localhost/ardour2/branches/3.0@6372 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-12-17 18:24:23 +00:00
53bbac4eb6 fix compilation breakages from the last commit
git-svn-id: svn://localhost/ardour2/branches/3.0@6347 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-12-11 03:18:17 +00:00
2983f8de97 (MAY BREAK COMPILATION - unfinished work, being transferred between machines via svn) ... start to make MidiControllable bind to a URI, not an object
git-svn-id: svn://localhost/ardour2/branches/3.0@6346 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-12-11 02:00:22 +00:00
e5258d4ed1 Fix angle bracket project-local include paths.
git-svn-id: svn://localhost/ardour2/branches/3.0@5975 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-10-30 00:21:40 +00:00
8713667ec1 rework Stateful::set_state() patch to avoid default version argument
git-svn-id: svn://localhost/ardour2/branches/3.0@5787 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-10-15 18:56:11 +00:00
Carl Hetherington
79f91c7a20 Part 1 of loading 2.X sessions; some things work, some things don't, hacks a-plenty.
LOADING 2.X SESSIONS WITH THIS COMMIT IN PLACE WILL (PROBABLY) CORRUPT THE .ardour FILE,
MAKING THE SESSION UNLOADABLE ON 2.X AND LOSING INFORMATION.

So don't do that unless you make a backup of the session file first.



git-svn-id: svn://localhost/ardour2/branches/3.0@5786 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-10-15 00:57:55 +00:00
9cfa3e2bf6 Fix MIDI control parameter mapping to work with controls that aren't [0..1] like gain (fix ticket #0002553).
git-svn-id: svn://localhost/ardour2/branches/3.0@4627 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-02-18 22:30:06 +00:00
449aab3c46 rollback to 3428, before the mysterious removal of libs/* at 3431/3432
git-svn-id: svn://localhost/ardour2/branches/3.0@3435 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-06-02 21:41:35 +00:00
Doug McLain
9c0d7d72d7 remove empty sigc++2 directory
git-svn-id: svn://localhost/ardour2/branches/3.0@3432 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-06-02 05:02:28 +00:00
cb41314642 merge 3.0 from 2.0-ongoing@3243
git-svn-id: svn://localhost/ardour2/branches/3.0@3248 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-04-11 14:06:50 +00:00
4b95621853 Move Stateful class declared in pbd/stateful.h into the PBD namespace
git-svn-id: svn://localhost/ardour2/trunk@2011 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-06-17 00:47:33 +00:00
Jesse Chappell
946ccff52e better variable name for midi feedback fighter. added MCU midi port to system ardour.rc
git-svn-id: svn://localhost/ardour2/trunk@1680 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-04-07 17:01:33 +00:00
6edccc3070 remove Id: lines from many/all headers and some more source files
git-svn-id: svn://localhost/ardour2/trunk@1535 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-02-28 19:32:13 +00:00
1f4a82cb8e next step of generic MIDI feedback fix - remove static _send_feedback from MIDI controllables
git-svn-id: svn://localhost/ardour2/trunk@1225 d708f5d6-7413-0410-9779-e7cbd77b26cf
2006-12-19 14:13:00 +00:00
26843b34fd modification to make generic MIDI actually work again
git-svn-id: svn://localhost/ardour2/trunk@673 d708f5d6-7413-0410-9779-e7cbd77b26cf
2006-07-10 20:01:47 +00:00
8b46567e06 id_t becomes a fully-fledged object, UUID's used for IDs, generic MIDI now owns bindings, MIDI binding concept removed from libardour itself in favor of generic Controllables
git-svn-id: svn://localhost/ardour2/trunk@669 d708f5d6-7413-0410-9779-e7cbd77b26cf
2006-07-07 23:51:30 +00:00