Firstly, here's a video of what I'm blathering on about:
If you like the idea of controlling Logic plugin parameters with a Stream Deck, this may be of interest to you.
I can think of many uses for this, the most obvious being plugin UI button-pushes (without having to look at the screen). My personal use-case is rather specific: I have pretty bad wrist issues and use a nObcontrol to reduce time spent on the mouse. In combination with generic and plugin-specific Stream Deck profiles, I can now tweak EQs, compressors and anything else I can think of, without having to look at the screen, with just a few buttons and a big nOb. Ahem...
Blank Trigger Apps
This technique relies on a method of triggering Stream Deck profiles by opening blank trigger apps. Make a "Stream Deck Triggers" folder somewhere on your drive and copy the blank app below there.
Blank App.zip (51.2 KB)
Duplicate and rename it any time you want to add a profile trigger.
You will want to set up the following blank apps and associate them with their respective Stream Deck profiles in order to get started:
- One that triggers your Logic Pro profile. This is only necessary for Macro 2. If using Macro 1, you will simply press the back button to return to your main Logic profile.
- One that triggers a generic plugin control profile (see below for more details).
- Any number of blank apps that trigger plugin-specific profiles. You have to name these according to the plugin's OCR scan result, which will usually be the same as its proper name... but not always. More on this later.
For each of these macros, pay attention to the green and yellow actions when setting up.
Logic SD Profile Switcher.kmmacros (339.4 KB)
The main macro group.
Force Quit Trigger Apps.kmmacros (24.0 KB)
One macro in its own group.
Profile Switch - Clean Variables.kmmacros (28.2 KB)
Put this in your Global Macro Group.
Macros 1-7, contained within the main macro group:
The first macro can be triggered by a dedicated Stream Deck button (or hotkey), and performs an OCR scan of the selected plugin window, then opens the corresponding blank trigger app, which in turn triggers a Stream Deck profile. This, believe it or not, is the simplest version of recalling profiles and I no longer use it, now that the process is entirely automated. However, if for some reason the full automation doesn't suit your way of working, this gives you the same basic functionality. When I was using it, I set up a folder on my Stream Deck called Generic Controls. As you can see, it includes a button called Plugin Profile that activates this macro. So, any time the generic controls aren't enough for a particular plugin, you can press the button and it will switch the Stream Deck profile to one you've set up specifically for that plugin. I use the excellent KMLink plugin to trigger Keyboard Maestro macros using Stream Deck buttons.
This is my Generic Controls Stream Deck folder:
Here's one of my plugin-specific Stream Deck profiles. I've chosen Waves Scheps Omni Channel as an example:
This is the main version and the one I'm currently using myself. It performs the OCR scan and automatically switches Stream Deck profile. If you select a plugin that has a dedicated profile, it will switch to that. If you select one that doesn't (but is on the Whitelist), it will load your Generic profile. If you click away from the plugin UI and back to Logic, it will load your Logic profile. If you click on a plugin that isn't on the whitelist, nothing will happen.
NB: If a plugin's OCR result is not entered into the Whitelist during setup, it will not trigger an automatic profile switch.
This is the OCR submacro, which needs to be selected in Macro 2.
Macros 4 & 5
These sub-macros prevent feedback loops that would repeatedly trigger macros 2 and 3 over and over because of window focus changes. You will select these when setting up Macros 2 and 3 respectively, in the actions marked out in yellow.
Macros 6 & 7
Macros 6 & 7 are Whitelist submacros. For each plugin you would like to trigger a specific or generic profile, copy its OCR scan result, one-per-line. I have pre-filled the Window whitelist, which prevents the macros triggering if a plugin is not open, according to my own requirements. Add to this if need be.
Force Quit Trigger Apps
This ensures that trigger apps quit properly after having run. Put this in a global macro group and pay attention to the green actions where you will select the trigger apps to be quit. Thus far, I've found that the only ones I've had to specify to be quit are the Logic and Generic profiles.
Profile Switch - Clean Variables
As a quirk of how I've got Macro 2 to work, this group is necessary to keep your Logic profile from becoming inactive when you switch to another app and then back to Logic.
"So, why can't I just use the plugin name when naming the trigger apps or adding lines to the Plugin Whitelist?"
You may notice that some plugins return garbled OCR results. No idea why, but in my experience, it will be the same garbled result every time and therefore still acts as a good 'fingerprint' for the plugin. Therefore, you need to make sure the macro is looking for the OCR result, which may not necessarily be identical to the plugin's proper name. As an example, on my system the plugin SketchCassette II comes back OCR'd as "Biola Orso".
Tip: to find the plugin's OCR result, have the KM preferences window visible while allowing the OCR to run on a plugin in Logic. You will see the OCR result appear under the PluginName variable.