Triggering Stream Deck profiles for Logic Pro plugins

EDIT: I've been finessing this, and have made some significant improvements. If anyone wants the latest version, let me know. As you might have gathered, I'm quite fastidious, and I'll do another post, but only if there's interest.

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. This is my first posted macro, so if I've presented it poorly or made any mistakes please let me know and I'll try to improve on this post by editing it. This may seem long-winded but I tried to explain this concept previously and some people had a hard time understanding it, so I feel the need to be thorough.

I put this together, with generous help from some very kind forum members, to get Stream Deck to automatically show profiles when plugin windows are selected in Logic Pro. 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 apps that @ncbasic introduced me to. Make a "Stream Deck Triggers" folder somewhere on your drive and copy the blank app below there. Duplicate and rename it (details on renaming in the comment at the top of Macro 2) any time you want to add a profile trigger. All you have to do is create a new profile in Stream Deck and set a blank app as the 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.

Blank (51.2 KB)

I'm sure someone with more experience could add a touch of elegance, but I'll detail the way I have got it working here. For each of the macros, pay attention to the red-coloured actions when setting up.

Macro 1

The first macro can be triggered by a dedicated Stream Deck button (or hotkey), and performs an OCR scan (thankyou @JMichaelTX!) of the selected plugin window and opens the corresponding blank trigger app, which in turn triggers a Stream Deck profile. This is the simplest version of recalling profiles and I don't use it now that I have the process automated. However, if for some reason Macro 2's 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:


Macro 2

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. See the brief readme inside Macro 2 for slightly more info.

Macro 3

As a quirk of how I've got Macro 2 to work, Macro 3 is necessary to keep your Logic profile from becoming inactive when you switch to another app and then back to Logic. Just put this in a macro group that is available in all apps.

Macro 4

This submacro prevents a feedback loop that keeps triggering the macro over and over because of window focus changes. You will select this when setting up Macro 2.

LPX:SD Macros.kmmacros (50.7 KB)

Known Issues

  1. Switching directly between two plugins with dedicated Stream Deck profiles while using Macro 2 will trigger the Logic profile rather than the profile for the second plugin. This means you must click the Logic UI before clicking on the second plugin in order for its profile to trigger. I don't know why this is. If you disable the Load Logic SD Profile group in Macro 2, it eliminates this problem (but obviously creates another), showing that somehow this group, when enabled, is still active, despite the DoNotRun variable created as part of Macro 4. It's rare that I have two plugins with dedicated Stream Deck profiles open at the same time, so this isn't a really a problem for me.

  2. This isn't really an issue as it doesn't affect function, but you may notice that some plugins return garbled OCR results. Again, no idea why. In my experience, they will be the same garbled result every time, so they still act as a good 'fingerprint' for the plugin. I'm just mentioning it here so that you understand that a plugin's Whitelist entry may not match its proper name. As an example, on my system the plugin SketchCassette II comes back OCR'd as "Biola Orso". :man_shrugging:t2: