No internet connection
  1. Home
  2. How to

ADR - Split Playlist to Tracks

By Daniel Perez @daniel_perez
    2023-11-22 01:18:03.579Z

    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.

    Solved in post #8, click to view
    • 8 replies
    1. In reply todaniel_perez:
      Dustin Harris @Dustin_Harris
        2023-11-22 01:23:17.320Z

        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 :)

        1. Daniel Perez @daniel_perez
            2023-11-22 01:33:21.247Z

            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.

            1. In reply todaniel_perez:

              I think @samuel_henriques has a script for playlists to tracks on the forum somewhere

              1. In reply todaniel_perez:
                Mitch Willard @Mitch_Willard_the2nd
                  2023-11-22 22:23:54.940Z

                  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();
                  
                  
                  Reply2 LikesSolution
                  1. Daniel Perez @daniel_perez
                      2023-11-23 16:52:37.715Z

                      omg you are a hero!

                      1. Mitch Willard @Mitch_Willard
                          2023-11-23 18:50:28.128Z

                          No problem mate. Glad it’s working for you.