Creative Communities of the World Forums

The peer to peer support community for media production professionals.

Activity Forums Adobe After Effects Expressions Control the speed of appearance of a text

  • Control the speed of appearance of a text

    Posted by Gregory Wannwitz on October 26, 2021 at 12:45 pm

    Hello,

    I have a question on how to make letters appear at the same speed, even if the text has not the same number of characters.

    In my case, let’s say that I want to make a text appears at the rythm of 1 letter every 2 frames, the problem with keyframes is that the letters will appear slowly with a short text, and quickly with a long text.

    So I created a slider controler linked to the source text (text.sourceText.length;) that return the number of characters of the text.

    Then I created another slider controler (named “Animate On”) linked to an “Opacity Animator” on the Start value, with wich I can key the start and end value (On Start value:

    V = linear(effect(“Animate On”)(“Slider”),0,100,0,effect(“Character Count”)(“Slider”));

    Math.round(V);

    and on End value:

    effect(“Character Count”)(“Slider”)

    But here is the problem, the speed is variable depending on the length of the text.

    I looked for a way of making the letters appearing at the same speed but I do not find any solution.

    I put a simple project to see, because it is hard to explain in detail.

    If someone can help me here, it would be great help.

    Thanks in advance.

    Evgeny Lukovich replied 4 years, 7 months ago 3 Members · 4 Replies
  • 4 Replies
  • Tomas Bumbulevičius

    October 27, 2021 at 6:57 am

    Hey Gregory, first of – well done that you uploaded a project file to test with. Its a lot easier to find a workaround this way!

    I think it can be simplified, but a few things to clarify:
    1. Essentially, what you need to achieve is for phrase to animate phrase in a constant speed. Depending on their chars count, animation will change in duration if its 1letter / 2 frames. Is this correct assumption?
    2. If above is correct, keyframes has to go away completely from animate On slider. As now its the reason why animation duration is not constant for each letter. You are forcing it to fit within 20 frames, disregarding phrase length.

    Based on above thoughts and with least changes to existing structure.

    ~ Remove keyframes from Animate On;
    ~ Set Animate On slider to setting, for characters animation count/frame. 1 will be 1char every frame, 2 stands for 1 char every 2 frames, etc.
    ~ Remove keyframes from Range Selector.

    Apply below expression to achieve this, applied to yours Animator 2 Range Selector 1>Start.

    var animSpeedPerChar = effect("Animate On")("Slider");

    var numChars = effect("Character Count")("Slider");

    var frameDur = thisComp.frameDuration

    var animLength = animSpeedPerChar * numChars * frameDur;

    var res = linear(time, 0, animLength, 0, numChars)

    Math.round(res)

  • Gregory Wannwitz

    October 27, 2021 at 7:44 am

    Hello Tomas,

    Thank you very much for your answer, it is a really smart way of making it working ! And it is easy to change the speed with the use of the slider.

    I was totally struck with my keyframes as you understood it.

    There is so many ways to achieve the same result with expressions that you can easily go in a wrong direction and lost yourself.

    Thanks again.

  • Tomas Bumbulevičius

    October 27, 2021 at 3:02 pm

    Gregory, no worries, glad I understood the needs! There are without a doubt many ways on achieving the same things through a different technique – thus, don’t hesitate to explore the options – only though trial and error ideas pops in front of us. Good luck!

  • Evgeny Lukovich

    February 3, 2022 at 1:56 pm

    Hello Tomas! Hello Gregory!

    Just found this community yesterday, and i think its amazing) here is a lot of useful information and tips!

    I am noob at all in expression, but i have to solve the same problem as Gregory had, and i googled this page 🙂

    I downloaded Gregory’s’ file and tried to make what u said, but unfortunately i can’t get it.

    Maybe it is possible someone of you could upload redone file, i can learn from there how it has to be done?)

    Thank you in advance!

We use anonymous cookies to give you the best experience we can.
Our Privacy policy | GDPR Policy