Should Adobe Improve Expressions?

After working through a test project yesterday with the 3D orbit Preset, one of the things I noticed is how slow the expressions made my fairly simple comp. Admittedly, there were several expression connections but there wasn’t crazy rocket science equations that required cloud-computing. So, why so seriously slow?

It never really bothered me before but with the impressive speed performance that the 64-bit native After Effects CS5 brings, I can’t help but think of other areas in need of improvement besides my marriage (JOKE! I love you honey… but we need to talk.)

So before I present this to the folks at Adobe, who have been very open to new ideas, I wanted to post my thoughts and hopefully gauge community interest in such a core feature improvement and where it currently stands.

Look, expressions are fine for linking a few parameters together but for more complex systems, there has to be a way to make it faster and more integrated.  This would lead to more powerful custom presets and functionality and make certain work flows more practical.

Think of the POTENTIAL!! And I’m not talking about your teacher telling your mom, he thinks “Andrew has a lot of potential but he doesn’t apply himself.” What does that mean?!

Anyways, we have a preset called Sure Target 2 that uses expressions to link together a camera with several 3D coordinates to save time animating. Now it does a pretty good job but admittedly, it can get bogged down with too many targets and all the features turned on so we added features to make the lag controllable. For example, we have a feature to bake the expressions into keyframes so you don’t have to reprocess the expressions after it is processed. This is ok when you are done animating but the process to bake the keyframes is a bit slow too. Surely, there must be a way to allow higher level of processing expressions?

One Possible solution with some benefits:
Make expression automatically cache the keyframes so that the values become absolute instead of on-the-fly calculations; this could be a switch you turn on and off too for specific values. Then if these values are changed or affected they could be updated and re-cached, but like I said, the current cache system or keyframe baking is much too slow.

Bottom line is the core system of expressions needs to be improved to make them faster throughout the applications. Do I know how to do that? No. Frankly I don’t even know how it works but programs like 3D Max seems to do a good job and even the python in Blender and Nuke seem well integrated. Though it is hard to compare apples to apples but what could be learned from these structures and applied in AE?

So why not just make a plug-in:
The nice thing about expressions is that 3D layers in your composition still interact, intersect and even cast shadows. A plug-in only renders inside a solid layer and essentially does not interact with the layers in the After Effects 3D space so effects can appear out of order. I guess the plug-in architecture could be changed to use real 3D space but that discussion is for another day.

My feeling is that expressions should be integrated on a core level so that they run as fast as any normal code process and not a layer on top of the system. It should be embedded it into every parameter and allow access to addition data types ( like slider controls) for other information. Why we’re at it, let’s add a real 3D coordinate controller and perhaps and a way to manage some of this stuff to make it easier for people to deploy them without having to be a programming genius.

There are already several great presets that use expressions and if expressions were more capable there would be no limit to what is possible. The new system should allow users to include and exclude groups of layers without having to assign expressions to every layer. These target layers could simply be controlled by a master expression and you choose what settings are inherited.

It’s hard to explain exactly but think about the parenting function. You parent multiple layers together with a simple pick whip and then moving the parent layer moves the child layers at the same time. This idea could be taken further by having a parent option box, that listed the transform parameters that you want to inherit. You could choose to exclude the rotation, so everything else would move accordingly but the rotation would be unaffected. I know there are ways to do this example but the idea is to control many layers without having to add expressions individually to every layer like our 3D fallout preset.

“But I don’t use expressions…”
Whether you use them or not, a new system could allow better and faster tools for YOU, that would be simple to deploy and easy to add or remove without getting a million errors when you delete a referenced slider control. Then pulling out you’re hair because the variables are just names of fruit drinks and 80’s rock bands.

Things like Global Variables, would be nice too. I say THINK BIG, expressions don’t have to be small self-contained functions on every value, but instead they could be the life-blood of every parameter through-out the applications just like in the movie Avatar but you don’t have to wear the 3D glasses.

I should probably proof-read this after lunch but I’m hungry now!

So, what would you like to see? What problems have you had with expression that could be improved?

10 years ago
Jakob Wagner
4 years ago
And here 6 years later, I accidentally stumpled into this thread. Everything you write about speed and a master expressions, is exactly how I would say it today. Non of this have been addressed by Adobe. Perhaps you should take this up with Adobe again, now where your powers have grown. :)
8 years ago
I totally agree with you, specially about the inheiritance from the parenting function, I just got myself stuck on not being able to make a motion like I want to, because I'm stuck into expression brainstorming trying to solve this

I'm trying to make a motion just like the one you did testing the orbit preset with the icons without having to have the inumerous null objects... the part that puts it away from the center is ok, the expression runs good with some sliders, but when I try to rotate everything maintaining the orientation, I could just parent everything to a null and then rotate the core and minus rotate each object to keep the orientation, but again, if I ever parent the objects to anything, the radius part is just blown away to a random place in the 3D space...

if only I could inheirite only the rotation, I'd be happy go lucky, but again, adobe making our lives complicated on purpose...

Another thing that could be done is being able to put layers to folder groups, just like in photoshop... I know it can be completely resolved in terms of user interface design without affecting the actual workflow we're all used to... but sometimes adobe seems to be lazy to do some core optimization, and choose to work instead into something random and complicated that we would only use every now and then...

I feel this kind of problems happening to other adobe software too, such as photoshop and illustrator... and I wonder... why adobe? why? some things could be so easily done... I know they could...
tom london
10 years ago
hey do all your products work with after effects cs5
10 years ago
Andrew, there's no need to apologise for your jokes.
While I find some of them to be a little corny, some make me laugh. But, corny or not, they do have some entertainment value, which is an asset when included in a tutorial. It's always easier to learn from a teacher who adds something to break up the instructions he (or she, not that I doubt your manhood) is giving. I've watched video tutorials on other sites that have me falling asleep, before they're halfway through. Listening to the same constant monotone for the duration of a tute is tiring and not conducive to effective learning. I've never had such a problem with your tutes (and I've watched them all), because, not only do you throw in a joke here and there, you also vary the pitch and cadence of your voice throughout the tute. Please, don't ever change your style of presentation, that's what makes your tutes stand out from the rest. Thanks for all the time and effort you put into Video CoPilot and the excellent tutorials. Your site is the best AE learning resource around.
10 years ago
What they said. ;) Seriously, I think you make a strong argument, and I would love to see one or more of your ideas implemented. I've often wondered why independent parameter control within parenting wasn't included a version or two ago. Thanks for your continuing contributions to the AE community. I hope your voice is heard and more importantly, LISTENED TO, by the team at Adobe.
10 years ago
what has me completely confused is why they didn't add GPU acceleration to the after effects timeline. I guess there would be no reason for us to by CS6 then.

They could surely do some of those calcs on the GPU... although I'm not sure what the GPU is good for as I'm also a bit ignorant of programming.
10 years ago
+1 more for global variables.
10 years ago
I have facing some problem while working on my motion graphics project like wht efect could be use, wht color require n animation..Giv me a guide to work properly in any ways..
Julian Herrera
10 years ago
My main suggestion for the future of AE is a node-based 3D system. The 2d system is and should remain layer based as that it what makes it unique and gives it some advantages. However, Nuke inspired me to think... what if AE's 3D was node based. And in this 3D cluster, the last node would be a scanline render node, which in turn would translate to being a 2d layer. TA-DA, best of both worlds.
10 years ago
hi i am a crazy fan of video copilot so andrew plz tell how can i use a video file in web that make in after effects. i am waiting ..............
10 years ago
Well for one thing, problem with me and expressions so far is that there isn't the proper guide for then shipped in with after effects. though it has been 1.5 year since I've started using after effects, but I still can's figure out how to use them properly. they seems so mathematical and complicated.
Jeff Linville
10 years ago
AK, I never really used expressions that much until I found your site and your kick butt tutorials. I now use them on a regular basis and can usually make simple ones without having to always look something up....BUT I know it's been said already but I would love to see expressions and effects and scripts in AE become nodel based. I hate programing!!! Especially in a command line kind of way. (ahhh just made me think of MSDOS, scary) I recently had to learn flash because of a client project. What I hated the most about flash and action script is that now I'm a "developer" not an artist! I think the way Cinema 4D handles writing custom expressions is kind of a good compromise. Plus nodel based compositing is sooo much nicer and faster. Can't really ad much more that hasn't already been said other than I totally agree with most of this thread and that you ROCK.
10 years ago
Maybe a command window that you can save expressions to like presets so you can drag and drop and not have to remember what to type. Learning and understanding expression is a very steep process. And a switch that allows layers not to respond to adjustment layers as preconping all the time isn't always an easy solution as some of the layers to to respond to other adjustment layers
10 years ago
+1 for global variables! I was shocked the first time I tried to do something with global variables, only to find out they didn't exist at all...
10 years ago
i just tired ti parent camera to many nulls, why they can do some aditionals controls to it. Camera alrehy have rotation and orienation options but can add without parenting some sithing like tilt or shift by default in a list of camera properties, like in new cinema4d r12, that help some times, i know that making parent null to camera is nos so difficult, and you wrote a great plugin SureTarget, but in a smoll and fast works i want to make it realy fast, why i need to speng time to such stupid thing as parenting camera to nul for only one reason. to make camera rotate around object, this is common task, why is so complicated ?
Sorry for bad english
10 years ago
I think the main problem, much like many other Adobe apps is that it was an aquired product, desgned by CoSA, taken over by Aldus and then finally bought out by Adobe.

I suspect a lot of that core data is still the same as it was when it was built. Years ago, I worked on a computer project based on COBOL. The product had built up a following over many years, but the core of the system was designed by a programmer who had since died, and NOBODY dared touch the heart of it in case it all fell apart. It was rather held together with bits of string and sealing wax.

My point is, ideally, AE needs a complete reassessment, and I would have hoped this would have happened in the 64bit makeover, but it seems they have just ported over what they could, and tweaked the rest.

Global variables are a definite big number one fix, but the idea of "baking" routines would be good too.

Jason Simpson:
That is not a global variable, simply a lookup. The whole point of a variable is that it can vary, and as you cannot use an expression to write to a text file, it doesn't do the job. Dammit, even my Commodore64 could store three-dimensional variable arrays in memory - why can't AE?
10 years ago

"You can always put your expression onto a text layer, then you can refer to the sourceText and have many properties use it as their expression.

For example,
• make a text layer
• write "wiggle(2,250)"
• make another layer
• apply this expression to one of the transform properties:

eval( thisComp.layer("myText").text.sourceText.value )"
10 years ago
I agree with Joe Clay's early comment re: mask points. If you were to ask me "What is the ONE thing you would change about AE?" My immediate response would be "I want to be able to link the position of a mask point to the position of a null, and to animate mask points (and their Bezier handles) as individual items in the timeline. The option would still be there to change the whole mask with a single keyframe, but the inability to keyframe (and animate with expressions) only two out of 8 points in a mask is a constant frustration.
Sam Stickland
10 years ago
10 years ago
Mylenium is on the right track.

A few more things. If they add code hinting, they need to add a way to turn it off. I absolutely HATE hinting. I prefer coloring. If it turns the right color, I got it right. I'd rather learn all the things I need to know than have it tell me, or even worse, tell me the wrong one or give me a list to choose from. God I hate that.

It'd also be nice if the default behavior on a failed expression took you to the error, or at least informed you of it, but didn't close the editor and switch the damn thing off. That's further compounded when you make a mistake on tons of layers and have to undo what you did in order to get the damn expressions working again. Then you have to fix it, and redo what you did before.

Line numbers are a MUST.
10 years ago
I was thinking about this a bit more and I think that, as has been said, global variables would be awesome. It would also be nice to be able to name a property/layer as a variable and access it elsewhere in other comps with just that variable name, instead of trying to arrange the windows to pickwhip it or write the convololuted comp.layer.blah syntax. It'd be cool to name a layer foo and then be able to get foo.posX, foo.position,foo.scale, etc.

If they made a new interfact/window for dealing with expressions, it would be cool to have a drawer in it (like on preview in OS X) to store often used code. A lot of the simpler expressions, like orienting layers to cameras and what not could be put in there by default so that newcomers could get that info and play with it more easily. Basically include everything that Dan Ebbert's and the like have done and throw it into that drawer.

Also, there is a way to bake an expression. It's called Convert Expression to Keyframes. It even keeps the expresion (and turns it off) so that you can edit it if you need to. It's actually a pretty decent solution that I don't use often enough. It's just a slight annoyance to have to delete the keyframes in order to change it afterwards, and if you just added the expression to the original values (value+[newX,newY] for example), you have to adjust it back to those values.

A nice function index somewhere would be nice. Something to explain the methods that are available and what arguments they take. A way to make your own functions would be nice. Perhaps that's available but I haven't seen it.

Anyway, there's a lot more, but these things are highly important.
10 years ago
Hey Andrew,

You couldn't have pointed out a more poignant problem with programming in After Effects (excuse the outdated alliteration). When I attended the launch of the CS5 Suite, the one thing running through my mind was, "OK, so now you've harnessed 64 bit processing and my After Effects comps will be using that to speed up my work on HD but what have you done to Expressions, one of the most under-glamourised features of AE?" I did ask the good blokes at Adobe and they said, "Well, we've done precious little in that department. Sorry kiddo! Nothing new". I think it's criminal. Expressions are fantastic (and I'm a newbie at coding since I'm more of a WYSIWYG user). At the very least Adobe could have made expressions more accessible to stragglers like me or more "expressive" for users like you (whom I constantly plagiarise apologetically). It's a shame that Adobe hasn't come to grips with the power of expressions and done something to bring it out of the shadows because (frank admission) I love this company and the guys behind it who put food on my table and would love to see them serve up even more, even faster, even yesterday. But tomorrow will do just fine if they can just get to it.

With best regards to the Cappy on board VideoCopilot

K. (India)
10 years ago
I've already thought about global expressions, when I tryed to create 3D sphere in AE. I had to do a lot of same complex calculations in several different layers. So my expressins worked about five times slower then they could. I think global expressions and variables is a great feature.

E.S. Sorry fo my english..
10 years ago
the Adobe After Effects Team needs a new, fresh and open product manager!
Jared Jenkins
10 years ago
I think Unity3D has already been mentioned but I still feel like noting its Workflow next to Adobe's.
I just began to use unity and the best thing about it is that you could create an entire flushed out game with a few basic codes (that it comes with) since its interface is mostly drag and drop. I am just discovering the power of coding and I must say, VERY USEFUL.

Adobe has a great interface themselves. Everything is just sliders and adjustments. But opening up the core of the program or something to allow various scripts to be implemented smoothly into AE seems like a major change and improvement to the capabilities of AE. Definitely a necessary feature in AE CS6 or later.
10 years ago
I think the biggest problem is that Adobe products has been too good. this cause killing all the other rivals and making Adobe the only company that creates professional video composting software. It's nothing about the Adobe Company it's about the others.
Rivalry is one of the most important keys to improve that we do not have it.
it's not just about the expressions.
10 years ago
If you stop working on tutorials you would have time to talk to your wife! JK!!! Don't stop making tuts, but do find time to talk to the wife! They are a blessing!!! Tell her thank you for us for sharing your time.
10 years ago
If you're talking to adobe tell them to include an expression snippets panel.

Thay have something very similar in flash cs5 for action scripting which is very handy, would be cool if they had something similar for AE exporessions.
10 years ago
Agree with every level.
You should point that out to Mr. Coleman, plus a complete rework of the Ae interface making it smarter to work with.
Let alone the way you add expressions, the dialogue is pretty lame and outdated, fiddling around with you mouse to create more space for writing expressions, what about HUD in general? Does it take another 5 more years to apply what apple is doing since ages?

Context menus do not apply accordingly to specific areas in the interface, you still need to take the ride to the menu bar giving your productivity the brakes.

Adobe! Again for the Nth attempt: Stop adding non-wanted features making another release just look bigger as it is and start to improve workflows and usability!!!
Going 64 Bit was a natural in terms of computer evolution, maybe a big deal for Adobe?, but no excuse for lame UI programming and usability.

For christs sake, how someone at the Adobe Labs could think that a release including a roto-brush will nock off so many socks who use Ae generally for Mograph, not Compositing?
If someone will do serious and efficient compositing work (and further) go and grab "Nuke".

The Ae product management should really stop to back the wrong horse
10 years ago
One of the thing the most tedious with the expression is the fact that the code is localized in the language you're running after effects. It's totally dumb and there is no reason for that, especially because you can't even swap the language of After Effects easily…
10 years ago
I'd LOVE to be able to parent an entire plugin to another master plugin. Also, Cumbustion had some cool ways to loop, pingpong, bounce, etc keyframes and they'd show up in your graph editor for easy manipulation - not just an expression property. Cumbustion had a leg up on AE in expressions - other areas...not so much.
10 years ago
I have not checked each comment. But I'd really love to see After effects expressions to be a part of the entire code like mentioned. Take maya for example, mayas embedded language, mel is maya itself.

I love being able to work with maya that way :D
10 years ago
I would like a better page turn effect. One that you can choose the back color without creating a new layer. Also one that would not crop off at the layers edges. If you could do that i would be sooo pleased. And you could make good $ on that just selling it for $1
John Percival
10 years ago
Great topic and one I have been thinking about a lot lately. Taking consideration in the of cost of performance, I feel the investment into this would only benefit for the future of AE. No matter how big of an undertaking it is.

Some of these have been said but just to reinforce...

• Code Hints!
• Robust Expression Documentation
• Auto Format Code Button
• An Output or trace window while the CTI is moving (without outputting to an on screen text layer in the comp)
• Writing one expression and apply it to multiple layers with out the redundancy of copy/paste, target the layer/properties you wish
• Line Numbers (cannot agree more)
• Reduce or remove rendering for content not within the viewable comp frame. Ex. A particle generator produces 500 particles 300 of which are viewable within any given second. The other 200 would render at half of its resolution or even not at all to speed up performance. Much like video garbage collection.

"I also would not overstate Flash’s realtime abilities – a lot of that requires extensive knowledge and massive optimization. If you just throw together “dumb” code, Flash will slow down to a crawl just as much as any poorly programemd app."

*Dynamic Elements and manipulation at runtime would just blow my mind in AE. Massive optimization or more would definitely be needed but this would be a complete game changer. I'd love to learn or find out more.
D4 Manager
10 years ago
Should improve audio too
10 years ago
You should make a petition on videocopilot and send it to adobe
I'm sure we will be out number
maybe it will working

x cuse my english

andrew we love you
10 years ago
there's a lot of reasons, that I avoid using expressions on a regular basis and for more complex problems. I know it should work but don't know how to get there. maybe referencing properties should be easier (pickwhip) or maybe some popup help or dropdown options would be nice.
concerning the processing speed I find your idea of buffering great but I'm sure some expression gurus like dan ebberts could contribute more to this toppic.
CS Mann
10 years ago
Andrew, buddy...did you write all of this while you were waiting for your expressions to compute?

Best of luck to you and your wife - or you and your couch.
10 years ago
hehe this is really funny... lots of ppl talking to AK, with too many ideas, expecting him to answer... and he only answered to samuel XD
10 years ago
cs4 is better than cs5.... only thing is cs5 support morethan 4 GB(s ) of Physical RAM. adobe should give some updates which improve the expressions! Speed. thanks ANDREW
10 years ago
AK after you send this request to Adobe you should send it to Dan Ebberts as well..He is the Master of expressions! he needs to have his saying..I think lol..
10 years ago
Being a noob to AE, I was seriously expecting it to have a fully matured scripting language like Flash's Actionscript. Seriously, expressions?
Chris Slowik
10 years ago

Now that I think of it... you're right. I do a lot of js/jquery coding and I guess I just never realized it because Code Hinting is such a HUGE necessity in my mind... Even just from a speed standpoint, it makes my coding so much faster and typo-free. It's maddening when I have an error in an AE expression and it tells me there's no such function on some line number... and I have to find the thing that is not in the correct case.
10 years ago

Thank you! That would help me in my next project! I didn't know about that idex function. If it is in the AE expression menu, I didn't found it - sorry.

Pasting in expressions may work for general things (I already thought that would work - but didn't try it before I coment - sorry), but it is not working for the per-character 3D text funktion of AE.
10 years ago
@Samuel, I know :)
Samuel Andrês
10 years ago
Andrew, Dude! Your wife is gonna kill you :)
10 years ago
"Another problem in that project I’ve done was that my expression needed a number that is on the actual layer one higher than at it was at the layer before. It would be great if you could generate something like that for multiple layers and not have to change that number on every layer."

That's what you write the code for - index+1, index-1 or whatever. Sorry, this is not a sensible request. if you need to have specific IDs or layer dependent values, you calculate them. Following your request would only end up in mayhem.
10 years ago
"So it would be great to paste expressions to multiple layers at once."

You already can. Just like all operations in AE, pasting expressions is context aware and expressions will be added to the same properties on the target layer that they were copied from the source layer. You just need to make good use of the "copy expression only" feature. The normal copy&paste also works, but requires the target properties to be visible in the timeline.
10 years ago
"Remove case sensitivity. Why does it matter what case you use?"

It matters, because it matters in any ECMA script/ JavaScript implementation (and many other programming languages). I think this mostly touches upon requesting a auto-complete/ code hinting feature. It would help a lot if the program would offer some guidance and tracked variable names...
10 years ago
I want to add some other ideas to this discussion:

So I would like to add expressions to multiple layers at the same time. At the moment I have to type in the expression for the first layer. After that I copy it and open all that drop down lists of my next layer, alt-click the right stopwatch and paste it in. That's what I have to do with every layer and in my last project I've done that for about 50 layers for a per-character 3D text animation and it was really boring and took a lot time. So it would be great to paste expressions to multiple layers at once.

Another problem in that project I've done was that my expression needed a number that is on the actual layer one higher than at it was at the layer before. It would be great if you could generate something like that for multiple layers and not have to change that number on every layer. Another way to do that would be to make the layernumber of AE usable in the expression.

My last idea is to make same expressions changeble globally. So if you copy-pasted an expression on maybe 50 layers and you see there's something wrong there, it would be great to change that globally for all layers you applied the expression to. That could also help at the already named language support problems when a slider is named in your native language and all expressions using it are disabled. If you could change only the link to the slider in all expressions at once into what the slider is named in your language it would take only a few minutes to translate a project. Another thing this would be great for, is easily change the source of information in expressions. So if you linked for example the transparency of a null in an expression for maybe 50 layers and now you don't want to use the transperancy of that null and want to use a slider control instead of it, it would be great to have some kind of way to change that globally for all expressions, even if they are different, that are linked to that transperancy of the null. I think for that idea a new interface for expressions in a seprerate window would be needed.

I also like the interface changes like all that people said before me!

Hope Adobe could integrate some of that features!!!
Stephen Barrante
10 years ago
Chris Slowik
10 years ago
Mylenium..... <3

yea those are great ideas
Chris Slowik
10 years ago
* Autocomplete. Good lord, implement this. It's in all the other CS5 programs.

* Remove case sensitivity. Why does it matter what case you use? With no built-in code reference or autocomplete, making us remember case on functions we use is annoying, not to mention figuring out how to use new ones.

* Pull expressions out of the keyframe for the property. Or, at least give us a global code file that we could write reusable functions in, and store global variables. PLEASE! Then, you could write one function and use it to control multiple layers, instead of having to keep each layer updated when you change something. Also, it would be easier to see what expressions are doing what.

* This kind of goes along with the above... but a variable tracker window would be nice. Sometimes, if an expression isn't doing what I want it to, I really wish I could see how the variables are changing. From a programming standpoint, this is a necessity.

* Also, if they take expressions out of the property, we could KEYFRAME expressions! How many times have you wanted to have an expression turn on or off at a certain part of the composition? Really want this.

I'm sure I'll think of more, but those are super important.
10 years ago
"I’m actually a bit surprised that Adobe hasn’t simply replaced Expressions with Actionscript 3"

No thanks, the last thing we need is more clunky flash code creeping into other apps
10 years ago
"Make expression automatically cache the keyframes so that the values become absolute instead of on-the-fly calculations..."

That's never gonna work. You just try to fix one bad mechanism by throwing another bad mechanism on top of it - adaptively figuring out which data to update in the end will cost you more performance. no, it simply needs to be optimized as hell and be fully multithreaded like Python is these days.

"The new system should allow users to include and exclude groups of layers without having to assign expressions to every layer."

Again, same problem as above - you add another logic layer that needs to be managed and costs performance.

"5. The actionscript compiler is already highly optimized for dealing with both raster and vector content which should make previewing/rendering much faster."

Flash doesn't even do motion blur, so I don't see the relevance. By all means, rendering for video has hugely different requirements (fields, anyone?). I also would not overstate Flash's realtime abilities - a lot of that requires extensive knowledge and massive optimization. If you just throw together "dumb" code, Flash will slow down to a crawl just as much as any poorly programemd app.

As for the rest - yes, it needs to be "core", but not in the way anyone who has commented implies it. There's too much throwing together unrelated issues here touching upon separate features. Fixing all this would take quite long to implement, anyway, therefore may i suggest to focus on short term fixes that are IMO attainable.

- Line numbers in the editor - it's ridiculous that you get warnings about "an error occurred on line xxx" and then have to count or use external editors to actualyl find them.

- Code coloring.

- Multithreading/ multiprocessing.

- Out of order processing for temporal expressions for quicker feedback.

- General speed optimizations/ JIT compiler.
10 years ago

Yeah, I think the same thing!
Someone has a Studio and money to spend time to learn expressions and more... Normally if I need a kind of expression the faster way is copy and paste from other website.

Si, lo penso anche io.
Questo è possibile se si possiede uno studio e soldi e tempo da spendere per imparare le espressioni. Normalmente se necessito di una particolare espressione la via più veloce è copiarla e incollarla da altri siti web.
Mister Big
10 years ago
You should come to Seattle and make your case!
10 years ago
While I know that the application code base is very different (Macromedia/Adobe) I'm actually a bit surprised that Adobe hasn't simply replaced Expressions with Actionscript 3.

Before everyone screams in outrage let me point out a few benefits to this approach.

1. AS3 is a mature language and therefore is well documented and can be written in many different environments (Flex, text editor, built in IDE) that all provide decent syntax highlighting and auto complete. AS3 also has a huge user base so its extremely easy to get help with issues, something that never seems to be the case with expressions.

2. Actionscript is already contains classes and functions (either native or 3rd Party Plugins) for most things that Expressions can do and it likely wouldn't be very difficult to add in additional classes for the rest.

3. The Flash IDE already contains lots of "presets" that simply write code for you so even those people who have no desire to learn the code would be able to easily jump in and start using this solution.

4. The move between Flash and AE would become much more transparent for both content (files, assets, etc) as well as content creators who would be more familiar with the processes across the board. This also means that transferring projects between delivery mediums would be streamlined.

5. The actionscript compiler is already highly optimized for dealing with both raster and vector content which should make previewing/rendering much faster.

Now granted I'm sure this process isn't "easy" for anyone at Adobe or even all the AE expressions experts who would end up needing to learn a new way to do things (already happened for Flash users going from AS2 go AS3). However, I do really see a lot of benefits to this approach and its being done in other apps that make use of standard languages like Javascript of Python.

Just my $0.05
10 years ago
I'm not sure how the internal expression engine works, but one way to improve speed would be to pre-parse expressions as soon as they're witten.
Maybe they could even be internally translated or compiled into a much faster code.

The point is that AE should not have to go back and re-interpret the expressions for every keyframe or every pixel or whatever.
10 years ago
Curious Andrew owns AE :)
In my opinion we should ask C++ experts programmers, as they are familiar with low level coding.
They should know how Expressions work inside AE (Compiled vs. Interpreted languages).

[Andrew said:"A plug-in only renders inside a solid layer and essentially does not interact with the layers in the After Effects 3D space so effects can appear out of order."]

I agree with you Andrew, but I have noticed that the Zaxwerks pro animator plugin interacts 'partially' with AE's 3D space: it can uses AE's Lights and Camera.
10 years ago
I forgot to really participate.
There is some proposal who've allready made but, still :

*Colors for variables, keywords, etc.
*Customisable schemes would be great too.
*Hint while you typing (like in any serious programmation software... you start typing, the soft display proposals).
*Possibility to get a dedicated frame.
*A Complete help (like in ActionScript 3) wich details every available keyword

-about CODING itself
In a general way : a bit more professionnal stuff please *Global variables
*Global function
*Function who returns values, boolean, string, etc,... *Classes management?
*A code/syntax check button
*A code/syntax re-arrange button

*Make object/time related expression compatible with "multiple frames rendering"
*Improve speed hard/live rendering

The main priority is about performance. The second is interface, and the third is about the coding itself.
10 years ago
Hey I say whatever Andrew Kramer wants, Andrew Kramer gets. Don't just submit this to Adobe as an idea for improvement, you march right in there and TELL them what's going to be in CS6. If they make any waves, just tell them they had better do what you want or you'll branch off and create your own compositor. That'll put them in their place. ;)
10 years ago
What Adobe needs to add is a native background renderer and better multiprocessing RAM previews. Something similar to Nucleo (but works...)
10 years ago
I agree that expressions bog down AE...but at the same time...some of the comments posted I do not totally agree with. It seems like there are some heavy coders that would like to just write code and make things happen. I don't think that is a solution...if I wanted to code...I would have learned Flash. I think a node system like C4D would be nice. Xpresso is really powerful and gives you alot of options an control. But still some peoples view to make AE more code heavy is a total turn off to me...Just my opinion
10 years ago
They should really will. As you said, using advanced expression (especially object related) get the things slow as hell without any visible real reasons. The worst thing is about multiple processing who just cancel expressions. Also there is no reason for that.

If you create a expression "valueAtTime" or ".speed" and browse the results while disabling live render, it display instantly the values.
And what about the "show post expression graph"? If it can display the value that will be at frame 10 while you're at frame 1, why the f... MP couldn't calculate it?

Improving expression compatibility & speed could push AE even higher on the professionnal scene... Adobe should really take care of that.
10 years ago
hi, okay!
I think e should recognize files generated and exported from 3d programs such as 3dsmax and blender, this would greatly facilitate our work. I believe that video editing has a lot to learn from the audio programs.

Até mais!
10 years ago
I am not a software engineer, but if Adobe integrates a version of Actionscript into AE, I think there will be a lot of advantages, think only to how many people use it currently with Flash and how fast the code has become in version 3.0
10 years ago
I like you as kobe! you are the greatest man in your domain!I admire you so much,watch every tutorial of you!
give my best wish for you ,hope you are happy and health.give us more awesome tutirial!
10 years ago
Admittedly, I noticed the decrease in speed when using sure target with multiple targets but merely attributed that to my pc. This makes significant sense and I would be interested in such an improvement.
10 years ago
My biggest problem with the expressions is that you can't use them to adjust audio levels and for something simple like turn down a bit 3 of 4 audio passes for slow motion FX you must keyframe it instead of pick whip with the main FX.
10 years ago
Adobe is not going to change After Effects?
Because, they're Adobe and you're not.

Haven't you learned, yet, Andrew?
If you want it done, do it yourself.
Create your own version of AE, just like you have created everything else that you needed.

10 years ago
I like the auto-cache idea... partly because of increased speed, but also because I hate it when I apply an expression, love the results of my first render preview, only to be heartbroken (it actually causes me to break into a certain well-known song- when subsequent renders are completely different due to random calculations.
Anyway I'm still on CS4, so I know not of the speed improvements in CS5...
10 years ago
Global variables and functions that are not called per frame would be incredibly helpful, be it only to create triggers for certain events.
Speed is of the essence, of course, but I would put usability improvements over speed improvements, really. Expressions are immensely powerful und useful and there's no reason for them to lead a wall-flower life.
10 years ago
Hey Andrew,
couldn't agree more - since Adobe owns actionscript, why not borrow from there - persistent global variables would be massive - I write a lot of maxscript and when I get to AFX the inability to store, modify and retrieve values in expressions really puts me off.

A decent editor window for scripts with de-bugging would be cool too.

10 years ago
I'm for node based Effects and Expressions too, instead of global variable.
And please not scripts like in Flash, for non-programmer it's awful :)
10 years ago
I think there should be also an autocomplete for expressions, e.g. if i type wig -> top down menu with wiggle on top, which i can choose,
then if u begin bracket u get the parameter informations, just like in coding enviroments.
10 years ago
For this poker cards:
i was forced to use expressions to make them looks good.
When i started this prject i nerver think i'm gonna use expression to make something so simple. I think expression should be more integrated in plugins like the calculus plugins. This is a powerfull effect but without expression... tricky to make something interesting.
10 years ago
good luck miss. Kramer !
10 years ago
Sure, expressions should be better integrated into the software. But for this to work, I think they'll also have to improve their language (not meaning that they're rude, or anything).
What I mean is, I always try to use after effects in English, but somehow, some companies I work at buy their software in French (maybe 'cause I work in France).
The bottom line is, when I setup expressions in one language, for instance something controlled by a slider, and then open up the project on a different computer, you find out that "slider control" is called "contrôle glissière" or something (complete with special characters and all) and all your hard programming efforts are shattered into a million pieces of pure anti-nationalist hatred. Which can be a problem...
That also can occur when going from PC to Mac due to unsupported characters (I mean COME ON why put them in your software when it doesn't support them? They end up as "trac^$" or something...)
So I guess the best solution would be NOT to translate the software (especially not with Google). But since the ones who USE the software aren't always the ones who BUY it, Adobe might think about correcting this issue by, perhaps, standardizing the default names of effects or other elements once input into the expressions. Or maybe keep track of translations and applying them to the code (but that could be dreadful too). I don't know. But company managers are going to continue buying software in their native language and we need some protection against that!

shrek 2
10 years ago
I hate programming though expressions are very useful and can be better, so I'm with you!
Matt B
10 years ago
I agree Andrew. A break down of what the different math expressions do would be cool too.

I would like to know how your programmer learned how to build plugins (ie: Optical Flares). That seems to be in a whole other realm of thinking than just using After Effects for graphics or compositing.

Also better integration with effects and the collapse transformations switch would be nice. I run into this problem more often that I would like to with a whole range of effects.
10 years ago
It's been said a hundred times, but I'll add my vote to the fact they should have a predictive code tool, or some sort of coding assist.
Kayson Wong
10 years ago
As a programmer I do find the expressions environment in AE is quite un-userfriendly.

I propose:
1. Faster system, and probably a cache, as Andrew suggested.
2. User-friendly environment for editing codes, such as different colors for different syntax, and a dropdownbox of the next possible statement
3. A debug feature that would allow programmers to keep track of variables and other errors in complicated codes easily.
4. The ability to set up a global function in the comp/project and call it whenever needed. This may be just a simple function which returns numeric values, or a more complicated one which controls the layer that is passed to it.
5. Better naming system for calling layers or controls in a particular layer. Something like this.layer["Null 1"].Controls["Speed"] or this.layer[0].Controls[0].
6. The ability to copy a set of values from a set of controls to another set. Something like layer["Second"].effect["Move"].controls.values=layer["First"].effect["Move"].controls.values
7. A unified 3D coordinate system. The particle world effect should not have 3D coordinates which require conversion, and other plugins which require 3D should put X,Y,Z all together instead of X,Y and Z.
10 years ago
Very interesting points Mr Kramer... I agree with these thoughts. Although the system from Adobe is very well made there is always room for improvements (BIG improvements)

See what I did there!? I made all of the letters in the word "big" big! So it's like a play on words sort of thing, Like when you right...OH SCREW IT!!!
10 years ago
To be honest... I agree with all of you here, However I would rather see a truly integrated 3D environment like Nuke or Smoke. If we have 2.5D camera's can't we also have real 3D effects so that layers can have bilinear deformers? Although it's important to have fast processing expressions, the real ideal is to have a fully integrated 3D compositing system.
Rapture VFX
10 years ago
I recently upgraded to a xeon core system to go hand-in-hand with CS5 and had never ran into any high amount of expression lag until recently. I was working on a project with a lot of tricky camera movement and heavy effects, myself and my partner could not work out why things where starting to bog down the more movement we kept adding even while turning off effects. CS4 having such an quick choke point this expression problem has never really been an issue personally, but i can honestly see it will start becoming a huge problem in future AE releases if measures are being work on by adobe now.
10 years ago
+1 for access to mask points and shape layer points in expressions
+1 for a separate window pane for editing
+1 for speed increase
10 years ago
I'm a huge fan of expressions. I was a programmer before turning into motion graphics and such...
And even if I like the power of expressions, sometimes, the way we have to use them inside After Effects is annoying. I'm working on a HUGE tutorial that use extensively expressions and I'm pissed by, for example, the way you can select expressions from the list to avoid you typing them, but you have to delete some parts of it... Like "degreesToRadians(degrees)" and then you have to go back into it to replace "degrees" to the actual variable you want to use.

The Xpresso module in C4D is easier to use in the way you have bricks of elements you link together to achieve the same goal.
10 years ago
maybe something like a switch for dedicating one core to expressions? when calculations aren´t complicated but many it seems to me that prioritizing of what gets calculated when could be off.
Helper hand
10 years ago
It's annoying how you can't simply stop expressions after a certain amount of time/frames... "use sliders" they say...
10 years ago
I've always thought that Adobe could provide more in-program support for expressions. For example, tool-tips for various expressions is something I've wanted, since other programs (such as Flash or Dreamweaver) have an option to view tool-tips when you type the function in.

Also, it would be awesome if Adobe could allow a new type of preset that you can compile into a simple interface, functioning similar to a plugin -- in much the same way that you can with Pixel Bender plugins, or Maltaannon's Custom Effects.
secret goldfish
10 years ago
I am finding, like a lot of people, that I only use really simple expressions. Anytime I have tried to do something complex, I've ended up spending a heap of time with mixed results and often ended up hand key framing things in a way I know will work in a given timeframe for a deadline.

Like others, I'm not stupid, but I am a designer, illustrator and art director, and don't have the time to be a coder as well.

I need better documented education on expressions so I am not just cutting and pasting existing code from other people and only half understanding it.

When the web first arrived and opened up opportunities for designers, I resisted doing web based work, mainly because many of my designer friends who did so were spending more and more time becoming coders than designers, and pretty half assed coders when compared to people like my brother who is actually a full time programmer.

I know expressions are pretty simple program language wise, but they could still be a lot more creative/designer friendly.

Expressions to me often just become too complex but for someone that understands coding better than I do, there is a great opportunity to create simple visual plugin like solutions that people like me would buy at a reasonable price.
Strata3d always had a scripting language on board that very few users actually made use of, they've recently added several useful built in scripts with an included GUI skin which has made the scripting more approachable for users.

It is a shame how much expressions can add to after effects and even though many of us know this a great many of us don't make use of them nearly enough because they are daunting and lack the visual friendliness we are used to in Adobe products.
10 years ago
Good suggestions. I don't know enough scripting to know what would make valid improvements.

But an expression to turn your NY footage into the "Blade Runner" awesomeness you have displayed above would be nice!
Jacky Liang
10 years ago
I've worked with flash in the past and I was really impressed with the intergration of ActionScripts in the program. It had a programing-like interface with a lot of supportive features that were really convenient and easy to use. I think adobe can do something like that to AE.
10 years ago
Hey Andrew, you mentioned Nuke. I have been working now with Nuke for 2 weeks now, it is unbelieveable faster than AE and the programming with Python is very nice. Unfortunately there is no Nuke-Andrew-Kramer out there for nice explained Tutorials...Maybe you could start a tutorial section for Nuke, so that people like me can watch your amazing tutorials for a node-based compositing tool.
10 years ago
Thats exactly what I told my girlfriend last week. Hmmm, now she´s gone... But you are right, we need some "expressions reloaded" inside AE. Although CS5 is a lot faster, the render management is still a joke! Look at Adobe Premiers realtime capability with a good graphic card and then look at AE...
10 years ago
I'm all for a node based system
Albert Frates
10 years ago
I completely agree with the issue behind expressions, and regarding the plug-in approach. It's a solution that makes me relate it to the way Node-based compositing works in programs like Nuke. But allowing the simplicity of After Effects to be used on that core level.

I'd say get a Video Copilot petition going. Layout the idea, and let us sign!
10 years ago
Well, I for one have always had a hard time with expressions beyond the very basic. I have found several examples from AK very useful in some projects.

That being said, I do know that at least for me, they can be quite complicated; and I consider myself a pretty smart fella. Some opinions here may differ, yet I digress...

I truly have not had the time to invest to really learn more advanced stuff. I've seen what others have done like Andrew and I've tried to take it to the next level or incorporate into another project.

From an IT standpoint with some development experience, expressions SHOULD function as the system code and I agree with what everyone is pretty much already saying.

I would think that a common expression code handbook or an actual reference for Dummies that allows you to look up expressions or apply pre-coded (word?) based on common language of something you were trying to accomplish, would be great. Again, I've not had time to really investigate beyond using the Adobe Expressions Help file, but the desire is there to learn them on a more granular level; so when it's something I've learned, it could be applied in multiple ways. Good discussion.
10 years ago
Andrew I just have something to say to you.....EVEN IF YOU'LL SAY THAT AFTER EFFECTS SHOULD BE NAMED VIDEO COPILOT EFFECTS I'LL BE AGREE WITH YOU XD hahaha, is not that you are nobody with no knowledge of what you are talking about! And sounds logical! Even better! They should do an update for this! There's no need for waiting to a new AE CS6! I'm working more with expressions now since I got into the world of cartoon animation and I could really use the speed up! You know what's the problem? PEOPLE IS AFFRAID OF CHANGE!!! I was! I though expressions could be complicated and boring and not very usefull but as a computing system engineer I had to give it a try! Now I love them! YOU SHOULD DO A TUTORIAL ABOUT EXPRESSIONS! So people is not affraid anymore of them! :D There is one in AETUTS about them! Here is the link:

P.S. I got the number of a great marital counselor! The first step is to admit there is a problem! Good luck! :)
10 years ago
I think that hints while writing expressions would be great, like Dreamwaver and Actionscript panel in flash. Also, maybe a better documentation and breakdown of it's elements and how it works.
10 years ago
Hi guys,
apologize my english.. but ther's something that i need to say, and i try also if you don't understand.

Script, expressions and the code generally scary people. Often the easy way to do something is copy and paste (from tutorial to plugin and presents) and this is the easy way to do EVERYTHING.
Someone else, like an expert try to find the easy way to do something without searching on the web a tutorial to copy.
But, expert people have time and resources to spend in a project, so if a script require hours, well they whait hours, until the process end.
On top, AE isn't a pro application.. at least that i know, so the problem don't affect the people who matter..

i don't know if you have understand.. so i insert the same text in my original language, italian:
Gli script, le espressioni, e lo scrivere codice, generalmente spaventano le persone.
Spesso la strada più facile per fare qualcosa è copiare e incollare (dai tutorial ai plugin e ai presets). E questa è la strada più facile per fare qualunque cosa.
Qualcun'altro, come chi è più esperto cerca, invece, la strada più semplice per fare quello che gli serve senza cercare tutorial sul web.
Ma le persone più esperte hanno, spesso, anche il tempo e le risorse da spendere in un progetto. Quindi se uno script richiede delle ore.. beh, loro aspettano quelle ore.


10 years ago
Never understood them, so never used them, but Yes go for it, if you can get them to make them so that even I can use them so much the better.
10 years ago
Unity3D has proven that Javascript can be lightning fast, as fast as C(# in their case). That much for expressions having deeper access to AE's core level.

I wouldn't mind having a node system either to solve many tasks currently only possible with expressions.

Great post. (Thinking about) making things better is so wonderful.
10 years ago
Doing something like this would take some doing so CS6 would be pretty awesome. If anything I would like to get this idea on a roadmap so they are at least thinking about it. I'm sure if enough people find interest, and they will, Adobe definitely to listen to the community so let them know how it will help you.
10 years ago
Adobe should sell AE to The Foundry. They are in my opinion the best the best post production software company.
10 years ago
I agree about the need for some sort of caching or baking of expressions. I have MANY times set up a expression for the camera and forgot that it was there. Then started hand tracking or rotoscoping something only to have the expression recalculate and mess up my work by throwing it out of sync.

My mistake no doubt there, but it would be nice to have an easy way to lock it once you like it.
10 years ago
As others suggest, a better editor. This my not 'speedify' the expressions, but it would be a good start. Not knowing how expressions are used in the AE engine I can't make any other suggestions other then, Ya, make it more efficient. that being said, they are great! Bonne Appetit AK.
10 years ago
With cs6 being so far away, we should ask for cs5.5!
10 years ago
Yes definantly. I struggle with expressions and making them better and easier to use would help me a great deal.
10 years ago
Yes expressions need to get faster somehow.
I got an AE project file from my client and the previous artist who left the job in between had used sure target 2 and made so many targets with high res images.I had to change the overall look of composition.
Camera baking was killing me at that time and we had to settle down with other default transitions..
Linear wipe saved time but killed the awesomeness i was getting out of sure target.
10 years ago
Oh yeah .. they should improve the Expressions >_<
I 100% Agree with you AK !
10 years ago
Spot on Andrew.

And Global Variables would be awesome!
I would also like layers (and Comps themselves) to have "Main Loops" to say tweak the position and opacity in one set of expressions instead of adding expressions to both parameters separately.
10 years ago
Everything you touched on would be a great improvement, especially the part about "parenting/pickwhipping" the expression to just a single or few layers, instead of it seeming to be attached to the entire project timeframe, thus slowing it down.

..and as thonbo mentioned, an expression hint list would be great for times when my brain is fried and I can't think

Andrew, I think all of your tutorials make everything in AE work better and faster and cooler for me....Adobe should pay more attention to you and your ideas.
10 years ago
10 years ago
I want button "bake keys for each frame", as it does wiggle expression with zero parameters, only by one button for all or custom chosen layers.
10 years ago
The main problem with expressions is that they scare people...

And if you're one of the brave ones who dare to overcome one, you'll probably get slow render times...

Conclusion: train monkeys.

Or make a faster, less complicated sys ^^
10 years ago
The biggest problem with expressions is that they recalculate for each frame. And if it's something that builds, it has to calculate it for every frame before it. That's mostly what I was trying to get at.

For some reason I'm hard pressed to come up with an example.
10 years ago
You can file feature requests and bug reports here:

Here's a post that gives suggestions of how to give feedback:
10 years ago
I'd love to see individual mask points that expressions could be applied to. I'd love to see the ability to easily keep a value from one frame to the next so everything doesn't have to be completely iterative. That might need explaining. I don't like that you can't easily ease a motion from a certain point without having to calculate based on frames or having to do a modulus to have it occur periodically. This would also allow for triggers. Functions would be nice. Like if(frame=5) do this function for 10 frames and then stop. It's annoying to have to use sliders to stop things. It's also really annoying to have to convert time to frames. There should just be a frames variable or something.

Anything to make it more like actual programming would be nice.

I apologize in advance if this made no sense!
10 years ago
I agree. Expressions needs to do some house cleaning. I hate getting errors over simple things.
10 years ago
Maybe an easy auto-fill content (like when you program a website in Dreamweaver or a CSS base platform program, like CODA)

More user friendly, I hate that you have to type everything from scratch.
10 years ago
they should include a better editor - as a window by it sel with options such as Reference lookup on functions and maybe even code completion and code hinting
10 years ago
Yes. You probably should proof-read it. LOL

But seeing that you mentioned Nuke, it would be interesting to know your opinion on it. Have you ever used it?
10 years ago
whooooooaaaaaaaaaaaa !! andrew
10 years ago
Yeah, I've noticed expressions slowing things down, but it doesn't bother me very much as I only use the simple ones.
10 years ago
Completly agree with you. Expressions are far too slow, even with the new, faster 64bit CS5