Commit graph

156 commits

Author SHA1 Message Date
Paul Davis
086e48796c surfaces: first round of conversion to use timeline types 2021-08-13 12:51:29 -06:00
Robin Gareus
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
David Robillard
74e21e942e Remove unused variables (Wunused-variable) 2021-05-30 20:09:35 -04:00
Todd Naugle
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
Robin Gareus
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
Robin Gareus
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
Robin Gareus
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
Robin Gareus
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
Robin Gareus
eed07770e1
Fix Faderport1 port-connection (amend bbb68514) 2021-01-22 18:46:17 +01:00
Robin Gareus
bbb6851468
Subscribe to pretty-port name changes (surfaces) 2021-01-18 03:18:20 +01:00
Robin Gareus
bf894d80fb
NO-OP: remove unused #includes 2020-03-21 19:46:38 +01:00
Ben Loftis
3e77680a57 surfaces transport hotfix: surfaces should query the transport state via BasicUI, when possible 2020-02-23 09:02:25 -06:00
Paul Davis
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
Ben Loftis
b5f2aed234 Faderport(1): fix pan_azimuth direction by setting Rotary flag. 2020-02-20 12:25:51 -06:00
Robin Gareus
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
Paul Davis
d79d2807b1 expand use of new BasicUI API for transport button state to all control surfaces 2019-12-29 18:53:22 -07:00
Paul Davis
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
Robin Gareus
09acad190b
Faderport: use well-known-controls API 2019-09-25 14:02:45 +02:00
Robin Gareus
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
Robin Gareus
2f91bdfa53
NO-OP: <tab> after <space> fixes in libs 2019-04-13 19:19:29 +02:00
Robin Gareus
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
Paul Davis
acbd12c885 fix all surfaces' available action menus
Note: this replicated code is ridiculous
2019-03-20 14:23:23 -07:00
Paul Davis
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
Ben Loftis
4667ca962b Mixer/show-editor is now Common/show-editor 2019-03-19 10:42:05 -05:00
Paul Davis
a3986f703d reorder #include directives 2019-03-18 22:58:24 -07:00
Paul Davis
7054b2ffc7 switch remaining use of Common/ToggleMixerList to Mixer/ToggleMixerList 2019-03-18 10:58:02 -07:00
Paul Davis
23a98e5f4d remove references to "Editor_menus" which is an action that no longer exists 2019-02-16 13:12:45 -07:00
Paul Davis
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
Paul Davis
4b0f0f913b fix Window->Common move for show-mixer 2018-12-10 18:40:16 -05:00
Paul Davis
00df619d21 use ActionManager namespace, rather than ActionMap objects 2018-12-10 08:34:01 -05:00
Ben Loftis
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
Ben Loftis
ccccac7a10 Fix the User button for Mixbus; we use it as a button, not a modifier. 2018-10-04 19:29:14 -05:00
Paul Davis
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
Paul Davis
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
Paul Davis
ddfc37e42a fix binding to long-press for User button on FaderPort 2018-03-26 13:56:50 -04:00
Paul Davis
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
Robin Gareus
fff9a3cc7f Allow FaderPort to select VCAs 2017-08-06 22:18:01 +02:00
Robin Gareus
2d60a69c2d Consolidate ctrl surface code 2017-08-05 01:28:11 +02:00
Robin Gareus
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
Robin Gareus
fde0e293a3 Remove unused "mark" parameter from stop_touch() API 2017-07-24 01:59:18 +02:00
Robin Gareus
55df5b39bc Prepare removal of redundant get_user/set_user API. 2017-06-21 18:13:41 +02:00
Paul Davis
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
Tim Mayberry
f28bfb2648 Use XMLNode::get/set_property API in FaderPort class 2017-04-19 09:36:54 +10:00
Ben Loftis
dc98fa6f3f Fix Faderport Proj button (show-editor action) 2017-03-14 09:27:59 -05:00
Robin Gareus
6af51b52ff Use dedicated "show editor/mixer" actions 2017-03-10 17:52:42 +01:00
Ben Loftis
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