Toggle SonarWorks in LUNA
Hi folks, I've just started using SoundFlow and apologize if this has been answered elsewhere. I'm trying to implement the Macro suggested in another thread for toggling on/off SonarWorks for mixdown in PT, but hoping to accomplish this in LUNA. I don't need it to trigger the mixdown, just to toggle SonarWorks off when I mixdown. Ideally, I'd like to trigger the macro to run when clicking the "mixdown" button in LUNA. For now, just being able to run the macro would be awesome.
I've got the steps in place "Activate App: LUNA" "Track Scroll to View: Master" "Toggle bypass Insert on Track: Master: 6"
Problem is when I run the script (from within LUNA using my keyboard trigger) I'm getting an error message that "Parent's UIElement was null".
It looks like LUNA isn't even allowing for the selection of the Master track (as I made sure to have another track selected).
Does anyone have a work around?
Also: with MCU support just implemented, I can definitely select the Master track from my control surface when I scroll to the end of the Mixer window. Just not sure if this is relevant as I'm still trying to understand how SoundFlow works.
- AAdz Beath @Adz_Beath
Heya Chris,
The macros you're using are specific to Protools. 'Track Scroll and Toggle'. Their interactions with Luna are invalid and throwing the error - If you convert to script you'll see 'sf.ui.protools' -- and that's as far as the script will go.
I'm faffing with an idea atm that could work for you.
Should be able to share something with you soon.Adam.
- AAdz Beath @Adz_Beath
I'm not a Sonarworks user but I did notice that it has Midi Mapping for the internal Bypass - A simple solution could be to try mapping that to a Midi button natively. If not natively then you may need to create a dummy midi input track (empty instrument) in Luna and route the midi output to the master/main (it'll have to have a midi capable plugin on an insert in to be available as an option).
If that works then you can trigger it from SF alongside whatever other commands for the process.
This might be a more elegant solution than what I'm looking into for things that don't have midi or MCU.
Let me know if it works for you.- CChris Wilson @Chris_Wilson
This is very helpful, Adam! Thank you - I'm going to try to map it to my keyboard controller. We'll see if that works. This is all new to me, but it seems very cool.
As for the scripting, is it as simple as replacing 'sf.ui.protools' with 'sf.ui.luna'??? It can't be that easy, can it?
- AAdz Beath @Adz_Beath
Unfortunately not ☹️
- AIn reply toChris_Wilson⬆:Adz Beath @Adz_Beath
Here's a simple script that will do what your after if the Midi implementation doesn't work.
As Luna doesn't support the UI elements selection - It's a workaround using a structure of mouse clicks and key commands so there are some caveats/prerequisites.For this to work the following has to be taken into account:
- Luna's main window must be positioned in the same place/desktop every time. Fullscreen or in a unique offset position... however you work. Make sure that your 'default' positioning is how it will remain when you collect your own coordinates. - This is because the click coordinates are relative to the entire desktop.
- You must be in mixer view
- Your MAIN/MASTER or track containing the plugin must be positioned as the first track in view in the mixer. (this is to ensure that when we extend the view to the Left the targeted Track is in position.
Use Shift+Cmd+4 to change your cursor and get your click point coordinates -
// A quick run of 'ESC' key commands to clear any currently selected (if any) Searches, Console selection etc // that may extend the size of the Leftmost focus browser, throwing off the scripts click coordinates sf.keyboard.press({ keys: "escape", }); sf.wait({ intervalMs: 100, }); sf.keyboard.press({ keys: "escape", }); sf.wait({ intervalMs: 100, }); sf.keyboard.press({ keys: "escape", }); sf.wait({ intervalMs: 100, }); // mouse click of null area to ensure that the following 'Press Key' // command is valid -- replace x,y position with user specific coordinates anywhere // in the grey area below the modifier buttons sf.mouse.click({ position: {"x":640,"y":780}, }); // key command to extend mixer view to the far left sf.keyboard.press({ keys: "cmd+alt+left", }); // simulate a CMD Click to isolate the inserts only in mixer view // replace x,y position with user specific coordinates on the text 'INSERTS' in the Navigation // window (above the modifier buttons) sf.mouse.click({ position: {"x":650,"y":270}, isCommand: true, }); // simulate a CMD click on the plugin you wish to Enable/disable on the last track in the mixer view sf.mouse.click({ position: {"x":800,"y":500}, isCommand: true, });
Even if the Midi thing works for you, this should give you an idea as to how I'm getting things working with this kind of workaround/methodology . Once you understand the method it's easy to start to think of ideas that can automate (almost) any sequence. It's not as graceful as what Protools or other more accesible daws can acheive but it works.
This was all created using Macros btw, converted to script to share. Like you, I'm not that experienced with Javascript just yet!!- CChris Wilson @Chris_Wilson
This is amazing, Adam. Thank you for taking the time to share it with me. I'm going to see if I can implement it this weekend and start trying to understand the method. Can't thank you enough for helping me get started. Also, just FYI - not sure you saw the Office Hours deep dive on control surface support, but UA seemed to be pushing the use of the SSL UF8 as a way of creating the same type of macros/workarounds as you would in StreamDeck. They didn't mention SoundFlow, but my sense was that at some point, the same features that allow the UF8 to control LUNA will be available via SoundFlow, if they aren't already.
- AAdz Beath @Adz_Beath
How'd you go with the bypass? Yeah I caught the deep dive, one of the few that I get up for that early over here!! The UF8 is a pretty impressive controller, the Software is doing exactly what StreamDeck, Keyboard Meastro, MidiShortcut and Soundflow etc are doing, awating a trigger and issuing an key command.
Have to thank you for this thread btw, thinking about a solution led me to getting Midi Control over plugin automation parameters. So this would work as a solution to the Soundworks Bypass, that in turn has led me a way of possibly getting Midi Control for The API console emulations (I've got the theory, just not the time yet!!). The former is pretty simple with a plugin host called Element.- Insert Element on the Master, insert Soundworks in the host and route the Audio/Midi Nodes accordingly.
- Create a dummy Midi Instrument (Midi in from your device/channel) and send the Midi Out to the Main/Master
- In Element Assign the parameters you want control of, and use learn to map them the controller.
This will work for any plugin btw. - But the mapping won't be dynamic. They won't work on selected channels. They'll be more like 'hardwired' controls to those parameters. That plugin. - Dynamic is possible I reckon, but a lot more complex and through SoundFlow.
The API control I'll be looking into next week if I find the time.
Cheers man! Let me know if you have any questions.