No internet connection
  1. Home
  2. Support

Help (How to) RX - Send, process, send back, render

By Ben Zenium @Ben_Zenium
    2020-06-24 13:52:27.317Z

    Hi there,

    I'm super new to this so please do excuse my noob'ness.

    But I'm trying to work out how I make a script that will send the selected audio, out of ProTools via the RX7 Connect audiouite, to RX7, process with my module chain, and then send back to ProTools and render in place.

    Can any one help or am I barking mad?

    • 5 replies
    1. Hi Ben!

      It's a great idea, but unfortunately a super complicated script to start out with :)

      You can get inspiration at these threads:

      https://forum.soundflow.org/-1159#post-19https://forum.soundflow.org/-1495#post-2https://forum.soundflow.org/-1818/how-to-batch-process-izotope-modules-through-connect
      1. Comment deleted
        1. Oh.. actually use this:

          https://forum.soundflow.org/-1818#post-3

          At the bottom you can see where you configure the presets to run.

          1. BBen Zenium @Ben_Zenium
              2020-06-24 14:19:10.954Z

              I'm going to have to find you and buy you a drink, good sir. That's legendary stuff. Excited to really get my head in to this and setup some custom controllers!!

              1. In reply tochrscheuer:
                BBen Zenium @Ben_Zenium
                  2020-06-24 15:16:05.870Z

                  Hi Christian, I have adapted htis code, so that it now sends to RX, but when the Module Chain window is open, it closes it and that throws an error. I also havent been able to get the send to and render, from RX, to ProTools working in it (so have removed it)

                  1. In reply tochrscheuer:
                    BBen Zenium @Ben_Zenium
                      2020-06-24 15:16:12.611Z

                      function sendToIzotope() {
                      var win = sf.ui.proTools.getAudioSuiteWindow('RX 7 Connect');
                      if (!win || !win.exists)
                      win = sf.ui.proTools.getAudioSuiteWindow('RX 6 Connect');
                      if (!win || !win.exists) {
                      if (sf.ui.proTools.getMenuItem('AudioSuite', 'Noise Reduction', 'RX 7 Connect').exists) {
                      win = sf.ui.proTools.audioSuiteOpenPlugin({
                      category: 'Noise Reduction',
                      name: 'RX 7 Connect'
                      }).window;
                      } else if (sf.ui.proTools.getMenuItem('AudioSuite', 'Noise Reduction', 'RX 6 Connect').exists) {
                      win = sf.ui.proTools.audioSuiteOpenPlugin({
                      category: 'Noise Reduction',
                      name: 'RX 6 Connect'
                      }).window;
                      } else
                      throw "RX 6/7 Connect not installed, or you are not sorting modules by Category";
                      }

                      win.audioSuiteSetOptions({ processingInputMode: 'ClipByClip', processingOutputMode: 'CreateIndividualFiles' });
                      win.getFirstWithTitle("Analyze").elementClick();
                      

                      }

                      function sendToIzotopeAndWaitForFileToBeReady() {
                      function getPath() {
                      var docs = sf.ui.izotope.windows.filter(w => w.getString("AXDocument") != null);
                      return docs.length > 0 ? decodeURIComponent(docs[0].getString("AXDocument")).replace(/^file:///, "") : null;
                      }

                      //Make sure to clean any existing files for RX connect
                      var path = getPath();
                      if (path && sf.file.exists({ path: path }).exists) {
                          sf.file.delete({ path: path });
                      }
                      
                      sf.ui.proTools.appActivateMainWindow();
                      sendToIzotope();
                      sf.ui.izotope.appActivateMainWindow();
                      
                      //Wait for file to exist and be ready in the document
                      path = getPath();
                      while (!path || !sf.file.exists({ path: path }).exists) {
                          sf.wait({ intervalMs: 100 });
                          path = getPath();
                      }
                      

                      }

                      function waitForIzotopeProcessing() {
                      const isProcessing = () =>
                      sf.ui.izotope.floatingWindows.whoseTitle.startsWith("Pro Tools ").exists ||
                      sf.ui.izotope.floatingWindows.whoseTitle.startsWith("Composite").exists;

                      sf.wait({ intervalMs: 1000 });
                      
                      while (isProcessing()) {
                          sf.wait({ intervalMs: 500 });
                      }
                      

                      }

                      function renderAndSpot() {
                      var shuttleBtn = sf.ui.izotope.mainWindow.children.whoseDescription.endsWith('Main Window').first.children.whoseDescription.is("Shuttle").first;
                      shuttleBtn.elementClick({}, "Could not click Send Back button");

                      sf.wait({ intervalMs: 500 });
                      
                      sf.ui.proTools.appActivateMainWindow({}, "Could not activate Pro Tools");
                      
                      var win = sf.ui.proTools.floatingWindows.filter(function (w) { var t = w.title.value; return t.indexOf("Audio Suite: RX") == 0 && t.indexOf("Connect") >= 0 })[0];
                      if (!win || !win.exists) throw "Could not find iZotope RX Connect AudioSuite window";
                      
                      win.buttons.whoseTitle.is("Render").first.elementClick({}, "Could not click Render");
                      

                      }
                      function ensureModuleChainIsOpen() {
                      var win = sf.ui.izotope.windows.whoseTitle.is('Module Chain').first;
                      if (!win.exists) {
                      sf.ui.izotope.menuClick({
                      menuPath: ['Window', 'Module Chain']
                      });
                      win.elementWaitFor();
                      }
                      }

                      function selectModuleChainPreset(name) {
                      var btn = sf.ui.izotope.windows.whoseTitle.is('Module Chain').first.groups.whoseDescription.is('Module Chain Panel').first.popupButtons.whoseDescription.is('Preset').first;
                      if (btn.value.invalidate().value == name) return;
                      btn.elementClick();
                      sf.keyboard.press({ keys: 'enter' });
                      while (true) {
                      sf.engine.checkForCancellation();
                      if (btn.value.invalidate().value == name) break;
                      sf.keyboard.press({ keys: 'down' });
                      }
                      }

                      function processOpenModuleChain() {
                      sf.ui.izotope.windows.whoseTitle.is('Module Chain').first.groups.whoseDescription.is('Module Chain Panel').first.buttons.whoseDescription.is('Render').first.elementClick();
                      }

                      function processModuleChain(name) {
                      sf.ui.izotope.invalidate();
                      sf.ui.izotope.appActivateMainWindow();
                      ensureModuleChainIsOpen();
                      selectModuleChainPreset(name);
                      processOpenModuleChain();
                      }

                      processModuleChain('Andys_Cleanup_Crew');

                • Progress
                • B@Ben_Zenium closed this topic 2020-10-05 15:38:49.890Z.