UPDATE: I wrote a newer article on School of Motion about this topic.
I have added some more functions to my KBar and, of course, had to make some more icons.
Below, I'll go through the new icons and give some description on how each button works.
Parametric converter
This is another script from Kyle Martinez. It's called Parametric Converter. This allows you to convert a square shape path into a parametric rectangle, or a circular bezier path into a parametric circle, thus giving you more options than you normally have with a regular bezier path (ie; size). IMPORTANT: To use these with KBar you should use his standalone scripts found on his website.
Time reverse keyframes
This is simple. It just makes this function possible in a single click instead of using the 'right click' drop down menu. Just set the button to invoke menu item "3693".
Time Expression
This is just to apply the time expression to any layer attribute (ie; time*5)
Stereo Fade
I've created an animation preset for quickly creating a fade on an audio track. It applies "stereo mixer" to a layer and then sets keyframes on both R and L channels to go from 100 to 0. The reason I use Stereo Mixer is because it gives a much better fade than if you keyframe Audio Levels. But it's a little tedious because you have to keyframe both chanels, so I made a preset. Here is the icon to go along with it.
Remove expressions (Updated April 25 2018)
Thanks to John Colombo I've finally got a great scriptlet for quickly removing all expressions from layers. It can be tedious to option click every single property, and I wish I could just do it in one click. This script will do that. It removes them from all selected layers and if you have none selected then it removes all of them within the comp. Super slick!
(function removeExpressions(){
var comp = getActiveComp();
if (comp) {
app.beginUndoGroup("Remove All Expressions");
forAllSelectedLayersElseAll(comp, function (layer){
removeAllExpressions(layer);
});
app.endUndoGroup();
} else {
alert("Please select a composition.");
}
function removeAllExpressions(propParent)
{
if (propParent)
{
var prop;
for (var i=1; i<=propParent.numProperties; i++)
{
prop = propParent.property(i);
switch (prop.propertyType)
{
case PropertyType.PROPERTY:
// do action
if (prop.canSetExpression && prop.expression) prop.expression = "";
break;
case PropertyType.INDEXED_GROUP:
removeAllExpressions(prop);
break;
case PropertyType.NAMED_GROUP:
removeAllExpressions(prop);
break;
default:
break;
}
}
}
}
function isComp (item) {
return item instanceof CompItem;
}
function getActiveComp () {
var thisComp = app.project.activeItem;
if (thisComp === null || !(isComp(thisComp))){
alert("Please select a composition!");
return null;
}
return thisComp;
}
function forAllSelectedLayersElseAll (thisComp, doSomething) {
if (thisComp.selectedLayers.length === 0)
if (confirm ("You are about to remove all expressions in the active composition.\nAre you sure you want to continue?", false, "Expression Annihilation Imminent!")) {
forAllLayersOfComp(thisComp, doSomething);
} else {
return;
}
else
forAllItemsInArray(thisComp.selectedLayers, doSomething);
}
function forAllItemsInArray (itemArray, doSomething) {
for (var i = 0, il = itemArray.length; i < il; i++){
var thisItem = itemArray[i];
doSomething(thisItem);
}
}
function forAllLayersOfComp (thisComp, doSomething) {
for (var i = 1, il = thisComp.layers.length; i <= il; i++){
var thisLayer = thisComp.layers[i];
doSomething(thisLayer);
}
}
})();
Center Composition
This is another one from Kyle Martinez. I don't use it terribly often, honestly, but I'm sure many people do. I have a habit of moving my comp around with spacebar (as I do is just about every other Adobe program). But sometimes it's nice to just click a button and have it snap to the center of the comp window. OCD with your workspace? This one's for you.