Content You Need: The Ease Package
We want to add a little more life to your transitions. You’ve probably made a habit of using line, bline, or line~ to handle all of your smooth value changes. While this is very handy, these linear transitions can feel pretty robotic. In nature, things rarely move in a completely steady linear fashion. Often Max users turn to variations of the slide object to remedy this, but even that has its own predictable quality.
Disney animators recognized early on that “Slow In and Slow Out” transitions made for more energetic and lifelike animations. They would draw in-between frames close to the keyframe to add a little snap or realism to the movement. This kind of “easing” replaces linear, evenly spaced motion with movement that changes speed between keyframes. Robert Penner extended this idea to computer animation with a collection of equations that convert linear time values (between zero and one) into nonlinear curves. While the idea comes from animation, audio also benefits greatly from a little nonlinearity.
The Ease package brings all of this into Max with objects that apply these easing functions to Max floats, lists, MSP signals, and Jitter Matrix inputs. The easing equations include a variety of ease-in, ease-out, and ease-in-out, in addition to a few special effect equations like “bounce” and “elastic.”
In the Package
The Ease package includes ease, list.ease, ease~, and jit.ease objects that simply apply the specified easing function to the input. These utility objects make it simple to add easing to your existing patchers. Try inserting ease~ after a line~ to create a more interesting fade in and out.
While we were working on the package, I found that I was doing a lot of extra patching to support eased transitions from one list or value to another, especially for animation. To simplify this common need, we added ease.xfade (and the signal version ease.xfade~), which tweens successive values using a ramp input on the right. To see this in action, open the included Model_Ease patcher. In this patch, we generate random keyframe values, and animate them using ease.xfade and bline.
Tim Place also found that he could employ the easing functions to do some interesting audio waveshaping. Check out the Oscillator_Ease example to see what he came up with.
Since I added Ease to my Max toolkit, I’ve found myself dropping it in all sorts of patches to add a little extra flavor. It also pairs well with the Jit.mo Package (jit.ease) for some extra snappy generative animation.
Click here to download the examples used in this article. You will need to install the Ease Package to use them.
The Ease Package is available in the Max 7 Package Manager (Max 7 > File > Show Package Manager). We look forward to seeing and hearing what you make with it.
by Andrew Benson on March 28, 2017