Some Engineers record ADR to playlists. Not Post friendly! Delivery to Mix, Reconforming - no good.
Is it somehow possible to let SF split playlists into tracks? There are always multiple Clips per Playlist Track.
- In reply todaniel_perez⬆:Dustin Harris @Dustin_Harris
Oh wow this is a great idea. I have in my ADR spec sheets that ADR mixers must split out any playlists into individual tracks. I love this script idea… but now I have to see if it is possible :)
Daniel Perez @daniel_perez
might be a tough one. but extremely helpful.
- In reply todaniel_perez⬆:Chad Wahlbrink @Chad2023-11-22 11:23:53.543Z
Interesting! I will think on it and see what is possible.
Challenge for Soundflow wizards - Possible to select and and remove duplicate clips in Pro Tools? #post-2
This script to remove duplicate clips within a selection could help. - In reply todaniel_perez⬆:Chris Shaw @Chris_Shaw2023-11-22 20:11:57.389Z
I think @samuel_henriques has a script for playlists to tracks on the forum somewhere
- In reply todaniel_perez⬆:Mitch Willard @Mitch_Willard_the2nd
Hi all,
I have this script that will put all playlists to new tracks. We use it after recording Voice Overs for Longform and promos.
function playlistsToNewTracks() { function processTrack() { //Refresh menu sf.ui.proTools.selectedTrack.trackScrollToView(); sf.ui.proTools.selectedTrack.titleButton.mouseClickElement(); var trackIsEmpty = sf.ui.proTools.getMenuItem('Track', 'Delete').exists; var trackIsAudioTrack = sf.ui.proTools.selectedTrack.title.value.indexOf('Audio Track') >= 0; if (trackIsEmpty && trackIsAudioTrack) { sf.ui.proTools.getMenuItem('Track', 'Delete').elementClick() } }; function duplicateTack() { sf.ui.proTools.selectedTrack.titleButton.popupMenuSelect({ isControl: true, menuPath: ['Duplicate...'], }) let dupTrkWin = sf.ui.proTools.duplicateTracksDialog; dupTrkWin.elementWaitFor({ waitType: 'Appear', timeout: 1000, pollingInterval: 50 }), dupTrkWin.checkBoxes.whoseTitle.is("Active Playlist").first.checkboxSet({ targetValue: 'Disable' }) dupTrkWin.checkBoxes.whoseTitle.is("Alternate Playlists").first.checkboxSet({ targetValue: 'Disable' }) dupTrkWin.checkBoxes.whoseTitle.is("Automation").first.checkboxSet({ targetValue: 'Disable' }) dupTrkWin.checkBoxes.whoseTitle.is("Inserts").first.checkboxSet({ targetValue: 'Enable' }) dupTrkWin.checkBoxes.whoseTitle.is("Sends").first.checkboxSet({ targetValue: 'Enable' }) dupTrkWin.checkBoxes.whoseTitle.is("Group assignments").first.checkboxSet({ targetValue: 'Enable' }) dupTrkWin.checkBoxes.whoseTitle.is("Insert after last selected track").first.checkboxSet({ targetValue: 'Enable' }) dupTrkWin.buttons.whoseTitle.is("OK").first.elementClick(); }; sf.ui.proTools.appActivateMainWindow(); // Make sure first track is selected if (!sf.ui.proTools.selectedTrackCount) { sf.ui.proTools.trackSelectByName({ names: [sf.ui.proTools.visibleTracks.names[0]] }); sf.ui.proTools.mainWindow.invalidate(); } const playlistSelectorMenuItems = sf.ui.proTools.selectedTrack.popupButtons.whoseTitle.is("Playlist selector").first .popupMenuFetchAllItems({ dismissMenu: true }).menuItems; const playlistNames = playlistSelectorMenuItems.map(menuItem => { if (/ \(\d+\)$/.test(menuItem.path[0])) { return menuItem.path[0] } }).filter(Boolean); const mainPlaylist = sf.ui.proTools.selectedTrackNames[0]; playlistNames.forEach(playlist => { sf.ui.proTools.mainWindow.invalidate(); try { sf.ui.proTools.trackDuplicateSelected({ duplicateActivePlaylist: false, duplicateAlternatePlaylists: false, duplicateInserts: true, duplicateAutomation: false, duplicateSends: true, numberOfDuplicates: 1, insertAfterLastSelectedTrack: true, duplicateGroupAssignments: true, }) } catch (err) { duplicateTack() } sf.ui.proTools.selectedTrack.trackScrollToView(); sf.ui.proTools.selectedTrack.trackSelect() try { sf.ui.proTools.selectedTrack.popupButtons.whoseTitle.is("Playlist selector").first.popupMenuSelect({ menuPath: ['other playlists', playlist], }); } catch (err) { processTrack() sf.ui.proTools.trackGetByName({ name: mainPlaylist }).track.trackSelect() sf.ui.proTools.trackGetByName({ name: mainPlaylist }).track.trackScrollToView() sf.wait({ intervalMs: 200 }); } finally { } }); }; playlistsToNewTracks();
Daniel Perez @daniel_perez
omg you are a hero!
Mitch Willard @Mitch_Willard
No problem mate. Glad it’s working for you.