13
0
Commit Graph

153 Commits

Author SHA1 Message Date
4d815554dd Various Control Surfaces: Fix one off in calculation of fader position
MIDI pitch bend holds 14 bits (16384) which gives values of 0 to 16383.
2021-05-07 18:02:44 -05:00
e0a6aba28d
Ignore saved port-name when loading ctrl-surface state
In some cases old and/or conflicting port names were saved
with the session (e.g. "Faderport" for FP1,8). Loading old sessions
then merges this state into the config, which could lead to
port-registration failure when the surfaces was enabled.
2021-04-17 02:07:09 +02:00
c212909282
Ctrl-surface: do not name single-channel bundle ports
Follow Session::setup_bundles() lead for single channel
MIDI bundles. This cleans-up the port-matrix display and
removes redundant names. The underlying engine port-name
is not of interest to the user.
2021-04-17 00:43:20 +02:00
72db091619
Fix crash at exit with classic Faderport
FaderPort::~FaderPort () can be called while
FaderPort::map_gain() is called from FaderPort::periodic()

```
Thread 71 Crashed:
0      libardour_faderport.dylib          	0x0000000110539c3a ArdourSurface::FaderPort::map_gain() + 138
1      libardour_faderport.dylib          	0x000000011053996d ArdourSurface::FaderPort::periodic() + 109
2      libglibmm-2.4.1.dylib                  	0x000000010bf21da8 Glib::TimeoutSource::dispatch(sigc::slot_base*) + 56
3      libglibmm-2.4.1.dylib                  	0x000000010bf20c97 Glib::Source::dispatch_vfunc(_GSource*, int (*)(void*), void*) + 39
4      libglib-2.0.0.dylib                      	0x000000010c012496 g_main_context_dispatch + 326
5      libglib-2.0.0.dylib                      	0x000000010c01281a g_main_context_iterate + 474
6      libglib-2.0.0.dylib                      	0x000000010c012b3f g_main_loop_run + 191
7      libpbd.dylib                                    	0x000000010bcee42e BaseUI::main_thread() + 254
8      libglibmm-2.4.1.dylib                  	0x000000010bf16373 (anonymous namespace)::call_thread_entry_slot(void*) + 35
9      libglib-2.0.0.dylib                      	0x000000010c03dd0a g_thread_proxy + 90
10    libsystem_pthread.dylib              	0x00007fff759e42eb _pthread_body + 126
11    libsystem_pthread.dylib              	0x00007fff759e7249 _pthread_start + 66
12    libsystem_pthread.dylib              	0x00007fff759e340d thread_start + 13
```

While the GUI thread has already closed the MIDI ports in ~FaderPort
and proceeded to take down the FP GUI.

```
Thread 0:: Dispatch queue: com.apple.main-thread

47    libgtkmm-2.4.1.dylib                    	0x000000010ca69a56 Gtk::ComboBox::~ComboBox() + 22
48    libardour_faderport.dylib          	0x000000011055a6e5 ArdourSurface::FPGUI::~FPGUI() + 149
49    libardour_faderport.dylib          	0x000000011055a8b5 ArdourSurface::FPGUI::~FPGUI() + 21
50    libardour_faderport.dylib          	0x0000000110551396 ArdourSurface::FaderPort::tear_down_gui() + 70
51    libardour_faderport.dylib          	0x0000000110536507 ArdourSurface::FaderPort::~FaderPort() + 535
52    libardour_faderport.dylib          	0x0000000110536b9e ArdourSurface::FaderPort::~FaderPort() + 14
53    libardour.dylib                              	0x000000010ac13f08 ARDOUR::ControlProtocolManager::drop_protocols() + 168
54    libardour.dylib                              	0x000000010b0ba7e4 ARDOUR::Session::destroy() + 212
55    libardour.dylib                              	0x000000010b0bbe01 ARDOUR::Session::~Session() + 113
56    libardour.dylib                              	0x000000010b0bdb5e ARDOUR::Session::~Session() + 14
2021-04-07 02:25:52 +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
bbb6851468
Subscribe to pretty-port name changes (surfaces) 2021-01-18 03:18:20 +01:00
bf894d80fb
NO-OP: remove unused #includes 2020-03-21 19:46:38 +01:00
3e77680a57 surfaces transport hotfix: surfaces should query the transport state via BasicUI, when possible 2020-02-23 09:02:25 -06:00
938e65f12a use MIXBUS approach to User button for Faderport (it's just a button, not a modifier 2020-02-20 12:53:57 -07:00
b5f2aed234 Faderport(1): fix pan_azimuth direction by setting Rotary flag. 2020-02-20 12:25:51 -06:00
06b2eb1c27
Explicitly use OSX
Previously this was inherited via PBD.

On MacOS/X,  this adds
  "-undefined dynamic_lookup -flat_namespace"
and various "-framework .." options to linkflags

Without this flag, .dylibs fail to link usually because
of missing `-lintl` (Undefined symbols: "_libintl_dgettext")

On other systems this is a NO-OP:
CFLAGS_OSX, CXXFLAGS_OSX and LINKFLAGS_OSX
are only set on the darwin platform.
2020-01-25 04:07:41 +01:00
d79d2807b1 expand use of new BasicUI API for transport button state to all control surfaces 2019-12-29 18:53:22 -07:00
52aa405ce3 use new Session API to deal with transport state
Transition to use BasicUI button state API to come
2019-12-29 18:43:51 -07: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
Johannes Mueller
ce47ec411a Make use of ActionModel::build_custom_action_combo() 2019-04-20 22:36:51 +02:00
Johannes Mueller
73f8b8d982 Use ActionModel::build_action_combo() for Control Surfaces that need it 2019-04-20 15:25:32 +02:00
Johannes Mueller
5b7bcec529 Use ActionModel API in the Control Surfaces that can make use of it 2019-04-20 15:25:32 +02:00
Johannes Mueller
8cbbd3dd00 Fadeport: Fix User button state save and restore
Since we (since ddfc37e4) set the UserDown flag for the User button actions, we
need to set it also when we lookup actions when saving the state.
Furthermore, we need also look for the UserDown flag, when we set the state
of the configuration combos for the User button.
2019-04-20 00:15:20 +02:00
2f91bdfa53
NO-OP: <tab> after <space> fixes in libs 2019-04-13 19:19:29 +02:00
6d335be418
Indicate automation-latch as "touch" on the FP1
The FP1 does not have a dedicated "Latch" control, but this does
at least consistently indicate that Touch, rather than show some
arbitrary LED state.
2019-04-01 22:30:16 +02:00
acbd12c885 fix all surfaces' available action menus
Note: this replicated code is ridiculous
2019-03-20 14:23:23 -07:00
94d859e30d ActionManager::get_all_actions() no longer includes <Actions> in the paths it returns, part 2 (surface support) 2019-03-20 11:15:34 -07:00
4667ca962b Mixer/show-editor is now Common/show-editor 2019-03-19 10:42:05 -05:00
a3986f703d reorder #include directives 2019-03-18 22:58:24 -07:00
7054b2ffc7 switch remaining use of Common/ToggleMixerList to Mixer/ToggleMixerList 2019-03-18 10:58:02 -07:00
23a98e5f4d remove references to "Editor_menus" which is an action that no longer exists 2019-02-16 13:12:45 -07:00
56e950b189 rename Main_menu action to Main menu
So that if it ever does show up in a list, it looks nice
2019-02-16 13:05:41 -07:00
4b0f0f913b fix Window->Common move for show-mixer 2018-12-10 18:40:16 -05:00
00df619d21 use ActionManager namespace, rather than ActionMap objects 2018-12-10 08:34:01 -05:00
0f6e67a32f Faderport(Classic): Add Record-PreRoll and Record-CountIn actions to the footswitch selections. Could make this menu access -any- action, but I think a short useful list of transport items is better in this case. 2018-10-07 10:10:03 -05:00
ccccac7a10 Fix the User button for Mixbus; we use it as a button, not a modifier. 2018-10-04 19:29:14 -05: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
ddfc37e42a fix binding to long-press for User button on FaderPort 2018-03-26 13:56:50 -04:00
30b087ab3d globally change all use of "frame" to refer to audio into "sample".
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode
and video in order to keep the legible
2017-09-18 12:39:17 -04:00
fff9a3cc7f Allow FaderPort to select VCAs 2017-08-06 22:18:01 +02:00
2d60a69c2d Consolidate ctrl surface code 2017-08-05 01:28:11 +02:00
b5e0b5b09f PortManager::unregister_port() must be called with process lock
This fixes "Failed to register <surface> port" when re-loading a session.
2017-07-28 20:15:15 +02:00
fde0e293a3 Remove unused "mark" parameter from stop_touch() API 2017-07-24 01:59:18 +02:00
55df5b39bc Prepare removal of redundant get_user/set_user API. 2017-06-21 18:13:41 +02: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
f28bfb2648 Use XMLNode::get/set_property API in FaderPort class 2017-04-19 09:36:54 +10:00
dc98fa6f3f Fix Faderport Proj button (show-editor action) 2017-03-14 09:27:59 -05:00
6af51b52ff Use dedicated "show editor/mixer" actions 2017-03-10 17:52:42 +01:00
f21111d7df Faderport uses the Mix and Proj buttons to summon mixer and editor; there is no longer a Toggle. 2017-03-09 14:29:08 -06:00
f1e6cc50b0 Revert "libs: debug output for faderport/editor mixer strip sync"
This reverts commit 6fb91b1ac2.
2017-02-25 19:56:51 +01:00
6fb91b1ac2 libs: debug output for faderport/editor mixer strip sync 2017-02-24 23:10:03 +01:00
2b9525c991 try to make sure faderport shows the same strip as the editor mixer strip 2017-02-24 22:54:25 +01:00