Smooth random?


    Aug 23 2006 | 3:34 pm
    Hi
    i am sure this is relatively a newbie question but is there a way to smoothout random number generation? I would like a random to generate random numbers from 1 to 100 but move smoothly around certain areas. A line perhaps? A tutorial # or an object reference would be greatly appreciated.
    pp

    • Aug 23 2006 | 3:39 pm
      >content-class: urn:content-classes:message >Content-Type: multipart/alternative; > boundary="----_=_NextPart_001_01C6C6C9.9BD20634" > > > >Hi > >i am sure this is relatively a newbie question but is there a way to >smoothout random number generation? I would like a random to >generate random numbers from 1 to 100 but move smoothly around >certain areas. A line perhaps? A tutorial # or an object reference >would be greatly appreciated.
      kind of drunk perhaps???
      or rebuild a drunk-like patch using some of the LITTER objects..
      of cours eline is a possibility for smoothing, but will not necessary move AROUND certain areas
      best
      kasper -- Kasper T. Toeplitz noise, composition, bass, computer http://www.sleazeArt.com
    • Aug 23 2006 | 3:48 pm
      I believe you want Perlin noise?
      You can search the web for the algorithm, or the list archives.
      v a d e //
      www.vade.info abstrakt.vade.info
      On Aug 23, 2006, at 11:39 AM, Kasper T Toeplitz wrote:
      >> content-class: urn:content-classes:message >> Content-Type: multipart/alternative; >> boundary="----_=_NextPart_001_01C6C6C9.9BD20634" >> >> >> Hi >> >> i am sure this is relatively a newbie question but is there a way >> to smoothout random number generation? I would like a random to >> generate random numbers from 1 to 100 but move smoothly around >> certain areas. A line perhaps? A tutorial # or an object reference >> would be greatly appreciated. > > kind of drunk perhaps??? > > or rebuild a drunk-like patch using some of the LITTER objects.. > > of cours eline is a possibility for smoothing, but will not > necessary move AROUND certain areas > > best > > kasper > -- > Kasper T. Toeplitz > noise, composition, bass, computer > http://www.sleazeArt.com > >
    • Aug 23 2006 | 4:26 pm
      Karlheinz Essl's RTC-Lib does contain a number of abstractions for random number generation. e.g. "brownian":
      "Random generator based on "brownian movements". Outputs random numbers between min and max excluding max. The distance between two random numbers is determined by the brownian factor . When this factor is 1, "brownian" behaves like an ordinary random generator. When the factor is O, always the same number is repeated."
      And of course there's the Litter Library for all sorts of smart random number operations.
      b.
      On Aug/23/2006/, at 17/34, Patrick Pagano wrote:
      > Hi > > i am sure this is relatively a newbie question but is there a way > to smoothout random number generation? I would like a random to > generate random numbers from 1 to 100 but move smoothly around > certain areas. A line perhaps? A tutorial # or an object reference > would be greatly appreciated.
      --- Bernhard Loibner sound & media artist http://loibner.cc
    • Aug 23 2006 | 5:36 pm
      And I would also point out that Peter Castine's LItter Power collection of objects contains a wealth of interesting possibilities.
    • Aug 23 2006 | 5:39 pm
      I think you meant to say "a mess" of interesting possibilities.
      jb
      Am 23.08.2006 um 19:36 schrieb Gregory Taylor:
      > LItter > Power collection of objects contains a wealth of interesting > possibilities
    • Aug 23 2006 | 5:48 pm
      On Aug 23, 2006, at 7:39 PM, Jeremy Bernstein wrote:
      > I think you meant to say "a mess" of interesting possibilities.
      "a Messe" of interesting possibilities. Coming from someone who has been so assiduous in correcting my nonexistent German, I'm shocked. Shocked....
    • Aug 23 2006 | 5:51 pm
      Don't forget the Big Friendly Giant! jit.bfg has nice noise functions.
      wes
      On 8/23/06, Gregory Taylor wrote: > > On Aug 23, 2006, at 7:39 PM, Jeremy Bernstein wrote: > > > I think you meant to say "a mess" of interesting possibilities. > > "a Messe" of interesting possibilities. Coming from > someone who has been so assiduous in correcting > my nonexistent German, I'm shocked. Shocked.... > >
    • Aug 23 2006 | 6:21 pm
      On Aug 23, 2006, at 7:51 PM, Wesley Smith wrote:
      > Don't forget the Big Friendly Giant! jit.bfg has nice noise functions.
      Oh. *THAT's* what the acronym means. :-)
    • Aug 23 2006 | 9:01 pm
      On Aug 23, 2006, at 8:34 AM, Patrick Pagano wrote:
      > i am sure this is relatively a newbie question but is there a way > to smoothout random number generation? I would like a random to > generate random numbers from 1 to 100 but move smoothly around > certain areas. A line perhaps? A tutorial # or an object reference > would be greatly appreciated.
      While all the suggestions are good ones (especially walking around a volume of perlin noise (jit.bfg @basis noise.gradient)), it sounds like you just want temporal filtering. You could use line, or curve, or slide, etc. to perform low pass filtering of continuous data. There's an example of using jit.slide with a volume of noise to generate smooth transitions in jit.matrix-3d-render.pat.
      If you don't want to use a whole matrix, just replace jit.noise with random and jit.slide with slide.
      -Joshua
    • Aug 23 2006 | 9:30 pm
      Thanks to all for the suggestions, will try tonight Much thanks!
      Patrick Pagano, B.S., M.F.A Digital Media Specialist Digital Worlds Institute University of Florida (352) 294-2082
      -----Original Message----- From: jitter-bounces@cycling74.com [mailto:jitter-bounces@cycling74.com] On Behalf Of Joshua Kit Clayton Sent: Wednesday, August 23, 2006 5:02 PM Subject: Re: [jitter] Smooth random?
      On Aug 23, 2006, at 8:34 AM, Patrick Pagano wrote:
      > i am sure this is relatively a newbie question but is there a way to > smoothout random number generation? I would like a random to generate > random numbers from 1 to 100 but move smoothly around certain areas. A
      > line perhaps? A tutorial # or an object reference would be greatly > appreciated.
      While all the suggestions are good ones (especially walking around a volume of perlin noise (jit.bfg @basis noise.gradient)), it sounds like you just want temporal filtering. You could use line, or curve, or slide, etc. to perform low pass filtering of continuous data. There's an example of using jit.slide with a volume of noise to generate smooth transitions in jit.matrix-3d-render.pat.
      If you don't want to use a whole matrix, just replace jit.noise with random and jit.slide with slide.
      -Joshua
    • Aug 24 2006 | 8:30 am
      On 23-Aug-2006, at 17:34, Patrick Pagano wrote: > i am sure this is relatively a newbie question but is there a way > to smoothout random number generation? I would like a random to > generate random numbers from 1 to 100 but move smoothly around > certain areas. A line perhaps? A tutorial # or an object reference > would be greatly appreciated.
      A few people have mentioned Litter Power, since this is the Jitter list I'd just like to add that Litter Bundle for Jitter has recently had some updates on the random number/noise front, together with the UB update.
      More information, as always, at the URI in the .sig
      Best -- Peter
      PS to JB & GT: We prefer to describe it as "eine Masse von Zufallsgeneratoren"... Messen gibt's in der Kirche.
      -------------- http://www.bek.no/~pcastine/Litter/ ------------- Peter Castine +--> Litter Power & Litter Bundle for Jitter Universal Binaries on the way iCE: Sequencing, Recording & Interface Building for |home | chez nous| Max/MSP Extremely cool |bei uns | i nostri| http://www.dspaudio.com/ http://www.castine.de
    • Aug 24 2006 | 8:48 am
    • Sep 15 2012 | 1:04 pm
      Hello. It seems that 1-dimensional Perlin Noise is suitable for Smooth Random needed. Here is implementation of it using "js". It's based on http://asserttrue.blogspot.com/2011/12/perlin-noise-in-javascript_31.html
      --------------------- //---------------------------------------------------- // Perlin Noise implementation for Max/MSP javascript. // by Denis Perevalov //---------------------------------------------------- // Based on Kas Thomas code: // http://asserttrue.blogspot.com/2011/12/perlin-noise-in-javascript_31.html // This is a port of Ken Perlin's Java code. The // original Java code is at http://cs.nyu.edu/%7Eperlin/noise/. // Note that in this version, a number from 0 to 1 is returned. //----------------------------------------------------
      //Usage: //send to first inlet input - x. //then ferst outlet returns perlin(x).
      // inlets and outlets inlets = 1; //x, for 1-dim perlin noise outlets = 1; //output = perlin(x)
      // global variables
      var p = new Array(512); var permutation = [ 151,160,137,91,90,15, 131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23, 190, 6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33, 88,237,149,56,87,174,20,125,136,171,168, 68,175,74,165,71,134,139,48,27,166, 77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244, 102,143,54, 65,25,63,161, 1,216,80,73,209,76,132,187,208, 89,18,169,200,196, 135,130,116,188,159,86,164,100,109,198,173,186, 3,64,52,217,226,250,124,123, 5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42, 223,183,170,213,119,248,152, 2,44,154,163, 70,221,153,101,155,167, 43,172,9, 129,22,39,253, 19,98,108,110,79,113,224,232,178,185, 112,104,218,246,97,228, 251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,107, 49,192,214, 31,181,199,106,157,184, 84,204,176,115,121,50,45,127, 4,150,254, 138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180 ]; var _inited = false;
      //------------------------------------------- // float -- run the equation once function msg_float(x) { var out = perlin( x, Math.sin(x), Math.cos(x) ); //post(out); outlet(0, out); }
      //------------------------------------------- function init() { post("Perlin inited"); for (var i=0; i < 256 ; i++) { p[256+i] = p[i] = permutation[i]; }
      }
      //------------------------------------------- function perlin( x, y, z ) { if ( !_inited ) { _inited = true; init(); }
      var X = Math.floor(x) & 255, // FIND UNIT CUBE THAT Y = Math.floor(y) & 255, // CONTAINS POINT. Z = Math.floor(z) & 255; x -= Math.floor(x); // FIND RELATIVE X,Y,Z y -= Math.floor(y); // OF POINT IN CUBE. z -= Math.floor(z); var u = fade(x), // COMPUTE FADE CURVES v = fade(y), // FOR EACH OF X,Y,Z. w = fade(z); var A = p[X ]+Y, AA = p[A]+Z, AB = p[A+1]+Z, // HASH COORDINATES OF B = p[X+1]+Y, BA = p[B]+Z, BB = p[B+1]+Z; // THE 8 CUBE CORNERS,
      return scale(lerp(w, lerp(v, lerp(u, grad(p[AA ], x , y , z ), // AND ADD grad(p[BA ], x-1, y , z )), // BLENDED lerp(u, grad(p[AB ], x , y-1, z ), // RESULTS grad(p[BB ], x-1, y-1, z ))),// FROM 8 lerp(v, lerp(u, grad(p[AA+1], x , y , z-1 ), // CORNERS grad(p[BA+1], x-1, y , z-1 )), // OF CUBE lerp(u, grad(p[AB+1], x , y-1, z-1 ), grad(p[BB+1], x-1, y-1, z-1 ))))); }
      //------------------------------------------- function fade(t) { return t * t * t * (t * (t * 6 - 15) + 10); } function lerp( t, a, b) { return a + t * (b - a); } function grad(hash, x, y, z) { var h = hash & 15; // CONVERT LO 4 BITS OF HASH CODE var u = h v = h return ((h&1) == 0 ? u : -u) + ((h&2) == 0 ? v : -v); } function scale(n) { return (1 + n)/2; }
      //-------------------------------------------
    • Sep 16 2012 | 3:08 pm
      Interesting. Perlin's been on my to-do list for a long time. But it basically looks like pink noise. You could drop in lp.zzz for your [js perlin] and get the same image by tweaking the multiplication factor. And adding an offset… lp.zzz works in the range [-1 .. 1].
      Still, if Perlin works for you, great.
    • Sep 17 2012 | 12:33 am
      I'm under the impression that Perlin noise is only useful in more than 1 dimension. If it is generated in only 1 dimension it is the same as brownian motion, 1/f noise (if the layering is done so the sample rate is done in octaves and the amplitudes are done as 2^-i).
      Is anyone able to confirm that or am I mistaken?
      T
    • Sep 18 2012 | 10:46 pm
    • Aug 10 2016 | 2:02 pm
      Hi, I've just tried creating a patcher using Javascript. It covers 2D and 3D as well. I don't really understand about the details of the algorithm, but I took the code from Processing.js and it looks working quite well.
    • Aug 10 2016 | 4:06 pm
      Nice job!
      Must be something in the water, yesterday I poached this javascript implementation : https://github.com/shfitz/Generative-Design-for-Max/blob/master/02_M/M_1_5_02/perlin.js
    • Aug 10 2016 | 9:06 pm
      I've found a bug in my one and am working on it now. It'll be fixed very soon. Scott, your implementation can be better because my one's bug is related to OOP stuff. Your's doesn't bring in such a concern and it's dead compact!
    • Aug 16 2016 | 5:20 am
      Hi. I just stopped using JS and tried creating a new one as an external object. Now it generates 4D noise as well. This is my first .mxo project and MSP version is also coming soon!
    • Aug 16 2016 | 2:20 pm
      Thanks for sharing!