[PD] Pure coherent noise (Perlin noise)

padawan12 padawan12 at obiwannabe.co.uk
Thu Nov 16 06:03:38 CET 2006


On Wed, 15 Nov 2006 13:00:55 +0100
<renaud.herne at belgacom.be> wrote:

> 
> 
> Martin,
> 
> We can imagine applications of multidimensional noise.

Yes, the concept is clear enough, for example static on a black
and white television screen is 3D noise (x, y, brightness) and for
a colour picture we can add two or three more depending on the encoding.

But you need to be rigorous in defining a few things...

> I was thinking about a melodic line piloted by a one dimensional Perlin noise.

No problem. In d1 you have only a number line on which new values appear
with a magnitude given by a probability inherent in the noise spectrum. In this case
there is no difference between noise and a walk. If the random signal is bipolar
then adding a new value to the previous one (a one dimentional vector with a sign
if you like) then the result is not distinguishable from simply using the random
signal values. The view of the noise as a spectrum, and the view of the noise as a
walk, which on balance will have an average of 0 and always return to the origin,
coincide. With an infinite number of vectors you will cross the origin an infinite
number of times regardless of your scale.

In d2 we have to look at things in a clearer way. Now it really makes more
sense to look at it as a walk on a 2D surface (and it helps to switch between
cartesian pairs and polar pairs so that we can control direction and magnitude
independently too) Why? Well consider the jumps that would occur if you just
used an x and y value as two independent random values. On one step it could occupy
an extreme corner, say 255,255 and on the next step it might go to 0,0. For a melodic
contour with sensible deviations you need to take the last x,y coords and add a
scaled (small) x, y offset to it on each step. 

I think this is what you mean by track when you say...

> But the second will still able to "track" the first one, to come closer, to
> go away and then back close to the initial pattern.

You can see experimentally and from proofs that it will still return to the origin
for any number of iterations. Practically it makes sense to wrap your d2 plane
(into a sphere/torus or reflected onto aliases of itself) because real life random
numbers you might want to use to perform music and the theoretical ones we are
discussing are different worlds. In a gig you probably want the numbers constrained
in spacetime in a reasonable way so that the audience don't have to wait millions
of years for it to come back to a useful range. 


> Also because the noise (chaos in fact) generated by libnoise is deterministic,
> one can also experiment with two patterns in advance (or delayed) respectively
> from one to another.

Your chances of perceiving those relationships are small. Even though it's
pseudo-noise you would be best to treat it as real noise for all practical purposes.
Which leads us to the concept of noise in d3. Given an infinite number of random
vectors in d1 and d2 the probability of returning to the origin is 1. In other words
the walk occupies a bounded spacetime, even if it is unbounded in either space or time
separately. But in d3 the probability of it returning to O is not one, not even with
infinite time, it's about 0.3 afair according to Polya. This is profound and has many 
implications, not least of all for space travel. I haven't really considered what
that implies for music, but you still have to coax or coerce your random 3D walks
into a space you are happy with, which is non trivial in 3D.  


> In other words, I would use it as a "control" rather than as a "signal"
> 

Yep, as a control signal rather than an audio/visual signal. Which means
choosing a mapping of your parameter space onto the control space, for example
in a trumpet melody, d1=pitch, d2=embrochure d3=dynamic, d4=mute

d1 is constrained to a small range but free to move in fairly unconstrained jumps
d2 and d3 are codependent, there are values of pairs d2,d3 that don't exist in reality
(or for your synthesis model) so they have to be "linked" in a sensible way.
d4 is probably a boolean or only occupies a few values, the mute is either on,
partially on, or off (disclaimer: I'm not a trumpet player so I'm guessing this).

So as you see, the control space you may have and the parameter space you wish
to navigate may not be congruous (I think that's the right word)... they don't
fit over each other nicely because some dimentions are stretched. If you can
normalise your spaces you can do musically interesting things, like rotating
a gesture in the pitch-dynamic plane etc../

Hope this makes some sense, it really is a subject that benefits from pictures
and diagrams more than most.


> 
> 
> -----Original Message-----
> From: martin.peach at sympatico.ca [mailto:martin.peach at sympatico.ca]
> Sent: 14 November 2006 18:17
> To: renaud.herne at belgacom.be; czhenry at gmail.com; pd-list at iem.at
> Subject: Re: RE: [PD] Pure coherent noise (Perlin noise)
> 
> You can make coherent noise by adding filtered noise~ objects. See the attached patch. This is similar to one-dimensional Perln noise. Would two- or three- dimensional noise be useful in pd?
> Martin
> 
> 
> >
> > From: <renaud.herne at belgacom.be>
> > Date: 2006/11/14 Tue AM 10:11:25 EST
> > To: <czhenry at gmail.com>,
> > 	<pd-list at iem.at>
> > Subject: RE: [PD] Pure coherent noise (Perlin noise)
> >
> >
> >
> > Thanks for your enthusiasm Chuck
> >
> > I was thinking about something like this.
> > The tutorial made by johannes m zmölnig 
> > (http://iem.at/pd/externals-HOWTO/ ) seems explicit enough But I wanted to be sure that it does not exist first.
> > I try to avoid reinventing the wheeel (although mine will be rounder
> > than what already exists ;-)
> >
> > I am just amazed that there is no (not yet?) such thing as Perlin noise in PD.
> > It could be useful to add some correlated variations of user input and be the source of various effects.
> > I used to link to libnoise for some DemoGL applications (a framework
> > to develop OpenGL appications in C++ http://www.sd.nl/demogl/) If it sounds as good as it looks there must be interesting things to do.
> >
> > I'll let you know
> >
> > Renaud
> >
> >
> > -----Original Message-----
> > From: Charles Henry [mailto:czhenry at gmail.com]
> >
> > Sent: 13 November 2006 18:05
> > To: renaud.herne at belgacom.be
> > Subject: Re: [PD] Pure coherent noise (Perlin noise)
> >
> > Hey, Renaud,
> >   If you've got libnoise, then you might as well build a pd external, which is a kind of "wrapper" where you can supply arguments to your functions, and include methods for changing the arguments in real time.
> >   It's not hard, although the first one (external) usually is hard to understand.  See IOHannes' Howto build an external documentation first
> > off.   Then, simply "rip off" pan~ and supply your own code to the
> > perform routine, change the name, include your library headers, change the makefile to include your library, and you're off and running.  To understand more functionality of making a pd external, read through m_pd.h--all of the Pd-specific functions you can use in an external are there for you.
> >   There are also many "tiny" details you will need to learn to get just what you want.  Good luck, and feel free to ask any questions.
> >   There was a previous post regarding Perlin noise, although I don't think it was resolved.  Search the Pd-list archives to find out more.
> >
> > Chuck
> >
> >
> > On 11/13/06, renaud.herne at belgacom.be <renaud.herne at belgacom.be> wrote:
> > >
> > >
> > > Hello,
> > >
> > > Do someone know if there is a class that generates coherent (Perlin)
> >
> > > noise in Pure Data?
> > > OK, I could build it myself by interpolating random numbers or
> > > linking
> >
> > > to libnoise but if it already exists...
> > > Thank you
> > >
> > > Renaud
> > >
> > > **** DISCLAIMER ****
> > > http://www.belgacom.be/maildisclaimer
> > >
> > > _______________________________________________
> > > PD-list at iem.at mailing list
> > > UNSUBSCRIBE and account-management ->
> >
> > > http://lists.puredata.info/listinfo/pd-list
> > >
> >
> > **** DISCLAIMER ****
> > http://www.belgacom.be/maildisclaimer
> >
> > _______________________________________________
> > PD-list at iem.at mailing list
> > UNSUBSCRIBE and account-management ->
> > http://lists.puredata.info/listinfo/pd-list
> >
> 
> 
> **** DISCLAIMER ****
> http://www.belgacom.be/maildisclaimer
> 
> _______________________________________________
> PD-list at iem.at mailing list
> UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list




More information about the Pd-list mailing list