Commit Graph

183 Commits

Author SHA1 Message Date
Ben Loftis 8fd8eaa01d UF8: parameterize the device name and pass to MackieControlProtocol 2023-08-26 17:34:04 -05:00
Robin Gareus c0366a5f13
MCU/UF8: Continued work to special case Mackie surface
* Use dedicated port-names for UFx
* Do not show SSL-UFx device-info files in MCU
* Fix Window namespacing/missing symbols
* Address Windows ambiguous symbols (Button, Surface)
  Those used to have a Mackie:: prefix, now they need
  MACKIE_NAMESPACE

When re-opening the GUI, there is still a somewha mysterious warning:
```
glibmm-WARNING **: file value_custom.cc: (Glib::custom_boxed_type_register): The type name `glibmm__CustomBoxed_N13ArdourSurface6NS_UF86Button2IDE' has been registered already.
```
2023-08-25 18:09:27 +02:00
Ben Loftis ec365820d8
MCU/UF8: reuse and special-case Mackie ctrl surface for SSL-UF8
This adds a unique namespace to the MCU source code, so it can be
compiled multiple times resulting in different ctrl surfaces.
2023-08-24 19:19:10 +02:00
Robin Gareus 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
Paul Davis f718279949 surfaces & event loops: i really mean no more request buffer factories 2023-04-21 13:55:58 -06:00
Paul Davis 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
Todd Naugle 0b50bec6f4 MCU: Update view modes for Cue, Foldback, and VCA
This changes the function of the Inputs, Instruments, and Outputs
buttons as follows:

Inputs = Cue Tracks
Instruments = VCA
Outputs = Foldback Busses
2023-03-13 12:21:49 -05:00
Paul Davis 9403b116ad Mackie: make AudioInstruments button work correctly
Also toggle Global View LED appropriately
2022-12-10 10:32:47 -07:00
Todd Naugle db8262bd7b
Mackie Control: Use view names from Mackie spec and define them all 2022-08-05 00:50:27 +02:00
Paul Davis 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
Paul Davis 7bf89ce109 Constification: make Stateful::get_state() const, with all other required const-ness added (libs) 2022-04-06 21:56:59 -06:00
Caleb Potter ad4475fe7a adds iCon QCon ProG2 specific MCP button handlers
Adds function to clear solo and (with shift) mute all channels.Adds
function to save and (with shift) save as. Adds function to toggle all
processors on selected track. Adds functions to select track to the
left/right. Adds function to add marker and (with shift) remove marker at
playhead. Adds function to undo without needing shift modifier.
2022-03-17 15:37:07 -06:00
Caleb Potter b846356f87 adds MCP button to toggle between master fader and monitor fader
Adds an MCP button function to switch the master fader on the controller
between the session master fader and (if enabled) monitor fader.
2022-03-17 15:37:07 -06:00
Caleb Potter b6a1144472 adds a few general purpose MCP button functions
Adds a function to go to the next and previous marker. Adds a function to
redo (without requiring a shift modifier). Adds a function to open a
project.
2022-03-17 15:37:07 -06:00
Caleb Potter d1f4679abc adds support for iCon Platform M+ controller
Adds a device profile for iCon Platform M+ controller and new function
that flips between editor and mixer window. This function is mapped to
"mixer" button on controller.
2022-03-17 15:37:07 -06:00
Caleb Potter fc961f1622 adds support for MCP device-specific button to function remapping
Adding this function so that different devices can remap their buttons
to functions based on device profile.
2022-03-17 15:37:07 -06:00
Paul Davis 9e763c2672 remove all dangling event-loop-precall code 2021-10-11 17:48:53 -06:00
Paul Davis ce7ea4ec36 Use glib event callback in Mackie Control support to set thread-local variables 2021-08-13 12:51:30 -06:00
Todd Naugle 41ac0cb753 Mackie Control Surface: Correctly handle the Monitor section being removed.
Adding a Monitor section updated the surface but removing one did not.
2021-07-02 15:51:53 -05:00
Paul Davis 3f30a0ad39 more code rearrangement ... old gcc/mingw does not allow Enum::Value 2020-04-07 18:32:45 -06:00
Paul Davis 595be0e5e9 try some rearrangement to fix old mingw builds 2020-04-07 18:15:51 -06:00
Paul Davis 893e835dca NOOP: whitespace 2020-04-07 18:15:51 -06:00
Phil 69067b9d99 add plugin support for mackie units
Main features: Plugin (Select & Edit)

1.  Plugin Select: When a track is selected that has PluginInserts, pushing the "Plug-In" button on a mackie will list these across the strips. Clicking a vpot of a strip enables editing the parameters of this selected plugin.
2. Plugin Edit: When a Plugin is selected for editing, the input parameters of the plugin are shown across the channel strips and the vpot is assigned the corresponsing AutomationControl for the parameter.

Minor features

- When the number of plugins or the number of parameters exceeds the number of strips available on the surface, one can flip through "pages" of views using the Cursor Left and Right keys (this logic I took from http://www.emagic.de/media/support/content/manuals/LogicControl_en.pdf)
- When in the Plugin Select mode, rearranging the plugins in the mixer strip is reflected on the surface.
- When in Plugin Edit mode, rearranging the plugins in the mixer strip still retains the edit view of the selected plugin (rearranging does not take away the current subview)
 - When removing a plugin in the mixer strip, this is reflected in Plugin Select, while the view jumps to Pan/Surround (the None subview) when in Plugin Edit mode.
- Removing a track resets the subview to None
- When in a Subview that is track-specific (Track, EQ, Send, Plug-In, Inst), selecting a different track retains the subview but updates the channel displays and vpot assignments accordingly. When in Plugin Edit mode for track A, and track B is selected, it changes to Plugin Select mode for track B (if plugins are present).
2020-04-07 14:35:09 -06:00
Robin Gareus 365f6d6337
Update plugins/addons GPL boilerplate and (C) from git log 2019-08-03 15:53:18 +02:00
Ben Loftis ae3d9deefb Support for the iCON Qcon mcp device - sysex strings. Submitted by Michal Barhon. 2018-02-01 14:39:59 -06: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
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
Ben Loftis 8ba868e933 MCU: F-keys are reserved only for user-defined actions; no need for explicit handling. 2017-05-12 15:43:55 +02:00
Paul Davis bb74bba1c7 mackie: catch data on what presentation info aspects changed; don't change banks on a PI change 2017-02-01 10:27:34 +01:00
Paul Davis 44fcbd988c mackie: ensure that the strip where select was pressed ends up as the first_selected_stripable 2016-07-06 21:40:29 -04:00
Paul Davis 2047ee527c restore/extend/simplify ControlProtocol API to allow tracking of selection 2016-07-06 13:39:10 -04:00
Paul Davis 291aec468f use session stripable selection API
and remove old ControlProtocol signals to talk to GUI etc.
2016-07-04 12:45:53 -04:00
Paul Davis a8d7b0fca3 redesign/reimplement selection knowledge in MackieControlProtocol object
strips listen to Stripable::presentation_info().PropertyChange, and forward selected status changes
to the MCP object
2016-06-12 08:19:16 -04:00
Paul Davis 4b7bbacaaa make mackie surfaces aware of VCAs 2016-05-31 15:30:42 -04:00
Paul Davis c34ad3a723 convert Mackie Control Surface support to use Stripable, not Route 2016-05-31 15:30:42 -04:00
Paul Davis 8346fab567 remove irrelevant, out of date and incorrect comment 2016-05-31 15:30:42 -04:00
Paul Davis e0ff70cf86 first vaguely working version using PresentationInfo
remote control ID and "order keys" have been removed.
2016-05-31 15:30:42 -04:00
Paul Davis 37d6265e13 mackie: try to improve logic and management of device profiles 2016-02-04 11:24:26 -05:00
Ben Loftis aac6a59071 Mackie Protocol: Move buttons to more accurately reflect default mcp legends.
Modifiers are only modifiers (no actions directly on modifiers).
Punch indicators moved to Drop/Replace.
Added Save, Undo, Cancel (select none) and Enter (select all tracks)
Fixed click button.
Up&Down buttons now move the selected track up & down.
2016-02-03 18:11:21 -06:00
Paul Davis 36b11098a2 mackie: substantial reworking of flip mode with large chunks of code no longer used.
Flip mode only works in Sends subview mode.

Display is incorrect when flipped - vpot is still updated by send level changes. TO BE FIXED.
2016-02-01 22:52:22 -05:00
Paul Davis 5eccbbfbd6 mackie: fix stupid thinko, and use BaseUI::access_action() to correctly accesss GUI actions 2016-02-01 12:20:55 -05:00
Paul Davis 3631cc1532 mackie: remove Trim pot mode, and add skeleton for TrackView subview mode 2016-01-31 13:20:18 -05:00
Paul Davis 6780b7eb54 mackie: make nudge work as modifier and on its own 2016-01-31 11:17:23 -05:00
Paul Davis af1028bd90 mackie: make marker button work as Mackie intends it (as a modifier for rewind/ffwd) 2016-01-31 11:01:41 -05:00
Paul Davis 2b56dc17e3 mackie: add "clean" method to invoke GUI actions from button events, in code 2016-01-31 11:00:16 -05:00
Paul Davis d5a8825ce8 mackie: basically (fully?) operation fader automatio control for first selected route 2016-01-29 18:37:03 -05:00
Paul Davis da35f58218 mackie: initial attempt at making automation-related buttons set fader automation state for selected routes 2016-01-29 16:29:52 -05:00
Paul Davis 42fbb96674 mackie: make group button (appear) to do something 2016-01-29 16:15:41 -05:00
Paul Davis 54c3c9e494 prevent bank/channel switching past the end of the available routes; do nothing when a view mode finds no matching routes 2016-01-28 16:27:33 -05:00
Paul Davis ea895efb97 mackie: improvements to display when switching subview modes 2016-01-28 15:08:26 -05:00