Skip to main content
New Participant
December 21, 2015
Answered

Fade audio with expressions

  • December 21, 2015
  • 1 reply
  • 4264 views

Ok, I've taken an epxression for automactically fading opacity (which worked wonderfully) and tried to modify it to fade audio the same way.  Now, I get an error that says "After Effects warning: Expression Disabled. Error at line 0 in property....  expression result must be of dimension 2 not 1."

Here is the tweaked expression:

fadeTime = 30;

audio.audioLevelsMin = -50;

audio.audioLevelsMax = 0;

layerDuration = outPoint - inPoint;

singleFrame = thisComp.frameDuration;

animateIn = linear(time, inPoint, (inPoint + framesToTime(fadeTime)), audio.audioLevelsMin, audio.audioLevelsMax);

animateOut = linear(time, (outPoint - framesToTime(fadeTime+1)), (outPoint-singleFrame), audio.audioLevelsMax, audio.audioLevelsMin);

if(time < (layerDuration/2+inPoint)){

animateIn;

}else{

animateOut;

}

Now, opacity is a linear, 1 dimensional characteristic.  Why did that work and the updated expression for audio cause an error?

This topic has been closed for replies.
Correct answer Dan Ebberts

Try it this way:

fadeTime = 30;

audio.audioLevelsMin = -50;

audio.audioLevelsMax = 0;

layerDuration = outPoint - inPoint;

singleFrame = thisComp.frameDuration;

animateIn = linear(time, inPoint, (inPoint + framesToTime(fadeTime)), audio.audioLevelsMin, audio.audioLevelsMax);

animateOut = linear(time, (outPoint - framesToTime(fadeTime+1)), (outPoint-singleFrame), audio.audioLevelsMax, audio.audioLevelsMin);

if(time < (layerDuration/2+inPoint)){

  [animateIn,animateIn];

}else{

  [animateOut,animateOut];

}

Dan

1 reply

Dan Ebberts
Dan EbbertsCorrect answer
Community Expert
December 21, 2015

Try it this way:

fadeTime = 30;

audio.audioLevelsMin = -50;

audio.audioLevelsMax = 0;

layerDuration = outPoint - inPoint;

singleFrame = thisComp.frameDuration;

animateIn = linear(time, inPoint, (inPoint + framesToTime(fadeTime)), audio.audioLevelsMin, audio.audioLevelsMax);

animateOut = linear(time, (outPoint - framesToTime(fadeTime+1)), (outPoint-singleFrame), audio.audioLevelsMax, audio.audioLevelsMin);

if(time < (layerDuration/2+inPoint)){

  [animateIn,animateIn];

}else{

  [animateOut,animateOut];

}

Dan

New Participant
December 22, 2015

It worked!!  I see the small change that you made at the end with [animateIn,animateIn]; How did that effect the process? Was it like giving it an extra coordinate??

Dan Ebberts
Community Expert
December 22, 2015

Yes, stereo audio level is a two-dimensional property, so you need to provide two values, in array notation.

Dan