PRO TOOLS - Bounce Memory Location (SELECTION) + Copy Marker name to bounce window
Hi there !
i´m looking for a script in SF for Pro Tools to :
• Select Memory Location (=Selection)
• Open Memory Location Edit Window
• Copy Memory Location Name
• Close Memory Location Window
• Open Bounce Mix Window
• Bounce Selection + Paste Previously Copied Memory Location Name Into Bounce Name
• Press Enter to Bounce File To Folder
• Close Bounce Mix Window
• Move to Next Memory Location (Selection)
—>REPEAT ALL STEPS
The idea is to have a batchprocesseor to sequencially print multiple "selections" in a timeline
Might be a great timesaver for audio books, podcasts and post pro..
best oliver
- Ddanielkassulke @danielkassulke
Hi @oliver_Brunbauer ,
You might be interested in checking out this script that @samuel_henriques created for a very similar workflow that I use. It works a charm:
How to create incremental bounce regions #post-12You could combine it with this script I've been using to automatically create marker selections. Please note that the automatic marker selection script only works if you've highlighted the audio clips on one track, and currently it's automatically naming each selection "T01", "T02" etc (for take 1, take 2).
function getNextTakeName() { const currentTakes = sf.ui.proTools.memoryLocationsWindow.tables.whoseTitle.is("Memory Locations").first.invalidate().children.whoseRole.is("AXRow").map(l => ({ number: l.children.whoseRole.is("AXCell").allItems[0].children.whoseRole.is("AXStaticText").first.title.value.replace("Selected. ", ""), name: l.children.whoseRole.is("AXCell").allItems[1].children.whoseRole.is("AXStaticText").first.title.value.replace("Selected. ", ""), nameElement: l.children.whoseRole.is("AXCell").allItems[1].children.whoseRole.is("AXStaticText").first })).filter(ml => ml.name.match(/T\d+/)); if (currentTakes.length === 0) return "T01"; let lastTake = Math.max(...currentTakes.map(ml => (+ml.name.split("T")[1].replace(" BNC", "")))); // return T & increment return "T" + (lastTake < 9 ? "0" + ++lastTake : ++lastTake); } function newMemoryLocation({ type, name }) { sf.keyboard.press({ keys: "numpad enter" }); const memLocWin = sf.ui.proTools.newMemoryLocationDialog.elementWaitFor().element; const markerNumber = parseInt(memLocWin.textFields.whoseValue.contains("Location").first.value.value.replace("Location ", ""), 10); const markerName = `${markerNumber}. ${name}`; memLocWin.textFields.allItems[1].elementSetTextFieldWithAreaValue({ value: markerName }); if (type === "selection") { memLocWin.radioButtons.whoseTitle.is("Selection").first.checkboxSet({ targetValue: "Enable" }); } memLocWin.buttons.whoseTitle.is("OK").first.elementClick(); memLocWin.elementWaitFor({ waitType: "Disappear" }); } sf.ui.proTools.invalidate(); sf.ui.proTools.appActivateMainWindow(); sf.ui.proTools.memoryLocationsEnsureWindow({ action: () => { sf.ui.proTools.clipDoForEachSelectedClip({ action: () => { const nextName = getNextTakeName(); newMemoryLocation({ type: "selection", name: (nextName + " BNC") }); } }); }, restoreWindowOpenState: true });