I'm trying to figuring out how to move two clips in the pro tools timeline up to two specifics tracks, while maintaining their time code. Currently I highlight the two clips, hold control and slide them up. This is for moving a beep and a "not for TV" word up to two specific tracks.
Any insight would be appreciated.
Linked from:
- Kitch Membery @Kitch2021-09-29 22:56:39.732Z
Hi @SEAN_FOYE ,
Somthing like this should do the trick;
//Destination track names const destinationTrackNames = ["Audio 1", "Audio 2"]; //Activate Pro Tools main window; sf.ui.proTools.appActivateMainWindow(); sf.ui.proTools.mainWindow.invalidate(); //Original Track Names const originalTrackNames = sf.ui.proTools.selectedTrackNames; //Make sure Link Track and Edit Selection is enabled sf.ui.proTools.menuClick({ menuPath: ["Options", "Link Track and Edit Selection"], targetValue: "Enable" }); //Cut clips sf.ui.proTools.menuClick({ menuPath: ["Edit", "Cut"] }); //Select all destination tracks sf.ui.proTools.trackSelectByName({ names: destinationTrackNames, }); //Paste Clips sf.ui.proTools.menuClick({ menuPath: ["Edit", "Paste"] }); //Reselect previous tracks sf.ui.proTools.trackSelectByName({ names: originalTrackNames });
- UUser05, Gilyd @User05_Gilyd
Hi there. How would I make this for a mono track?
Im trying to move a selection of clips to just DX 1 :-)
thanks- OOwen Granich-Young @Owen_Granich_Young
Kat F.A. made a Template that does this. But instead of cut it copies. Make an editable copy of her template and head into the code you can find where it says
"Copy"
and change it to"Cut"
- In reply toKitch⬆:OOwen Granich-Young @Owen_Granich_Young
@Kitch how could you make this script "smart" so it counts the number of tracks selected and then pastes to that number of tracks (starting with the top destination track obviously).
So If I selected 5 tracks and pressed my button it would go to say
"Audio 1"
select the 4 tracks below it and paste the clipboard. If I only selected 2 audio tracks it'd only paste to two etc etc...Of course it would require that the user had enough destination tracks to select...
Kitch Membery @Kitch2022-01-25 22:37:57.582Z
You'd do it like this :-)
//Destination track names const firstDestinationTrackName = "Audio 1"; function extendEditDown(repetitions) { for (let i = 0; i < repetitions; i++) { sf.ui.proTools.menuClick({ menuPath: ["Edit", "Selection", "Extend Edit Down"], }); } } function main() { //Get the original selected track count const originalSelectedTrackCount = sf.ui.proTools.selectedTrackCount; //Activate Pro Tools main window; sf.ui.proTools.appActivateMainWindow(); sf.ui.proTools.mainWindow.invalidate(); //Original Track Names const originalTrackNames = sf.ui.proTools.selectedTrackNames; //Make sure Link Track and Edit Selection is enabled sf.ui.proTools.menuClick({ menuPath: ["Options", "Link Track and Edit Selection"], targetValue: "Enable" }); //Cut clips sf.ui.proTools.menuClick({ menuPath: ["Edit", "Cut"] }); //Select all destination tracks sf.ui.proTools.trackSelectByName({ names: [firstDestinationTrackName], }); extendEditDown(originalSelectedTrackCount-1) //Paste Clips sf.ui.proTools.menuClick({ menuPath: ["Edit", "Paste"] }); //Reselect previous tracks sf.ui.proTools.trackSelectByName({ names: originalTrackNames }); } main();
- OOwen Granich-Young @Owen_Granich_Young
You rock boss.
AAF ORGANIZER - COPY/CUT to Target Track - in STORE for anybody who wants it.
I've templated @Kitch 's above script so you can create presets with CUT or COPY
@Kitch at some point I'll have to ask you how to give the Bolean names instead of Yes and No -- CUT and COPY
But I think people can figure it out :P
Kitch Membery @Kitch2022-01-25 23:48:20.453Z
Rock on!
Tomorrow's webinar maybe?
- OOwen Granich-Young @Owen_Granich_Young
Will try to make it 👍🏼
- In reply toKitch⬆:AAndrew Sherman @Andrew_Sherman
Just saying thanks for this; I've made my own modified version and I'm wondering why I didn't do it much sooner! Audio post so much easier - just press the trigger and boom, off goes the audio to the correct track.
- SIn reply toSEAN_FOYE⬆:SEAN FOYE @SEAN_FOYE
Works perfectly! Thanks for the speedy response.
Kitch Membery @Kitch2021-09-29 23:23:38.415Z
You're welcome Sean :-)
- MIn reply toSEAN_FOYE⬆:Micah Loken @Micah_Loken
Could you help me out with a way to make a package much like Owen's where I can select multiple clips from various tracks and drag (or paste if you will) them in specific tracks?
Example #1:
Example #2:
Example #3:
It will require much more customization but, in addition, having the ability to choose which tracks each selected clip arrives on would be so cool.
Kitch Membery @Kitch2022-03-07 23:20:45.184Z
Hi @Micah_Loken,
This is certainly doable. I've got a bit on my plate this week but will see what I can do when I get a chance. :-)
If your up for a challenge, you can learn more about how to use UI automation instead of keyboard simulation in the following 2 videos:
Rock on!
- MMicah Loken @Micah_Loken
No worries. Thanks for the videos. I have watched the videos and am up to speed with what the tool is capable of. this one is a script that is going to require more customizations than the standard Macro creation system in SF can produce I think.
Keep me posted when you have a bit more time. Thanks!
- In reply toMicah_Loken⬆:
Kitch Membery @Kitch2022-03-07 23:28:31.590Z
Actually,
This should get you most of the way there :-)
const tracksToPasteTo = ["8", "10", "11"] function main() { //Get the original selected track count const originalSelectedTrackCount = sf.ui.proTools.selectedTrackCount; //Activate Pro Tools main window; sf.ui.proTools.appActivateMainWindow(); sf.ui.proTools.mainWindow.invalidate(); //Original Track Names const originalTrackNames = sf.ui.proTools.selectedTrackNames; //Make sure Link Track and Edit Selection is enabled sf.ui.proTools.menuClick({ menuPath: ["Options", "Link Track and Edit Selection"], targetValue: "Enable" }); //Cut clips sf.ui.proTools.menuClick({ menuPath: ["Edit", "Copy"] }); if (originalSelectedTrackCount === tracksToPasteTo.length) { //Select all destination tracks sf.ui.proTools.trackSelectByName({ names: tracksToPasteTo, }); //Paste Clips sf.ui.proTools.menuClick({ menuPath: ["Edit", "Paste"] }); } else { throw `The selected track count does not match the destination track count.`; } //Reselect previous tracks sf.ui.proTools.trackSelectByName({ names: originalTrackNames }); } main();
Kitch Membery @Kitch2022-03-08 00:15:49.126Z
@Micah_Loken... Not sure if you missed the above script. Let me know if it works for you. :-)
- MMicah Loken @Micah_Loken
I just saw your reply. While this method works, I am looking more for something that gives the ability to select which tracks for various selections. Much like a menu that pops up and dependent on the number of clips/tracks I have selected, gives me an option on which tracks to paste them too.
If I select clips in 4 tracks, then a "getList" function will run (as an example) and ask which 4 tracks to paste them to and I can select those tracks and the script will then continue to run. Something along those lines. Same with selecting clips in just 1 track or 5 tracks etc. So a custom package
I'm open to suggestions on how to go about it, but the workflow is effectively copying/pasting to specific tracks and it is constantly changing each group of tracks further down the timeline so making it impossible to fully automate the process. It's more of a listen and pick options and then move them to certain tracks along the timeline. I am not quite that far along in my javascript knowledge to fully make this a reality.
Feel free to put this on the back burner since you are busy. I'd love to work with you and/or @chrscheuer at some point to come up with something that can make this a reality. Feel free to email me as well.
- OOwen Granich-Young @Owen_Granich_Young
So you want the script to prompt you every time you press the button:
Hey Script : look at track count.
Now script : ask me as many times as track count where you want this audio
Then script : send my audio in decending order to those tracks.Right?
It seems doable, like select track to paste to but ask for a series of destination tracks based on a for loop. I can't code it but that might help @kitch understand what you're looking for.... if I'm understanding it right.
bests,
Owen- MMicah Loken @Micah_Loken
Hi Owen,
Nice tool! It inspired me to think through workflows for myself. I'm learning more and more and becoming more proficient with SF. I'm looking to essentially do what you described.
Look at current track count based on selection
Get list of tracks in the session, or... even better yet, ask the user once which tracks in the session they would possibly want to move items to and use those tracks (since there could be loads of tracks in the session that are not desired to be places on a searchable list)
Send audio to specified tracks per the user's decision (not necessarily in descending order... although it could end up in descending order).
I was not very clear about that in the videos I posted or explanation. I also don't want to cause more grief than it's worth, but at very minimum, what you stated are the steps I am looking for. New here so hope this helps!
- OOwen Granich-Young @Owen_Granich_Young
Micah, out of curiousity you don't think it's faster to just have a dedicated button or key command for your 10 DX tracks and when you want each one in a specifc track just go clip by clip and press the approriate button? I just feel like the script prompting you to define destination track every time want to send a clip will be a slower process overall... Just thinking out loud though.
One thing I've been doing is using the the 1-5 keys instead of a stream deck for this kind of thing so I don't have to take my fingers off the keyboard. could be 1-5 and cmd+1-5 for tracks 1-10? Once again just spit balling. Every millisecond counts right?
- MMicah Loken @Micah_Loken
Yeah, you are likely totally right. Hadn't thought of it like that but it would cause more time/interaction to select tracks than it would be to simply drag/drop.
What I am ultimately trying to achieve is selecting multiple clips and moving them up to tracks but not necessarily appearing in descending order one right after the other, but rather mirroring how they were placed on the tracks below that I am pulling from. What I am describing is Example #1 (video) in my post above where there is a track left empty, as an example between the 2nd and third clip. This could, in theory work for any number of empty tracks. Copying/Pasting as is, even with multiple tracks left "unused" in between.
Another example of a workflow (to show it with another tool) would be selecting multiple individual clips and dragging them up, using the grabber object tool, and leaving one track unused.
Example #4:
So, to your point... even if it was just mirroring the track layout/selection from the bank of tracks below, I would be happy with that and just reorganize as needed/wanted from there after the move. That would certainly still speed up the workflow overall!
- OOwen Granich-Young @Owen_Granich_Young
@samuel_henriques wrote this awesome script for me... I bet if you asked he could do a tweak on it. I have to learn how to modify it for other uses but it's in the vein of what you want.
bests,
Owen - In reply toMicah_Loken⬆:
Kitch Membery @Kitch2022-03-08 23:07:26.563Z
Hi @Micah_Loken & @Owen_Granich_Young,
Great ideas bouncing around, legends!
I don't have the time right now to create the workflow, but another option would be to;
- Have a deck that has buttons assigned to each of the destination tracks. Each button when pushed would add that tracks name to an array in the global state.
- Then you'd have a "clear" button to clear the global state, when you want to add the selected content to different tracks.
- Once the global state is populated with track names, you could then copy and paste the selected content to the tracks stored in the global via a script.
- You could also have presets that you make for preconfigured sets of track names.
This kind of solution would obviously be better created with a dynamic deck or surface, but that functionality is only currently available for the SoundFlow Developer team, however you could make something really tactile even without it being dynamic.
A good starting point is looking into setting global state values.
Push method
//Track name you want to add the the globalState variable const trackName = "Audio 1"; //Push the track name to global state //Each time you push a track name to the globalState the track name gets added to an array globalState.destinationTrackNames.push(trackName) //Log what's in the global state log(globalState.destinationTrackNames)
Rest the global state variable
//Reset the destination track names array globalState.destinationTrackNames = []; //Log what's in the global state log(globalState.destinationTrackNames)
Add an array of track names to the global state variable
//Add an array of track names to the destination track names global state variable globalState.destinationTrackNames = ["Audio 1", "Audio 2", "Audio 3"]; //Log what's in the global state log(globalState.destinationTrackNames)
Let me know if that makes sense. :-)
Rock on!
Kitch- MMicah Loken @Micah_Loken
@Kitch @Owen_Granich_Young @samuel_henriques
Thanks all for the help! Sounds like I've got some stuff to learn in order to make this happen. Much appreciated!
- In reply toKitch⬆:Sstudio@keasound.com @studiokeasound_com
Hello,
I need help creating a command with my template in protools.
My template is composed as follows:
The two tracks in record are the tracks where I record, these two tracks will change name in each recording (but I manually write the name each time).
What I need is that when I finish recording and press the space bar to stop the recording, soundflow will select the two clips I just recorded and move them immediately below into the two free tracks.
It is possible that I do multiple recordings in the same spot so each time it has to bring the clips down to two tracks even further below. In fact, my template looks like this: 2 tracks to record - 1 midi track 1 - 2 tracks where to insert the recordings - 1 midi track - 2 tracks where to insert the recordings - 1 midi track, and it goes on like this for 30 times.
Each time it should bring down the clips to the first two free tracks it finds.
Can you help me, it is too difficult for me to write.Kitch Membery @Kitch2023-01-03 18:26:28.643Z
As this is a custom workflow you are trying to achieve please start a new thread for this. You can always link this thread to the new thread for reference.
Rock on!