13
0
Commit Graph

54 Commits

Author SHA1 Message Date
09b919bb85 faderport (classic): fix a variety of SNAFUs since switch to MidiSurface (#9439) 2023-09-14 12:15:19 -06:00
65346496f5
Refactor Ctrl Surface API
* reserve "probe" to actually probe for devices
* use separate probe for libusb and MIDI port devices
* use "available" to check if surface can be used
* allow both methods to be NULL
* remove unused ControlProtocolDescriptor* argument

Most surface just return `true` for available.
2023-05-03 15:38:42 +02: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
a130041547 use MIDISurface in original Faderport support, plus required changes in MIDISurface & Push 2 2022-11-16 08:37:57 -07:00
9758e6280f use new event loop callback to ensure that all surface/control protocol threads have tempo map ptr set 2022-05-16 15:24:52 -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
b58dfc7f0f
Resolve microseconds_t ambiguity 1/2
This resolves a PBD vs ARDOUR namespace error for some compilers:
```
error: reference to 'microseconds_t' is ambiguous
libs/pbd/pbd/microseconds.h:29:19: error: candidates are: typedef uint64_t PBD::microseconds_t
libs/ardour/ardour/types.h:81:29: error:                  typedef PBD::microseconds_t ARDOUR::microseconds_t
```
2021-06-27 17:33:05 +02:00
acfa04d700
Update Ctrl-surface MIDI port list when ports change
This is a better variant of bbb6851468, directly using
the GUI context without indirection.
2021-02-04 06:19:37 +01:00
eed07770e1
Fix Faderport1 port-connection (amend bbb68514) 2021-01-22 18:46:17 +01:00
09acad190b
Faderport: use well-known-controls API 2019-09-25 14:02:45 +02:00
365f6d6337
Update plugins/addons GPL boilerplate and (C) from git log 2019-08-03 15:53:18 +02: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
224295266f faderport: make ::invoke() tell us whether or not something was actually invoked for a button event
Only put the button into "consumed" if it actually invoked something.
This helps to get reverse-polarity footswitches to work as expected
2018-03-26 18:26:39 -04:00
eb3f50e15c change the way ControlProtocols (control surfaces) are notified and handle Stripable selection changes
The Editor continues to notify them, but via a direct call to ControlProtocolManager, not a signal.
The CP Manager calls the ControlProtocol static method to set up static data structures holding
selection info for all surfaces and then notifies each surface/protocol that selection has changed.
2017-05-12 14:51:39 +01:00
ecc2348ecc should not really bind a shared_ptr<Port> to a sigc slot, so don't do that 2016-12-18 00:07:59 +00:00
cefd3ac8be convert faderport to use Stripable instead of Route 2016-05-31 15:30:43 -04:00
4b36593106 fix faderport and mackie to use route AutomationControls to be notified about solo/mute changes 2016-05-31 15:30:40 -04:00
846afdd8e5 faderport: make blink/on/off status of record enable LED match the GUI one 2016-02-02 09:05:00 -05:00
5b7fa0b3c5 faderport: add footswitch button 2016-01-25 15:11:26 -05:00
9e5b7db89f first compiling, mostly working version of group controls changes 2016-01-22 11:58:31 -05:00
0d9efc1148 redesign cross-thread registration/signalling system
This new design will work even when threads that need to receive
messages from RT threads are created *after* the RT threads. The
existing design would fail because the RT thread(s) would never
be known the later created threads, and so signals emitted by the
RT thread and causing call_slot() in the receiver would end up
being enqueued using a lock-protected list. The new design ensures
that communication always uses a lock-free FIFO instead
2015-12-28 10:14:17 -05:00
d59739d728 faderport: add 100msec (10Hz) periodic update to facilitate automation playback 2015-12-14 13:28:31 -05:00
6c99576250 faderport: stop trying to cache LED state (fixes various bugs); blink mute for muted-by-others; blink transport for speed != 1.0 && != 0 2015-12-08 11:09:50 -05:00
a9ce37b7ac faderport: fix long press behaviour, and fix ardour-only behaviour with user button when used as a modifier 2015-12-03 18:38:09 -05:00
b07d86ac61 make faderport support report its port bundles as it should 2015-12-03 12:50:32 -05:00
900f59dcde faderport: generalized blink on/off code 2015-12-03 08:36:56 -05:00
20facc4d18 Faderport: map automation indicator LEDs 2015-12-02 20:06:29 -06:00
ee9524c9b6 faderport: make punch button LED indicate punch status 2015-12-01 18:45:43 -05:00
37961a6bbe faderport: switch long-press mechanism to a timeout
This makes the long press action fire after the timeout even if the user is still holding the button,
which feels more satisfactory
2015-12-01 13:15:38 -05:00
0e629cd162 faderport: add punch action 2015-12-01 10:35:37 -05:00
daf02e8c73 remove "medium-length" press concept from faderport code and GUI 2015-12-01 09:23:08 -05:00
b8ed62453f faderport: restore button actions, and correctly indicate current action in GUI 2015-11-30 13:50:33 -05:00
682e152aaf faderport: some code cleanups, add timing for button presses, add new comboboxes to GUI to allow more button programming, save button state 2015-11-30 12:51:18 -05:00
149f6795bb no-op: add comment to faderport button ID definitions 2015-11-29 11:58:36 -05:00
6380403dad basic structure for Faderport GUI
Not fully functional (or sensible yet) but the pieces are all there
2015-11-29 11:33:23 -05:00
bbaa5c6f45 faderport: shift+encoder controls pan width (for ardour only), input trim now controlled by user+encoder.
User is now a modifier key
2015-11-27 16:41:26 -05:00
779ec041b5 faderport: basic panning via encoder knob.
Doesn't help with 2=>2 panner, where width control is also required
2015-11-27 16:34:01 -05:00
d138f8981d implement more Faderport buttons (window and fader automation). ToDo: automation LEDs, fader banking 2015-11-25 17:33:49 -06:00
e1ea14f10a faderport: handle mute for monitor out by using monitor processor ops; try to blink mute button when cut-all is in effect.
Still some logic bugs when switching between master, monitor and other
2015-11-25 17:20:00 -05:00
d53993fd83 faderport: output button is a toggle between master (or monitor) and currently used route 2015-11-25 16:47:20 -05:00
104ec39b50 faderport: enable "Output" button to select master out (or, with Shift, monitor out if it exists) as the target route 2015-11-25 16:34:11 -05:00
487ada6630 handle encoder changes. shift+knob = input trim. ToDo: panner control 2015-11-25 14:52:58 -06:00
4e014da61a cruft removal from faderport code 2015-11-25 13:37:00 -05:00
dd6cbac20e faderport: implement fader support 2015-11-25 13:37:00 -05:00
fe06e3b7e8 faderport: track GUI selection, use first selected route; implement mute, solo, rec 2015-11-25 12:38:22 -05:00
2ea4d5c7b5 faderport: allow forcing LED state for use in ::all_lights_out() 2015-11-24 23:13:02 -05:00
34d847e060 faderport: fix modifiers for rewind, stop, undo etc ; listen to session transport signals and display state with button LEDs; add blinking 2015-11-24 23:06:19 -05:00
3a86b386fa fadeport: restructure button info actions to allow modifiers (shift, rewind, stop) and set up undo and shift-undo (redo) 2015-11-24 22:32:40 -05:00
7c8cc3cfa9 give the faderport its own thread and event loop, rather than riding on the back of the MIDI UI thread in libardour 2015-11-24 21:41:44 -05:00
8765359db2 faderport: after connecting, turn off all lights, then party with them, then turn them all off 2015-11-24 21:10:22 -05:00