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

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.

oscilate(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

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!


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.

Making Intuos 5 Touch Work

Part of my everyday gear includes a Wacom. At home and my previous jobs, that would have been my personal Intuos 4. At Code 42, I received a brand new Intuos 5 which includes touch gestures, similar to a trackpad. Unfortunately, those gestures just don’t work reliably. And because of the way I use my tablet, with the keyboard above, I got a lot of accidental touch events. Here’s how I tamed them.

First, a picture of my setup…

As you can see, any time I reach over the tablet to type, that could cause problems for touch gestures. ((I prefer my tablet here, as opposed to the side where a typical mouse would be, because it feels more natural that way.)) To remedy that, I disabled most of the touch gestures and limited them to mostly scrolls/pans. Here’s my settings:

I slowed down the pointer speed to reduce unwanted cursor movement as I use the keyboard. I also completely disabled any clicking. Zoom & rotate were finicky at best, and don’t even seem to function in After Effects, so they were disabled as well. This leaves scrolling and navigation, which is what I really want touch gestures to be. It’s really nice to just lift my pen and use the same hand to switch between desktops, reveal the desktop, and even use Launchpad. ((Yes, sometimes I use launchpad. If set up right, it can work well.)) For custom gestures, I modified three finger tap & hold to save, and disabled five finger anything. Holding a pen, it’s not an easy gesture, especially when trying to keep the pen far enough away from the tablet to enable touch.

Ideally, I’d like to see Wacom do three things with their drivers. 1.) Somehow increase reliability of touch, but I have no idea of the engineering already involved in the current drivers. 2.) Be able to relegate touch input to a certain portion of the tablet, in my case the left side or corner. 3.) Add a customizable delay to the “Show Express View” option. This wasn’t covered here, but if you rest your finger or hand on the Express Keys, a HUD pops on screen showing you what they do. Current delay is just under a second, and I hit it a lot while typing.

So that’s what I do to tame touch on the Intuos 5. After using it this way for about a week, it’s working well so far. I still have to customize the Express Keys and customize settings for each app. But I’m waiting for my tower to come in before I do that. ((I’m temporarily on an i5 iMac, waiting for my tower to arrive with dual displays.))

So Long Milwaukee and Thanks For All The Beer

For the past several years I’ve had the privilege of working with some of the best video and advertising talent in Milwaukee. Most of those years were spent holding residency at Civilian Edit, then Wonder Wonder, but also freelancing for additional projects. Milwaukee is one of the only homes I’ve known, both professionally and personally. As of May 2012, that will no longer be the situation.

In January, I was approached by Code 42 Software in Minneapolis for a motion design position within the company. After many emails, Skype calls, and a trip to the Twin Cities, I signed the papers last week to accept the offer. I will be continuing my work at Wonder Wonder through the end of April, then packing up the family to move in the beginning of May.

This was an extremely difficult decision to make, in no small part because nearly our entire family, our support network, and most of my colleagues all reside in Milwaukee. To a lesser extent, but still a factor, moving to a full-time in-house position from a multi-client full-time freelance position had to be weighed ((This might warrant its own blog post as I’ve had several discussions with many wise people about this topic.)). In the end, my family and I decided we had to give it a chance.

Fortunately, we live in a time where my kids can have a video conversation with their grandparents back home, where most of my outside freelance work could be (and is) done remotely, where social networks and the Internet in our pockets let us easily communicate with anyone at any time. Distance is becoming less and less of an obstacle. But even when we do travel home, it’s only a five-and-a-half hour drive from Minneapolis to Milwaukee.

Every single person I know in Milwaukee we be missed. And I truly mean that. I hope to continue the relationships I have with everyone here.

So long, Milwaukee! We’ll keep in touch!

Post Haste v2.0 – Now With More Awesome

Post Haste is a simple app that started as a script for a post house I was working in. They needed a simple way to set up a project folder structure consistently for all the edit suites. I got to work in Apple Script, though quickly realized it was limiting; I opened up Xcode for the first time and got cracking. The response was great. Some people had some really great ideas for the app that would make it even better. Unfortunately, being a motion designer & video editor first, my coding skills were lacking to add the features I and others wanted to see in Post Haste.

Several months ago, I began a conversation with Jon Chappell, CEO of Digital Rebellion about Post Haste. A few tweets and emails later, and he was fast at work coding alphas of Post Haste 2.0.

From this point forward, all maintenance and future releases of Post Haste will be handled by Digital Rebellion. I am staying with the project as a co-project director with Jon.

So today, right now, you can get Post Haste 2.0 from Digital Rebellion’s site, still for free. Here’s some of the new features:

  • 64-bit
  • Multiple Template Support
  • Edit and Create New Template In-App
  • Live Preview of Project Name
  • New Template Files Allow Easy Sharing of Templates
  • Optional History for Fields to Remember Previous Entries, Such as Clients
  • Folder Breaks for a More Robust Folder Structure
  • Assign a Hotkey to Launch Post Haste (Requires FCP Maintenance Pack 1.3 or Higher)

This is a huge update and Jon’s done a fantastic job. If you have any questions about this release, or the future of Post Haste, feel free to contact me or Jon at Digital Rebellion.

Thank you so much for your support of Post Haste 1.0-1.1. The enthusiasm & support from the post community is what made it possible to develop the software in the first place. Now, it will go even farther in the hands of a talented developer.

MCA-I Madison Session Notes

Yesterday I had the privilege of speaking at a breakout session for the MCA-I Madison Spring seminar. The topic was tapeless post-production workflow (specifically for FCP, but we did briefly discuss Avid & Premiere Pro). I promised everyone there I would post links to resources and some of the software we discussed in that session (and some we didn’t get to), so here it is:

Canon EOS Plugin – The official Canon plugin for Log & Transfer. Convoluted download process: Select Mac OSX, then click find “EOS MOVIE Plugin-E1 for Final Cut Pro Ver1.2” in the list, and accept agreement.
Magic Bullet Grinder ($49) – Batch processing of DSLR footage, including proxies with timecode burn in.
5DtoRGB – Process DSLR footage with more control and bypass QuickTime.
5DDtoRGBB – (Unmentioned) Will launch multiple instances of 5DtoRGB for pseudo-batch processing.
Clipfinder 2.2 – Software to reconform FCP XML to RED proxies for passing to Color, among other advanced RED functions.
RED Final Cut Studio 3 Installer – Includes QuickTime codec, Log & Transfer plugin, and Color REDRAW plugin, as well as a useful whitepaper on RED workflow.
REDCine-X – 1st light color correction and transcoding of RED files.

RED User Forums – (Unmentioned) Community of RED users, including posts from RED staff.
Inexpensive Archiving for Tapless Media – Post from Little Frog in High Def (Shane Ross) covering some LTO solutions he found at NAB2011.
FCP 7 Digital Workflows (PDF) – (Unmentioned) Straight from Apple, covers working in several formats, including REDCODE, P2, XDCAM, and AVC. Unfortunately, it does not cover DSLR footage. And for obvious reasons, only covers Apple software.

So there’s the things we went over, and some items that didn’t make it into the discussion in the alloted time. Feel free to leave a comment or contact me if you have any questions.