Great breakdown Andy! Thanks for the mini-lecture. Is there a toot on your site that uses these techniques?<br><br>~Kyle<br><br><div><span class="gmail_quote">On 11/15/06, <b class="gmail_sendername">padawan12</b> <<a href="mailto:padawan12@obiwannabe.co.uk">
padawan12@obiwannabe.co.uk</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">On Wed, 15 Nov 2006 13:00:55 +0100<br><<a href="mailto:renaud.herne@belgacom.be">
renaud.herne@belgacom.be</a>> wrote:<br><br>><br>><br>> Martin,<br>><br>> We can imagine applications of multidimensional noise.<br><br>Yes, the concept is clear enough, for example static on a black<br>
and white television screen is 3D noise (x, y, brightness) and for<br>a colour picture we can add two or three more depending on the encoding.<br><br>But you need to be rigorous in defining a few things...<br><br>> I was thinking about a melodic line piloted by a one dimensional Perlin noise.
<br><br>No problem. In d1 you have only a number line on which new values appear<br>with a magnitude given by a probability inherent in the noise spectrum. In this case<br>there is no difference between noise and a walk. If the random signal is bipolar
<br>then adding a new value to the previous one (a one dimentional vector with a sign<br>if you like) then the result is not distinguishable from simply using the random<br>signal values. The view of the noise as a spectrum, and the view of the noise as a
<br>walk, which on balance will have an average of 0 and always return to the origin,<br>coincide. With an infinite number of vectors you will cross the origin an infinite<br>number of times regardless of your scale.<br><br>
In d2 we have to look at things in a clearer way. Now it really makes more<br>sense to look at it as a walk on a 2D surface (and it helps to switch between<br>cartesian pairs and polar pairs so that we can control direction and magnitude
<br>independently too) Why? Well consider the jumps that would occur if you just<br>used an x and y value as two independent random values. On one step it could occupy<br>an extreme corner, say 255,255 and on the next step it might go to 0,0. For a melodic
<br>contour with sensible deviations you need to take the last x,y coords and add a<br>scaled (small) x, y offset to it on each step.<br><br>I think this is what you mean by track when you say...<br><br>> But the second will still able to "track" the first one, to come closer, to
<br>> go away and then back close to the initial pattern.<br><br>You can see experimentally and from proofs that it will still return to the origin<br>for any number of iterations. Practically it makes sense to wrap your d2 plane
<br>(into a sphere/torus or reflected onto aliases of itself) because real life random<br>numbers you might want to use to perform music and the theoretical ones we are<br>discussing are different worlds. In a gig you probably want the numbers constrained
<br>in spacetime in a reasonable way so that the audience don't have to wait millions<br>of years for it to come back to a useful range.<br><br><br>> Also because the noise (chaos in fact) generated by libnoise is deterministic,
<br>> one can also experiment with two patterns in advance (or delayed) respectively<br>> from one to another.<br><br>Your chances of perceiving those relationships are small. Even though it's<br>pseudo-noise you would be best to treat it as real noise for all practical purposes.
<br>Which leads us to the concept of noise in d3. Given an infinite number of random<br>vectors in d1 and d2 the probability of returning to the origin is 1. In other words<br>the walk occupies a bounded spacetime, even if it is unbounded in either space or time
<br>separately. But in d3 the probability of it returning to O is not one, not even with<br>infinite time, it's about 0.3 afair according to Polya. This is profound and has many<br>implications, not least of all for space travel. I haven't really considered what
<br>that implies for music, but you still have to coax or coerce your random 3D walks<br>into a space you are happy with, which is non trivial in 3D.<br><br><br>> In other words, I would use it as a "control" rather than as a "signal"
<br>><br><br>Yep, as a control signal rather than an audio/visual signal. Which means<br>choosing a mapping of your parameter space onto the control space, for example<br>in a trumpet melody, d1=pitch, d2=embrochure d3=dynamic, d4=mute
<br><br>d1 is constrained to a small range but free to move in fairly unconstrained jumps<br>d2 and d3 are codependent, there are values of pairs d2,d3 that don't exist in reality<br>(or for your synthesis model) so they have to be "linked" in a sensible way.
<br>d4 is probably a boolean or only occupies a few values, the mute is either on,<br>partially on, or off (disclaimer: I'm not a trumpet player so I'm guessing this).<br><br>So as you see, the control space you may have and the parameter space you wish
<br>to navigate may not be congruous (I think that's the right word)... they don't<br>fit over each other nicely because some dimentions are stretched. If you can<br>normalise your spaces you can do musically interesting things, like rotating
<br>a gesture in the pitch-dynamic plane etc../<br><br>Hope this makes some sense, it really is a subject that benefits from pictures<br>and diagrams more than most.<br><br><br>><br>><br>> -----Original Message-----
<br>> From: <a href="mailto:martin.peach@sympatico.ca">martin.peach@sympatico.ca</a> [mailto:<a href="mailto:martin.peach@sympatico.ca">martin.peach@sympatico.ca</a>]<br>> Sent: 14 November 2006 18:17<br>> To: <a href="mailto:renaud.herne@belgacom.be">
renaud.herne@belgacom.be</a>; <a href="mailto:czhenry@gmail.com">czhenry@gmail.com</a>; <a href="mailto:pd-list@iem.at">pd-list@iem.at</a><br>> Subject: Re: RE: [PD] Pure coherent noise (Perlin noise)<br>><br>> 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?
<br>> Martin<br>><br>><br>> ><br>> > From: <<a href="mailto:renaud.herne@belgacom.be">renaud.herne@belgacom.be</a>><br>> > Date: 2006/11/14 Tue AM 10:11:25 EST<br>> > To: <<a href="mailto:czhenry@gmail.com">
czhenry@gmail.com</a>>,<br>> > <<a href="mailto:pd-list@iem.at">pd-list@iem.at</a>><br>> > Subject: RE: [PD] Pure coherent noise (Perlin noise)<br>> ><br>> ><br>> ><br>> > Thanks for your enthusiasm Chuck
<br>> ><br>> > I was thinking about something like this.<br>> > The tutorial made by johannes m zmölnig<br>> > (<a href="http://iem.at/pd/externals-HOWTO/">http://iem.at/pd/externals-HOWTO/</a> ) seems explicit enough But I wanted to be sure that it does not exist first.
<br>> > I try to avoid reinventing the wheeel (although mine will be rounder<br>> > than what already exists ;-)<br>> ><br>> > I am just amazed that there is no (not yet?) such thing as Perlin noise in PD.
<br>> > It could be useful to add some correlated variations of user input and be the source of various effects.<br>> > I used to link to libnoise for some DemoGL applications (a framework<br>> > to develop OpenGL appications in C++
<a href="http://www.sd.nl/demogl/">http://www.sd.nl/demogl/</a>) If it sounds as good as it looks there must be interesting things to do.<br>> ><br>> > I'll let you know<br>> ><br>> > Renaud<br>> >
<br>> ><br>> > -----Original Message-----<br>> > From: Charles Henry [mailto:<a href="mailto:czhenry@gmail.com">czhenry@gmail.com</a>]<br>> ><br>> > Sent: 13 November 2006 18:05<br>> > To:
<a href="mailto:renaud.herne@belgacom.be">renaud.herne@belgacom.be</a><br>> > Subject: Re: [PD] Pure coherent noise (Perlin noise)<br>> ><br>> > Hey, Renaud,<br>> > 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.
<br>> > It's not hard, although the first one (external) usually is hard to understand. See IOHannes' Howto build an external documentation first<br>> > off. Then, simply "rip off" pan~ and supply your own code to the
<br>> > 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.
<br>> > 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.<br>> > 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.
<br>> ><br>> > Chuck<br>> ><br>> ><br>> > On 11/13/06, <a href="mailto:renaud.herne@belgacom.be">renaud.herne@belgacom.be</a> <<a href="mailto:renaud.herne@belgacom.be">renaud.herne@belgacom.be
</a>> wrote:<br>> > ><br>> > ><br>> > > Hello,<br>> > ><br>> > > Do someone know if there is a class that generates coherent (Perlin)<br>> ><br>> > > noise in Pure Data?
<br>> > > OK, I could build it myself by interpolating random numbers or<br>> > > linking<br>> ><br>> > > to libnoise but if it already exists...<br>> > > Thank you<br>> > >
<br>> > > Renaud<br>> > ><br>> > > **** DISCLAIMER ****<br>> > > <a href="http://www.belgacom.be/maildisclaimer">http://www.belgacom.be/maildisclaimer</a><br>> > ><br>> > > _______________________________________________
<br>> > > <a href="mailto:PD-list@iem.at">PD-list@iem.at</a> mailing list<br>> > > UNSUBSCRIBE and account-management -><br>> ><br>> > > <a href="http://lists.puredata.info/listinfo/pd-list">
http://lists.puredata.info/listinfo/pd-list</a><br>> > ><br>> ><br>> > **** DISCLAIMER ****<br>> > <a href="http://www.belgacom.be/maildisclaimer">http://www.belgacom.be/maildisclaimer</a><br>> >
<br>> > _______________________________________________<br>> > <a href="mailto:PD-list@iem.at">PD-list@iem.at</a> mailing list<br>> > UNSUBSCRIBE and account-management -><br>> > <a href="http://lists.puredata.info/listinfo/pd-list">
http://lists.puredata.info/listinfo/pd-list</a><br>> ><br>><br>><br>> **** DISCLAIMER ****<br>> <a href="http://www.belgacom.be/maildisclaimer">http://www.belgacom.be/maildisclaimer</a><br>><br>> _______________________________________________
<br>> <a href="mailto:PD-list@iem.at">PD-list@iem.at</a> mailing list<br>> UNSUBSCRIBE and account-management -> <a href="http://lists.puredata.info/listinfo/pd-list">http://lists.puredata.info/listinfo/pd-list</a>
<br><br>_______________________________________________<br><a href="mailto:PD-list@iem.at">PD-list@iem.at</a> mailing list<br>UNSUBSCRIBE and account-management -> <a href="http://lists.puredata.info/listinfo/pd-list">
http://lists.puredata.info/listinfo/pd-list</a><br></blockquote></div><br><br clear="all"><br>-- <br><br><a href="http://theradioproject.com">http://theradioproject.com</a><br><a href="http://perhapsidid.blogspot.com">http://perhapsidid.blogspot.com
</a><br><br>(((())))(()()((((((((()())))()(((((((())()()())())))<br>(())))))(()))))))))))))(((((((((((()()))))))))((())))<br>))(((((((((((())))())))))))))))))))__________<br>_____())))))(((((((((((((()))))))))))_______<br>
((((((())))))))))))((((((((000)))oOOOOOO