Commit Graph

806 Commits

Author SHA1 Message Date
CalebJPotter
e64fdcfb55 fixes issue where monitor section gets stuck on mute
This mute button wasn't meant to mute the monitor section in the first
place.
2022-03-17 15:37:07 -06:00
Caleb Potter
643342995d fixes issue where MCP controller strips got stranded switching banks
This commit fixes an issue where if your controller was currently on a
bank not near the first few tracks, and you then deleted tracks, the
controller bank buttons would appear unresponsive because of the
"if (initial >= sorted.size())" check in switch_banks().
This would occur when the difference between the _initial_bank and
whatever sorted.size() returns was greater than or equal to strip_cnt.
For example, if your _initial_bank was 48, your strip_cnt was 24 and you
had 24 tracks after the deletion, then the above conditional would evaluate
to true and exit out of switch_banks BEFORE actually switching the bank,
effectively stranding the controller unless you added enough tracks back.
2022-03-17 15:37:07 -06:00
Caleb Potter
e89d85f776 remaps button handlers specific to iCon QCon ProG2
If the QCon ProG2 is selected as the device profile, then the button map
will be built with handlers that map specific to the iCon QCon ProG2
controller.
2022-03-17 15:37:07 -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
381276e862 adds support for iCon QCon ProG2 controller
This commit does no remapping, but it adds the Pro G2 as a value in the
device profiles.
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
f58b8e3cb4 fix accidental insertion of "x1" 2022-02-09 10:08:01 -07:00
Paul Davis
e77e3b35b8 mackie: fix crash when using thread-local tempo map
TempoMap::use() assumes the thread_local pointer has been set up. This
is not the case for the control protocol event loop, so call ::fetch()
instead which does not require this assumption (and sets the thread_local
pointer too, though nothing else in the Mackie code uses it)
2022-02-09 10:08:01 -07:00
Mads Kiilerich
8bb91099c5 wscript: drop configure statements already present in the top level wscript
Avoid repeated pointless configure messages like:
Checking for 'g++' (C++ compiler!)                   : /usr/lib64/ccache/g++
Checking for 'gcc' (C compiler)                      : /usr/lib64/ccache/gcc
2022-01-22 22:19:03 +01:00
Robin Gareus
16511974e2 Fix class/struct mismatch C++ ABI [-Wmismatched-tags] 2022-01-10 00:06:24 +01:00
Paul Davis
12847b0125 remove Session::bbt_time() and use TempoMap::use()->bbt_at() explicitly everywhere 2021-12-14 21:59:33 -07:00
Marijn Kruisselbrink
0e799357a8 Fix crash in mackie strip code.
Strip::notify_property_changed accesses _stripable without verifying
that is not null. However it is possible for this to be null, so
add a null check.
2021-12-13 21:03:38 -07:00
Todd Naugle
d04d25e7c7 Mackie Control: Clean up detection of QCon master display and meter.
Only enable the master display and meter modes for Qcon devices if this
surface is in the master position. Extenders don't have master meters
or master displays.
2021-12-13 21:26:45 -06:00
Todd Naugle
d60a5187bd Mackie Control: Fix detection of QCon Extenders so 2nd LCD is correct
Logic to detect an extender has to be based on if this surface object is
the master position. Has master fader is true for all surfaces in this
"device".
2021-12-13 21:25:07 -06:00
Bruno Vernay
e3836e1162 Typo in code Paramater 2021-10-30 23:02:04 +02:00
Paul Davis
9e763c2672 remove all dangling event-loop-precall code 2021-10-11 17:48:53 -06:00
Paul Davis
11af6253f5 mackie: NOOP: fix whitespace 2021-08-13 12:51:31 -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
Paul Davis
f67029bd02 random commit to facilitate trivial move of work from laptop back to main system 2021-08-13 12:51:29 -06:00
Paul Davis
086e48796c surfaces: first round of conversion to use timeline types 2021-08-13 12:51:29 -06:00
Paul Davis
f4490f54c5 change Timecode::BBT_Time to use Temporal namespace, plus a couple of other minor changes to enable compilation
This still uses the tempo map object in libs/ardour, not the new one in libs/temporal, and isn't likely to be functional
(though it could be)
2021-08-13 12:51:28 -06:00
Todd Naugle
bd008fb87c Mackie Control: Fix logic in timecode display update
Old and new strings are compared before sending to keep traffic down. To
ensure that we send all the required characters be sure to init the last
value to characters that are never going to appear in a real string.

Space is a bad choice since it is a valid character. Use NUL instead.
2021-08-10 16:20:36 -05:00
Todd Naugle
4001fc2cff Mackie Control: Use space as replacement for invaild characters on TC disp 2021-08-10 16:17:11 -05:00
Todd Naugle
563309f6d1 Mackie Control: Fix one off error in timecode display that broke spaces
Ignored spaces and allowed character 0x60 which is not valid on the display
2021-08-10 16:16:08 -05:00
Todd Naugle
8cf7204917 Mackie Control: Use selected device's info when building the Keys dialog
The device info file allows key names and values to be configured in each
device file. Use that information when building the Functions Keys tab in
the Mackie protocol setup dialog.
2021-08-06 12:18:24 -05:00
Todd Naugle
c1dddb1b25 Mackie Control: Be consistent and take the surfaces lock when iterating.
Some places in the code take the lock, others don't. This makes everyone
take the lock.
2021-08-03 16:26:26 -05:00
Todd Naugle
a84543bcc7 Mackie Control: Don't crash when the master is on the right
While surfaces are being created it is possible to have surfaces, but
not have a master surface yet. This happens when the config calls
for extenders to the left of the master section.  Don't assume that
if we have surfaces, the master surface is available.
2021-08-03 16:26:26 -05:00
Todd Naugle
454b330950 Mackie Control: Hold the surfaces lock while resetting the master_surface 2021-08-03 16:26:26 -05:00
Todd Naugle
a22fe3cdc8 Amend 285bb4ac7f: remove incomplete code 2021-07-19 20:32:11 -05:00
Todd Naugle
285bb4ac7f Mackie Control : Improve debug trace output by skipping meter write output 2021-07-19 12:25:27 -05:00
Todd Naugle
581589f080 Mackie Control: Don't call port write directly since it bypasses active chk
This keeps the master fader from sending midi output before everything
is initialized.
2021-07-19 12:24:36 -05:00
Todd Naugle
45f9b45bff Mackie Control Surface: Improved support for iCON QCon Pro X
Support the second LCD on the Pro X and use it for channel strip labels.

Support the stereo master meters on the Pro X
2021-07-02 16:00:51 -05:00
Todd Naugle
7a5ccdd3c3 Mackie Control Surface: Move meter deflection calc to a function. 2021-07-02 15:56:11 -05:00
Todd Naugle
e94239cc92 Mackie Control Surface: Update the meters even when the transport is stopped 2021-07-02 15:53:20 -05: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
Todd Naugle
c63918ec68 Clear Mackie Control surfaces once connected.
This gets the surface in a known state. Otherwise a previous application
or run of ardour may have left LEDs on that are not being used.
2021-07-02 15:43:37 -05:00
Robin Gareus
b35a8f6626 Fix Wsign-compare, consistently use microseconds_t 2021-06-29 02:04:02 +02:00
Paul Davis
b20a541d7e change PBD::microseconds_t to a signed type and check for -1 in TimingStats::update
This may help a Windows issue with the return value of QueryPerformanceCounter
2021-06-28 14:47:48 -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
Paul Davis
9cbaa31c7e libs fix for get_microseconds() move to libpbd 2021-06-26 18:27:39 -06:00
Todd Naugle
3a3fcd0d2d Don't crash if master fader is not avaliable.
If the wrong device profile is selected (ex Xtouch One) but another device
is connected (Xtouch), it is possible to have a master fader on the
device, but not in the code. This would then cause a crash when the
master fader was touched.

This just protects from a wrong configuration.
2021-05-13 12:08:09 -05:00
Paul Davis
0fc50b9bf2 Mackie Control: set select state correctly during initial setup 2021-05-11 15:55:04 -06: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
5957e14259 Remove unused #include<> (2/2)
PBD::stacktrace() is not used nor needed by default.
It should be used sparingly.
2021-05-05 17:57:16 +02:00
Paul Davis
273049a5a1 Mackie Control: if master surface has a jog wheel *and* a scrub button, button toggles between scroll and shuttle behavior 2021-05-04 21:30:22 -06: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