Great breakdown Andy!&nbsp; Thanks for the mini-lecture.&nbsp; 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> &lt;<a href="mailto:padawan12@obiwannabe.co.uk">
padawan12@obiwannabe.co.uk</a>&gt; 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>&lt;<a href="mailto:renaud.herne@belgacom.be">
renaud.herne@belgacom.be</a>&gt; wrote:<br><br>&gt;<br>&gt;<br>&gt; Martin,<br>&gt;<br>&gt; 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>&gt; 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>&gt; But the second will still able to &quot;track&quot; the first one, to come closer, to
<br>&gt; 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>&gt; Also because the noise (chaos in fact) generated by libnoise is deterministic,
<br>&gt; one can also experiment with two patterns in advance (or delayed) respectively<br>&gt; 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>&gt; In other words, I would use it as a &quot;control&quot; rather than as a &quot;signal&quot;
<br>&gt;<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 &quot;linked&quot; 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>&gt;<br>&gt;<br>&gt; -----Original Message-----
<br>&gt; 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>&gt; Sent: 14 November 2006 18:17<br>&gt; 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>&gt; Subject: Re: RE: [PD] Pure coherent noise (Perlin noise)<br>&gt;<br>&gt; 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>&gt; Martin<br>&gt;<br>&gt;<br>&gt; &gt;<br>&gt; &gt; From: &lt;<a href="mailto:renaud.herne@belgacom.be">renaud.herne@belgacom.be</a>&gt;<br>&gt; &gt; Date: 2006/11/14 Tue AM 10:11:25 EST<br>&gt; &gt; To: &lt;<a href="mailto:czhenry@gmail.com">
czhenry@gmail.com</a>&gt;,<br>&gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; &lt;<a href="mailto:pd-list@iem.at">pd-list@iem.at</a>&gt;<br>&gt; &gt; Subject: RE: [PD] Pure coherent noise (Perlin noise)<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; Thanks for your enthusiasm Chuck
<br>&gt; &gt;<br>&gt; &gt; I was thinking about something like this.<br>&gt; &gt; The tutorial made by johannes m zmölnig<br>&gt; &gt; (<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>&gt; &gt; I try to avoid reinventing the wheeel (although mine will be rounder<br>&gt; &gt; than what already exists ;-)<br>&gt; &gt;<br>&gt; &gt; I am just amazed that there is no (not yet?) such thing as Perlin noise in PD.
<br>&gt; &gt; It could be useful to add some correlated variations of user input and be the source of various effects.<br>&gt; &gt; I used to link to libnoise for some DemoGL applications (a framework<br>&gt; &gt; 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>&gt; &gt;<br>&gt; &gt; I'll let you know<br>&gt; &gt;<br>&gt; &gt; Renaud<br>&gt; &gt;
<br>&gt; &gt;<br>&gt; &gt; -----Original Message-----<br>&gt; &gt; From: Charles Henry [mailto:<a href="mailto:czhenry@gmail.com">czhenry@gmail.com</a>]<br>&gt; &gt;<br>&gt; &gt; Sent: 13 November 2006 18:05<br>&gt; &gt; To: 
<a href="mailto:renaud.herne@belgacom.be">renaud.herne@belgacom.be</a><br>&gt; &gt; Subject: Re: [PD] Pure coherent noise (Perlin noise)<br>&gt; &gt;<br>&gt; &gt; Hey, Renaud,<br>&gt; &gt;&nbsp;&nbsp; If you've got libnoise, then you might as well build a pd external, which is a kind of &quot;wrapper&quot; where you can supply arguments to your functions, and include methods for changing the arguments in real time.
<br>&gt; &gt;&nbsp;&nbsp; It's not hard, although the first one (external) usually is hard to understand.&nbsp;&nbsp;See IOHannes' Howto build an external documentation first<br>&gt; &gt; off.&nbsp;&nbsp; Then, simply &quot;rip off&quot; pan~ and supply your own code to the
<br>&gt; &gt; perform routine, change the name, include your library headers, change the makefile to include your library, and you're off and running.&nbsp;&nbsp;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>&gt; &gt;&nbsp;&nbsp; There are also many &quot;tiny&quot; details you will need to learn to get just what you want.&nbsp;&nbsp;Good luck, and feel free to ask any questions.<br>&gt; &gt;&nbsp;&nbsp; There was a previous post regarding Perlin noise, although I don't think it was resolved.&nbsp;&nbsp;Search the Pd-list archives to find out more.
<br>&gt; &gt;<br>&gt; &gt; Chuck<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; On 11/13/06, <a href="mailto:renaud.herne@belgacom.be">renaud.herne@belgacom.be</a> &lt;<a href="mailto:renaud.herne@belgacom.be">renaud.herne@belgacom.be
</a>&gt; wrote:<br>&gt; &gt; &gt;<br>&gt; &gt; &gt;<br>&gt; &gt; &gt; Hello,<br>&gt; &gt; &gt;<br>&gt; &gt; &gt; Do someone know if there is a class that generates coherent (Perlin)<br>&gt; &gt;<br>&gt; &gt; &gt; noise in Pure Data?
<br>&gt; &gt; &gt; OK, I could build it myself by interpolating random numbers or<br>&gt; &gt; &gt; linking<br>&gt; &gt;<br>&gt; &gt; &gt; to libnoise but if it already exists...<br>&gt; &gt; &gt; Thank you<br>&gt; &gt; &gt;
<br>&gt; &gt; &gt; Renaud<br>&gt; &gt; &gt;<br>&gt; &gt; &gt; **** DISCLAIMER ****<br>&gt; &gt; &gt; <a href="http://www.belgacom.be/maildisclaimer">http://www.belgacom.be/maildisclaimer</a><br>&gt; &gt; &gt;<br>&gt; &gt; &gt; _______________________________________________
<br>&gt; &gt; &gt; <a href="mailto:PD-list@iem.at">PD-list@iem.at</a> mailing list<br>&gt; &gt; &gt; UNSUBSCRIBE and account-management -&gt;<br>&gt; &gt;<br>&gt; &gt; &gt; <a href="http://lists.puredata.info/listinfo/pd-list">
http://lists.puredata.info/listinfo/pd-list</a><br>&gt; &gt; &gt;<br>&gt; &gt;<br>&gt; &gt; **** DISCLAIMER ****<br>&gt; &gt; <a href="http://www.belgacom.be/maildisclaimer">http://www.belgacom.be/maildisclaimer</a><br>&gt; &gt;
<br>&gt; &gt; _______________________________________________<br>&gt; &gt; <a href="mailto:PD-list@iem.at">PD-list@iem.at</a> mailing list<br>&gt; &gt; UNSUBSCRIBE and account-management -&gt;<br>&gt; &gt; <a href="http://lists.puredata.info/listinfo/pd-list">
http://lists.puredata.info/listinfo/pd-list</a><br>&gt; &gt;<br>&gt;<br>&gt;<br>&gt; **** DISCLAIMER ****<br>&gt; <a href="http://www.belgacom.be/maildisclaimer">http://www.belgacom.be/maildisclaimer</a><br>&gt;<br>&gt; _______________________________________________
<br>&gt; <a href="mailto:PD-list@iem.at">PD-list@iem.at</a> mailing list<br>&gt; UNSUBSCRIBE and account-management -&gt; <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 -&gt; <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