I used to hide and unhide tracks with memory locations. Not very solid because I had to update the memory location very often when I made an extra track. Besides that, there is a known bug in PT that causes to shift everything up when you use playlists with this function. Avid comunicated that there are not enough bug reports to fix it. Maybe in a distant future. Nice :-)
So, a more solid way to do this is by using crt + shift + clicking on a group. This will hide/unhide the group. And this is what I want to trigger and put in my streamdeck: hiding and unhiding specific groups. Is there a function for this yet? Deleting the temp group is doing something in the same area?... (viewing the source is not learning me much).
Linked from:
- Christian Scheuer @chrscheuer2019-06-19 13:22:16.578Z
Interesting, @NickLeyers.
I actually moved away from using Ctrl+Shift on Groups and over to using Memory Locations. You're right, you need to update them when you add tracks. But that's as simple as numpad comma, numpad number (for your memloc), numpad enter, numpad enter.
The other benefit of using memlocs is that you can do that while in play. Ctrl+Shift on groups doesn't always work when you're playing back.You can automate ctrl+shift clicking on groups with SF, but it requires you to have the group list view tall enough to view all the groups you'd want to do this for. I'll take a look at what code you'd need
Christian Scheuer @chrscheuer2019-06-19 13:31:53.655Z
Here's the code to show/hide groups, only tested with 2019.5. It's pretty complex because of some omissions in our API. But you'd only need the provide a name in the last line.
function getGroup(name) { var groupList = sf.ui.proTools.mainWindow.tables.whoseTitle.contains('Group').first; return groupList.childrenByRole("AXRow").allItems.map(function (r) { return { row: r, selectBtn: r.childrenByRole("AXCell").allItems[0].children.first, name: r.childrenByRole("AXCell").allItems[1].children.first.title.value.match(/^.+ - ([^(]+)/)[1], }; }).filter(function (r) { return r.name == name })[0]; } function showOnlyGroup(name) { var grp = getGroup(name); grp.selectBtn.mouseClickElement({ isControl: true, isShift: true, }); } showOnlyGroup("Group 1");
- NN Leyers @NickLeyers_old_acc
Thanks fo the quick reply!
I'm on a PT ultimate 2018.12.0 now and here I get a type error.
I'll try later today when I'm home on a 2019.5 system.The memory locations were fine untill the broke my session :-) => still think groups are better because It's more easy to import some tracks in an existing session without having to change a lot. I used +-20 memory locations on bigger projects to focus on DX, foley, FX, music, busses, vca's and subselections of all of them but every time I made changes on my basic template, I had to update all of them. Groups are more flexible in that way. Also with the use of track presets, I can simply import a few tracks with the groups allready assigned and I'm shure it will be hidden when I click the group. Memory locations are less flexible in that way...
Christian Scheuer @chrscheuer2019-06-19 13:56:31.304Z
Definitely. Sounds like they could make more sense in your case.
Maybe some day we can find a way to make this even smoother for both cases.
Yea I imagined this wouldn't work on 2018.12. We'd need to get the SF API fixed I think for it to be working better.
I'll look into it.Christian Scheuer @chrscheuer2019-06-19 13:57:36.520Z
- NN Leyers @NickLeyers_old_acc
Allright, on 2019 now. It works, but only if the group is not in a VCA. Tried to add the name in between brackets as well, but no succes.
But I allready love that it works :-)
Christian Scheuer @chrscheuer2019-06-19 16:32:04.665Z
VCA should be fixed in this:
function getGroup(name) { var groupList = sf.ui.proTools.mainWindow.tables.whoseTitle.contains('Group').first; return groupList.childrenByRole("AXRow").allItems.map(function (r) { return { row: r, selectBtn: r.childrenByRole("AXCell").first.children.first, name: r.childrenByRole("AXCell").allItems[1].children.first.title.value.match(/^.+ - ([^(]+)/)[1].replace(/ $/, ''), }; }).filter(function (r) { return r.name == name })[0]; } function showOnlyGroup(name) { var grp = getGroup(name); if (!grp) { log('Error', 'Group "' + name + '" not found'); throw 0; } grp.selectBtn.mouseClickElement({ isControl: true, isShift: true, }); } showOnlyGroup("Group 1");
- NN Leyers @NickLeyers_old_acc
It is. Brilliant, thanks.
- In reply tochrscheuer⬆:JJoseph Trapanese @Joseph_Trapanese
Hey Christian, I'm using this too, and it works beautifully except that if there is a set of groups that aren't in sight because one would have to scroll down to see them, the script doesn't work. Is there a way to fix this? I'd ideally like to not automate scrolling since it then covers up the ones at the top and this would also ideally work on anyone's computer no matter how big the groups view is. Thank you
Christian Scheuer @chrscheuer2020-10-08 09:15:05.899Z
Hi Joe,
Unfortunately, when we have to resort to mouse clicking (which we do when we have to combine a click with a keyboard modifier), then we're limited to clicking on elements that are visible on screen.
In this case, we're simulating Ctrl+Shift+mouse click, so that's why it's limited.