Import session data
I am wanting to create a script that will streamline my importing of session data from an AAF. I know that there is a package and some scripts available that does this but I have yet to get one to do exactly what I want.
I would like to create a script that when the 'import session data' window is open it:
.maps timecode to 01:00:00:00
.Imports all tracks
.Selects only 'clips and media' within 'track data to import' (checks what is selected and only selects this)
.Selects 'import rendered audio effects
.Selects ' Import Clip Gain'
.All other session data greyed out
.Once imported into session selects last track (ready to run import template script)


Sorry I am new to Soundflow but having this will speed my workflow up at work a lot. Thanks
- Nathan Salefski @nathansalefski
This should work. However when I run the script SoundFlow restarts. I've never seen this issue before. @chrscheuer or @Kitch ? I believe it's the
disableCheckboxes();
function.//Activate Pro Tools and Refresh Cache sf.ui.proTools.appActivate(); sf.ui.proTools.mainWindow.invalidate(); function importData() { // Make Reference to Import Session Data Window const iSDWin = sf.ui.proTools.windows.whoseTitle.is("Import Session Data").first function setTimecode() { //Make Reference to Time Code Mapping Section const timeCodeSec = iSDWin.groups.whoseTitle.is("Timecode Mapping Options:").first //Select "Map start timecode to" timeCodeSec.popupButtons.first.popupMenuSelect({ menuPath: ["Map start timecode to"],}); //Click Timecode Box iSDWin.mouseClickElement({ relativePosition: {"x":390,"y":105},}); //Press Delete sf.keyboard.press({ keys: "delete",}); //Click Hours in Timecode Box iSDWin.mouseClickElement({ relativePosition: {"x":403,"y":105},}); //Press Delete sf.keyboard.type({ text: '1' }); } setTimecode(); //Make Reference to Sample Rate Conversion Section const sRCMenu = iSDWin.groups.whoseTitle.is("Sample Rate Conversion Options:").first //Disable "Apply SRC" sRCMenu.checkBoxes.whoseTitle.is("Apply SRC").first.checkboxSet({ targetValue: "Disable",}); //Option Click to Import all Tracks onto New Tracks iSDWin.mouseClickElement({ relativePosition: {"x":185,"y":510}, isOption: true,}); function disableCheckboxes() { //Disable Apply SRC const aSRCCheckbox = sRCMenu.checkBoxes.whoseTitle.is("Apply SRC").first if (aSRCCheckbox.value.invalidate().value === 'Checked') { aSRCCheckbox.checkboxSet({ targetValue: "Disable",});}; //Make Reference to Session Data Section const sessDataSec = iSDWin.groups.whoseTitle.is("Session Data").first //Make Reference to All Session Data Section Checkboxes const tMMCheckbox = sessDataSec.checkBoxes.whoseTitle.is("Tempo / Meter Map").first const kSCMCheckbox = sessDataSec.checkBoxes.whoseTitle.is("Key Signature / Chord Map").first const rMMLCheckbox = sessDataSec.checkBoxes.whoseTitle.is("Ruler Markers / Memory Locations").first const wCCheckbox = sessDataSec.checkBoxes.whoseTitle.is("Window Configurations").first const mPSCheckbox = sessDataSec.checkBoxes.whoseTitle.is("Mic PRE Settings").first const hMSCheckbox = sessDataSec.checkBoxes.whoseTitle.is("HEAT Master Settings").first //Deselect if Selected if (tMMCheckbox.value.invalidate().value === 'Checked') { tMMCheckbox.checkboxSet({ targetValue: "Disable",});}; if (kSCMCheckbox.value.invalidate().value === 'Checked') { kSCMCheckbox.checkboxSet({ targetValue: "Disable",});}; if (rMMLCheckbox.value.invalidate().value === 'Checked') { rMMLCheckbox.checkboxSet({ targetValue: "Disable",});}; if (wCCheckbox.value.invalidate().value === 'Checked') { wCCheckbox.checkboxSet({ targetValue: "Disable",});}; if (mPSCheckbox.value.invalidate().value === 'Checked') { mPSCheckbox.checkboxSet({ targetValue: "Disable",});}; if (hMSCheckbox.value.invalidate().value === 'Checked') { hMSCheckbox.checkboxSet({ targetValue: "Disable",});}; //Enable Import/Replace Existing Playlists const iREPCheckbox = iSDWin.radioButtons.whoseTitle.is("Import - Replace Existing Playlists").first if (iREPCheckbox.value.invalidate().value === 'Checked') { iREPCheckbox.checkboxSet({ targetValue: "Enable",});}; } disableCheckboxes(); function clipsAndMedia() { // Refresh Cache sf.ui.proTools.mainWindow.invalidate(); // Click "Choose..." iSDWin.groups.whoseTitle.is("Session Data").first.buttons.whoseTitle.is("Choose...").first.elementClick(); //Reference Track Data to Import Window const trackData = sf.ui.proTools.windows.whoseTitle.is("Track Data to Import").first //Wait for Track Data Window to Appear trackData.elementWaitFor({waitType: "Appear"}); //Option Click to Deselect All trackData.mouseClickElement({ relativePosition: {"x":22,"y":125}, isOption: true,}); //Select "Clips and Media" trackData.groups.whoseTitle.is("Track Data").first.checkBoxes.whoseTitle.is("Clips and Media").first.checkboxSet({ targetValue: "Enable",}); //Make Reference to Last Checkbox const iIMOCheckbox = trackData.groups.whoseTitle.is("Track Data").first.checkBoxes.whoseTitle.is("Include Instrument/MIDI output").first //Deselect if Selected if (iIMOCheckbox.value.invalidate().value === 'Checked') { iIMOCheckbox.checkboxSet({ targetValue: "Disable",});} //Click "OK" in Track Data to Import Window trackData.buttons.whoseTitle.is("OK").first.elementClick(); //Wait for Track Data Window to Disappear trackData.elementWaitFor({waitType: "Disappear"}); } clipsAndMedia(); //Click "OK" in Import Session Data Window iSDWin.buttons.whoseTitle.is("OK").first.elementClick(); //Wait sf.ui.proTools.waitForNoModals(); } importData();
Nathan Salefski @nathansalefski
Looking into it even something as simple as this is causing SoundFlow to restart for me. Running SoundFlow v5.4.3 and Pro Tools version 2023.6.0
const sRCCheckbox = sf.ui.proTools.windows.whoseTitle.is("Import Session Data").first.groups.whoseTitle.is("Sample Rate Conversion Options:").first.checkBoxes.whoseTitle.is("Apply SRC").first if (sRCCheckbox.value.invalidate().value === 'Checked') { sRCCheckbox.checkboxSet({ targetValue: "Disable",});}
Christian Scheuer @chrscheuer2023-08-09 13:03:21.753Z
You should be able to skip the if block and just use checkboxSet with the targetValue as it does the checking for you
Nathan Salefski @nathansalefski
That was what was causing the crashes. Thanks @chrscheuer! @Matthew_Eldridge this should work for you:
//Activate Pro Tools and Refresh Cache sf.ui.proTools.appActivate(); sf.ui.proTools.mainWindow.invalidate(); function importData() { // Make Reference to Import Session Data Window const iSDWin = sf.ui.proTools.windows.whoseTitle.is("Import Session Data").first function setTimecode() { //Make Reference to Time Code Mapping Section const timeCodeSec = iSDWin.groups.whoseTitle.is("Timecode Mapping Options:").first //Select "Map start timecode to" timeCodeSec.popupButtons.first.popupMenuSelect({ menuPath: ["Map start timecode to"],}); //Click Timecode Box iSDWin.mouseClickElement({ relativePosition: {"x":390,"y":105},}); //Press Delete sf.keyboard.press({ keys: "delete",}); //Click Hours in Timecode Box iSDWin.mouseClickElement({ relativePosition: {"x":403,"y":105},}); //Press Delete sf.keyboard.type({ text: '1' }); } setTimecode(); //Make Reference to Sample Rate Conversion Section const sRCMenu = iSDWin.groups.whoseTitle.is("Sample Rate Conversion Options:").first //Disable "Apply SRC" sRCMenu.checkBoxes.whoseTitle.is("Apply SRC").first.checkboxSet({ targetValue: "Disable",}); //Option Click to Import all Tracks onto New Tracks iSDWin.mouseClickElement({ relativePosition: {"x":185,"y":510}, isOption: true,}); function disableCheckboxes() { //Disable Apply SRC const aSRCCheckbox = sRCMenu.checkBoxes.whoseTitle.is("Apply SRC").first aSRCCheckbox.checkboxSet({ targetValue: "Disable",}); //Make Reference to Session Data Section const sessDataSec = iSDWin.groups.whoseTitle.is("Session Data").first //Make Reference to All Session Data Section Checkboxes const tMMCheckbox = sessDataSec.checkBoxes.whoseTitle.is("Tempo / Meter Map").first const kSCMCheckbox = sessDataSec.checkBoxes.whoseTitle.is("Key Signature / Chord Map").first const rMMLCheckbox = sessDataSec.checkBoxes.whoseTitle.is("Ruler Markers / Memory Locations").first const wCCheckbox = sessDataSec.checkBoxes.whoseTitle.is("Window Configurations").first const mPSCheckbox = sessDataSec.checkBoxes.whoseTitle.is("Mic PRE Settings").first const hMSCheckbox = sessDataSec.checkBoxes.whoseTitle.is("HEAT Master Settings").first //Deselect if Selected tMMCheckbox.checkboxSet({ targetValue: "Disable",}); kSCMCheckbox.checkboxSet({ targetValue: "Disable",}); rMMLCheckbox.checkboxSet({ targetValue: "Disable",}); wCCheckbox.checkboxSet({ targetValue: "Disable",}); mPSCheckbox.checkboxSet({ targetValue: "Disable",}); hMSCheckbox.checkboxSet({ targetValue: "Disable",}); //Enable Import/Replace Existing Playlists const iREPCheckbox = iSDWin.radioButtons.whoseTitle.is("Import - Replace Existing Playlists").first iREPCheckbox.checkboxSet({ targetValue: "Enable",}); } disableCheckboxes(); function clipsAndMedia() { // Refresh Cache sf.ui.proTools.mainWindow.invalidate(); // Click "Choose..." iSDWin.groups.whoseTitle.is("Session Data").first.buttons.whoseTitle.is("Choose...").first.elementClick(); //Reference Track Data to Import Window const trackData = sf.ui.proTools.windows.whoseTitle.is("Track Data to Import").first //Wait for Track Data Window to Appear trackData.elementWaitFor({waitType: "Appear"}); //Option Click to Deselect All trackData.mouseClickElement({ relativePosition: {"x":22,"y":125}, isOption: true,}); //Select "Clips and Media" trackData.groups.whoseTitle.is("Track Data").first.checkBoxes.whoseTitle.is("Clips and Media").first.checkboxSet({ targetValue: "Enable",}); //Make Reference to Last Checkbox const iIMOCheckbox = trackData.groups.whoseTitle.is("Track Data").first.checkBoxes.whoseTitle.is("Include Instrument/MIDI output").first //Deselect if Selected iIMOCheckbox.checkboxSet({ targetValue: "Disable",}) //Click "OK" in Track Data to Import Window trackData.buttons.whoseTitle.is("OK").first.elementClick(); //Wait for Track Data Window to Disappear trackData.elementWaitFor({waitType: "Disappear"}); } clipsAndMedia(); //Click "OK" in Import Session Data Window iSDWin.buttons.whoseTitle.is("OK").first.elementClick(); //Wait sf.ui.proTools.waitForNoModals(); } importData();