FX Console + KBar

FX Console is one of those now indispensable enhancements for After Effects. In addition to easily searching for effects and presets to apply, it also serves as a gallery for taking, comparing, and exporting screen shots of your comps. KBar is another great extension to create custom toolbars and buttons to launch scripts, apply expressions and more. What if these two could work together? FX Console comes with a script panel to launch the snapshot features (screenshot, gallery, export) and preferences. With a little hacking around (and the blessing of Andrew Kramer) I was able to create a single script to put those features right into KBar buttons!

How to use it…

Open up KBar settings and create a new script button. Browse to the fxConsoleKBar.jsx script.

The default function will take a screenshot. But you can also supply the following arguments in the button setup to change the function (no quotes):

nothing : Default, takes screenshot
screenshot : Takes screenshot
gallery : Opens gallery
export : Export current frame
preferences : Opens preferences

You can make several buttons all pointing to the same script file with different arguments. Or you can setup keyboard modifiers if you just want a single button to do many things (thanks Tomas Šinkūnas). Take the following example:

alt: gallery, shift: export, cmd: preferences

With this setup, a normal button press will take a screenshot, alt press will open the gallery, shift press will bring up export options, and cmd (ctrl for windows) will open up preferences.

alt (uses option key on macOS)
cmd (uses the control key on Windows)


So here you go. Download the script and hook up FX Console to KBar!

Download fxConsoleKBar.jsx

More Tools

I have several other After Effects tools available, including a bundle of presets and a better way to copy/paste/reverse keyframes.

Curvy Connector AE Preset

The latest version of After Effects was released today (v15.0), and with it a slew of new features. One of those features allowed me to make the Curvy Connector preset!

Easily connect two layers in an After Effects comp with a controllable “S” curve. How controllable? Take a look at the controller view to the right.

The Curvy Connector preset is part of my new preset pack: Conigs Mixtape. The pack currently contains 10 presets and is available for $10. Math wizards might notice that’s only $1 per preset. And once you buy the pack, you’ll get updates and additions for free. But for each new preset added to the pack in the future, the new purchase price will go up by $1. So grab it now!

But because the AE community is awesome, I’m giving the initial version of Curvy Connector away for free (updates will live in Conigs Mixtape).

Download Curvy Connector (v15.0) -or- See more info on Conigs Mixtape

AE Preset – Measurements

There’s been many times where I needed a matching rectangle behind a text layer, or even just need to know a shape layer’s size and center. I got tired of remember the exact usage of the sourceRectAtTime() expression, especially getting the time right. So I made this preset.

Apply conigs_Measurements.ffx to a text or shape layer, and it will give you the Size (width, height), Center (x, y), Top-Left, and Bottom-Right coordinates, with the option for padding. It can get the measurements at the current time, or sample from a set time (maybe for an animated text layer where you want the box to stay static). It also has switches to take into account the scaling of the layer and to give you coordinates in composition space instead of relative to the layer.

Please note this requires AE 13.2 (CC2014) or later as the sourceRectAtTime() expression was first introduced in that version.

What you do with these numbers is up to you, but hopefully this will make it a little easier to rig up elements to another layer’s size.

Measurements is part of the Conigs Mixtape preset pack.

Download Conigs Mixtape today!

AE Script – Move Selected Layer Group

Sometimes you want to select a group of layers in After Effects, and just move them all to the current time indicator and keep their relative timing. So you think ”I’ll just hit [ and move them all!” Only then you’re immediately hitting undo as you notice all the layers in-points moved to the CTI, erasing your carefully crafted timing. I got tired of that a long time ago and wrote a little script for my ft-toolbar setup. The topic recently came up on Twitter so I thought I’d share it.

Download below and set to an ft-toolbar button, or set a keyboard shortcut on macOS. Open up System Preferences: Keyboard: Shortcuts. Then click on App Shortcuts and add After Effects. Then you can type in ‘MoveSelectedLayerGroup.jsx’ and assign a shortcut.


Expression: oscillate()

Update: Oscillate is now a preset and part of Conigs Mixtape! Download it today!

There’s many occasions I just need a certain parameter in After Effects to go between two values. There’s several ways to do this (including keyframing), but one of the go-to methods is using the Math.sin() expression to get a nice sine wave. But for whatever reason, I always end up reminding myself the correct way to write out Math.sin( Math.PI * 2 * time * frequency ) * amplitude in my expression. I also wanted a bit more options. Sure cosine is easy (Math.cos()) but what about a triangle wave? Or Sawtooth?

So I wrote up a function to paste into an expression to give me many options. The image above shows some example usage, but here’s the complete rundown…

oscillate("wave-type", frequency, amplitude, time)


A string or integer defining the type of wave to produce. Why the option to use numbers? Maybe you want to use some other code to determine the type of wave. Using a number just makes that easier. In general use, the strings are just easier to remember.

  • "sin" or "sine" or 1 (default)
  • "cos" or "cosine" or 2
  • "square" or 3
  • "saw" or "sawtooth" or 4
  • "tri" or "triangle" or 5


Number of full waves per second. Defaults to 1.


The height of the wave above or below 0. Defaults to 1.


The value to drive the wave. Defaults to time, but it could also use any other variable. Consider using the layer’s x position to drive the function on its y position.


All the parameters are optional in the function. Using just oscillate() will give you a sine wave with a frequency and amplitude of 1 over time. Or fill in all the parameters to get exactly what you want. However, the parameters must be given in order. So if you just want to change the amplitude, you’ll need to include the wave-type and frequency before it.

The Code

And finally, here’s the code. Paste this into your expression (usually at the end), and you can call oscillate() to get a nice oscillation.

oscillate(wave-type, frequency, amplitude, time)

Returns value along time axis of different wave types or false if error.
All arguments are optional. Function defaults to Sine wave over time with frequency and amplitude of 1.
function oscillate(w,f,a,t) {
    if(!arguments[0]) w="sin";
    if(!arguments[1]) f=1;
    if(!arguments[2]) a=1;
    if(!arguments[3]) t=time;

    try {

            case "1": case "sin": case "sine":
                return Math.sin(2*Math.PI*x)*a;
            case "2": case "cos": case "cosine":
                return Math.cos(2*Math.PI*x)*a;
            case "3": case "square":
                return Math.floor(Math.sin(2*Math.PI*x))*a*2+a;
            case "4": case "saw": case "sawtooth":
                return ((x%f)/f)*a*2+adj;
            case "5": case "tri": case "triangle":
                return (Math.abs(((x%f)/f)*a*2+adj)-a/2)*2;
                return false;
    } catch(e) {return false}

AE Preset – Turbulent Wipe

Update: Turbulent Wipe is now a Fractal Wipe and part of Conigs Mixtape complete with a custom controller! Download it today!

Last week I posted on Twitter about an effects stack for a less boring linear wipe. Enough people asked for a preset, so you’ll find the base preset at the bottom of the post. But first, let’s go through this stack. Keep in mind this is intended to be applied to a solid and used as a matte.

Linear Wipe

01-WipeThis is the basic Linear Wipe effect we know and either love or hate. The only main difference here is adding the feather (which can be adjusted to suit your needs).

Shift Channels

02-ShiftChannelsThe Shift Channels effect is used to move the alpha channel to the luminance by applying it to the red, green, and blue channels. This is needed to get our fractal noise onto the transition since it works in RGB, and not the alpha channel.


03-InvertThe Invert effect is just here to make our wipe work in the correct direction for a reveal.

Turbulent Displace

04-TurbulentDisplaceThe Turbulent Displace effect is what gives us a nice, irregular, crawling edge on our wipe. The complexity is increased to 2.0 to give some more smaller details on the edge. Feel free to play with this, or animate Evolution to get an even more animated wipe.

Turbulent Noise

05-TurbulentNoiseLastly we have Turbulent Noise. This is what applies the noise on the edge of our wipe. You can play with different fractal and noise types, but you might need to roll Contrast back down to 100 to see the noises correctly.

Evolution is controlled by an expression which increases from to 360° as the Transition Completion on the Linear Wipe effect goes from 0% to 100%. This is very subtle, but it allows the noise to change as the wipe completes.

The last thing to note on this effect is setting Blending Mode to Overlay. This just places the noise on the gradient, and not on the black and white portions of the matte.

What’s Not In the Preset

There were a few extra effects in the Twitter post not included in the preset. This is because the further refine the look of the wipe, but aren’t necessary to the basic setup. These are CC Vector Blur (added a more wispy noise), Noise HLS (remove some smoothness from the previous effect), and Curves (crank up contrast a bit more).

Download Preset

Okay, with all that said, here is the preset. Like I said earlier, it’s intended to be applied to a solid and used as a luma matte. Have fun!

This preset will be maintained for those who need it, but an updated version is in the Conigs Mixtape preset pack. Download it today!


After Effects: A Better Bounce

A lot of bounce expressions rely on either setting parameters like frequency and decay, leading to guess work for when bounces will end or how long they’ll last. Or the expression will settle the bounce on the last keyframe, giving you no real idea how fast the object will move before the bounce. This always bothered me.

Then this week on the Motion Design Slack group, someone was asking about getting bounce expressions to behave more intuitively. So I rolled up my sleeve and got to modifying an existing expression for inertial bounce (actually elastic). Here’s the resulting code:

bounces    = 4;     //total number of bounces
duration   = .25;   //duration of each bounce in seconds
amp        = .05;   //multiplier for incoming velocity used in bounce
decay      = 3;     //exponential decay of bounce height

mult = (bounces-Math.floor(t*freq))/bounces;
if (n>0 && mult>0) {
    v=velocityAtTime(key(n).time-0.001)*amp; //velocity to use
    b=Math.abs(Math.sin(freq*t*Math.PI))*Math.pow(mult,decay); //bounce calculation
} else {value;}

Now this won’t be physically accurate. Each resulting bounce would really be shorter in time as well. If that’s what you’re looking for, Dan Eberts has a physically accurate expression. And there’s many other bounce tools like After Ease, Ease and Wizz, and Duik. However, this will give you a specific number of bounces, a set time for each bounce, and take incoming speed from keyframes for the object. This works great as an ft-toolbar button or a Text Expander snippet.

New Site Up and Running

It’s been a long time since I’ve added much to the site, much less refreshed the site. But it’s officially done! I’ve got some new work on the site, but by far the biggest edition is the new motion design reel. I was fortunate enough to get permission from Tiny Deaths to use their track “Ocean” for the music. (I highly recommend the rest of their songs as well.)

I have plans to keep the site better updated and to get back to writing on the blog. So be sure to come back and check for new updates regularly!

How I Work: App List

I use a lot of extra, smaller programs to make my work easier. After gauging interest on Twitter, it seems many people are curious about what I use. A while back, I wrote about some iOS apps, but an expanded and updated list including Mac apps is due, since many of those apps have been abandoned, or have been replaced in my workflow with others.


Post Haste (Free) As the original developer of Post Haste, I may be a little biased, but it’s such an indispensable app for preparing a folder structure (and template project files) to keep everything organized. Digital Rebellion has done a terrific job with version 2 and is continuing to take it places I never could have.

Alfred (Free, £15) A long time ago, I was an avid Quicksilver user. But Alfred has since taken it’s place. Alfred is a great way to not only launch apps, but quickly browse or search the file system, open 1Password logins, assign system-wide hotkeys to nearly anything it can control, and so much more through extensions. To get the most out of Alfred, you’ll need the Power Pack, but it’s well worth the cost of entry.

iStat Menus ($16) I like to keep an eye on my system, especially now that I’m on a laptop. iStat Menus is an easy way to do that. With a quick glance to my menu bar, I can see how hard my processors are working, how much RAM I have available, the ambient temperature of my machine, disk activity, and network activity. There’s also a free dashboard widget available with access to the same info, but I’m not sure if it’s still actively maintained.

Transmit ($34) FTP is just a part of online life ((Personally, I prefer not to use services like YouSendIt, DropBox, etc… It just never seemed very professional to me. But I realize not everyone has access to their own FTP server.)). Transmit is my go-to FTP (and more) client. It’s just very well polished, and can even keep favorite connections in your menu bar, or mount servers right in the Finder. There are other free FTP clients out there, but Panic really knows what they’re doing.

Carbon Copy Cloner ($20) Although many might dismiss this as simply an rsync wrapper, Carbon Copy Cloner is such a great utility to have. For me, it makes a weekly bootable clone of my system drive, and will also be used to make incremental backups of project files and assets to archive on a 3TB Guardian MAXimus I have coming in.

CrashPlan (Free, $1.50-$12/mo.) I know I am no longer biased since I work for Code 42 Software, but CrashPlan has been such an integral part of my backup solution for many years prior. It’s free to use if you just backup locally or to a friend’s computer. If you wish to backup remotely to CrashPlan’s servers, a CrashPlan+ subscription is required. I have the Family Unlimited plan which allows me to back up up to 10 computers.

Growl (Free for OS X 10.6 and lower, $1.99 for OS X 10.7) I really don’t like pop-ups interrupting me while I’m working, but sometimes they can be extremely useful. Growl lets me configure notifications from supported apps and even has a Boxcar plugin, which is great for getting notifications from BG Renderer.

iOS Apps

ColorSchemer (Free) I’ve only recently started using it, but ColorSchemer is a great app for browsing and generating color palettes. You can arbitrarily set up your own color schemes, or pull them from a photo. This has replaced both ColorSlide and cliqcliq Colors (the latter has since been abandoned).

Animator SW ($2.99) Sometimes, you just need an easy way to time out actions when animating. Animator AW allows you to time frames of action. For example, if you’re animating a character, you can act out the motions yourself, and mark a keyframe at each important step. You’ll then have a list of how long each action takes and on which frames they occur. FPS is fully customizable and a log can be emailed out.

KataData ($4.99) Video footage takes up a lot of space. KataData can calculate storage for various camera & codec formats. Just enter the total running time of your footage (or renders) and it will show you how much drive space you’ll need.

Timecode ($6.99) Panoptik’s Timecode is just a great timecode calculator. It can even display comparative timecodes of different formats (eg, DF vs NDF, PAL vs NTSC, frames vs 35mm 3-perf, etc).

Due ($4.99) I usually need reminders or timers running. Due is the best timer/reminder app I’ve seen for iOS. It’s extremely fast and easy to set up reminders or timers on my iPhone 4, which is important because I want to do stuff, not spend time setting up a reminder to tell me to do stuff. There’s also a companion or stand-alone OS X app available.

Clear ($2.99) While a simple list app, you really have to use Clear to see how smart it is. Completely gesture driven, Clear a fun way for me to keep lists throughout the day, and check things off or remove them as needed. Are there other apps that do the same thing? Definitely, but this just works for me.

So there it is, the list of small but important software in my daily workflow. Do you use anything you think I should check out or that might work better? Let me know. I’m always willing to try something new.