Help (How to) RX - Send, process, send back, render
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?
- Christian Scheuer @chrscheuer2020-06-24 13:55:42.773Z
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- Comment deleted
Christian Scheuer @chrscheuer2020-06-24 14:10:08.810Z
Oh.. actually use this:
https://forum.soundflow.org/-1818#post-3At the bottom you can see where you configure the presets to run.
- BBen Zenium @Ben_Zenium
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!!
- In reply tochrscheuer⬆:BBen Zenium @Ben_Zenium
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)
- In reply tochrscheuer⬆:BBen Zenium @Ben_Zenium
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