Skip to main content
KlausKi
Inspiring
October 20, 2025
Answered

Someone please explain the noise() expression function arguments in detail

  • October 20, 2025
  • 1 reply
  • 207 views

I feel the noise() expression function is poorly documented:

 

noise(valOrArray)    Return type: Number.

Argument type: valOrArray is a Number or an Array [2 or 3].

Returns a number in the range from -1 to 1. The noise is not actually random; it is based on Perlin noise, which means that the return values for two input values that are near one another tend to be near one another. This type of noise is useful when you want a sequence of seemingly random numbers that don’t vary wildly from one to the other—as is usually the case when animating any apparently random natural motion. Example: rotation + 360*noise(time)

 

  1. What exactly does "for two input values that are near one another" mean?
         Is it "noise(val)" with val changing in two subsequent calls?
         Or is it "noise(val1, val2)"?

  2. The function declaration indicates that two or three arguments can be specified,
         but only an example of a function call with a single argument is given.
         What do the other arguments do?

 

Your answers are appreciated.

Correct answer Dan Ebberts

OK, let's start with a simple example. New comp, new solid, with Slider Control added. Add this expression to the slider:

noise(1.0)

I get 0.02. If you change the parameter to 1.01, the output value changes to 0.03. So for a small change in input value, there's a small change in output value, which means the randomness is highly correlated. If you change the expression to 

noise(time)

and turn on the graph editor, you'll see something suspiciously similar to wiggle(1,1). But now comes the fun part. noise() actually provides you with a 1D, 2D, or 3D perlin noise field, depending on the dimension of your input parameter. With a 1D parameter like time, you get  values along a line in the noise field. If you provide a 2D array, you get noise values from a particular plane in the noise field, and with a 3D array you get values from anywhere in the 3D noise field.

Say you start with a 3D solid and apply an expression like this to the Z Rotation:

noise(position/500)*360

Now duplicate the layer a bunch of times and notice that when you move the duplicate layers around in 3D space, the rotation of each changes in a correlated way (the farther you move it, the more it changes). Now if you change the expression to something like this:

p = position/500;
noise([time,p[0],p[1]])*60

so that you have one parameter that's time-varying and the other two are related to the layer's x/y position, you start to see how powerfull this thing is. Play with it!

 

1 reply

Kevin J. Monahan Jr.
Community Manager
Community Manager
October 20, 2025

Hey KlausKi,

Thanks for the question. Hopefully the product team or an Adobe Expert like @Dan Ebberts might respond. Sorry for the shortcoming on the documentation. 

 

Cheers,
Kevin

 

Kevin Monahan - Sr. Community and Engagement Strategist – Adobe Pro Video and Audio
Dan Ebberts
Community Expert
Dan EbbertsCommunity ExpertCorrect answer
Community Expert
October 21, 2025

OK, let's start with a simple example. New comp, new solid, with Slider Control added. Add this expression to the slider:

noise(1.0)

I get 0.02. If you change the parameter to 1.01, the output value changes to 0.03. So for a small change in input value, there's a small change in output value, which means the randomness is highly correlated. If you change the expression to 

noise(time)

and turn on the graph editor, you'll see something suspiciously similar to wiggle(1,1). But now comes the fun part. noise() actually provides you with a 1D, 2D, or 3D perlin noise field, depending on the dimension of your input parameter. With a 1D parameter like time, you get  values along a line in the noise field. If you provide a 2D array, you get noise values from a particular plane in the noise field, and with a 3D array you get values from anywhere in the 3D noise field.

Say you start with a 3D solid and apply an expression like this to the Z Rotation:

noise(position/500)*360

Now duplicate the layer a bunch of times and notice that when you move the duplicate layers around in 3D space, the rotation of each changes in a correlated way (the farther you move it, the more it changes). Now if you change the expression to something like this:

p = position/500;
noise([time,p[0],p[1]])*60

so that you have one parameter that's time-varying and the other two are related to the layer's x/y position, you start to see how powerfull this thing is. Play with it!

 

KlausKi
KlausKiAuthor
Inspiring
October 21, 2025

Dan, thank you for this very comprehensive, helpful and valuable answer!

Great explanation!