• fullscreen
  • WiggleField.pde
  • wiggle.pde
  • List<Wiggle> w;
    int n=50;
    
    void setup()
    {
        size(600,600);
        w=new Vector();
        for(int i=0; i < n; i++)
        {
            Wiggle wig=new Wiggle(50,map(i,0,n,50,height-50),width-100,height/2,150);
            wig.gaussParam(0,0.75);
            w.add(wig );
        }
        smooth();
        background(0);
    }
    
    void draw()
    {
        background(0);
        pushMatrix();
    
    
    for(Wiggle wig:w)
        {
            wig.update();
            wig.draw();
        }
    
        popMatrix();
        for(int i=0; i < 3;i++){
      int index=(int)random(0,n);
      ((Wiggle)w.get(index)).addGauss(random(0.5,1.3));
        }
    }
    
    
    class Wiggle
    {
        float xc,yc;
        float wid,hei;
        float t,tstroke;
        float decay;
        color c=255;
        float[] y,amp;
        int n;
        float center,sigma;
    
    
        Wiggle(float xc,float yc,float wid,float hei,int n)
        {
            this.xc=xc;
            this.yc=yc;
            this.wid=wid;
            this.hei=hei/pow(2,8);
            this.n=n;
            t=random(0,10);
            tstroke=random(0,10);
            y=new float[n];
            amp=new float[n];
            decay=random(0.90,0.95);
        }
    
        void gaussParam(float center,float sigma)
        {
            this.center=center;
            this.sigma=sigma*sigma;
        }
    
        void update()
        {
            t+=0.003;
            tstroke+=0.02;
            for(int i=0; i < n; i++)
            {
                y[i]=-amp[i]*pow(2,noise(i*0.05,t)*8);
                amp[i]*=decay;
            }
    
        }
    
        void addGauss(float a)
        {
            float tt;
            for(int i=0; i < n; i++)
            {
                tt=map(i,0, n-1,-2.5,2.5)-center;
                amp[i]+=a*hei*(0.1+exp(-(tt*tt)/(2.0*sigma)));
            }
        }
    
        void draw()
        {
            pushMatrix();
            translate(xc,yc);
            float step=1.0/(float)(n-1);
    
            noStroke();
            fill(255-c);
            beginShape();
            vertex(0,0);
            for(int i=0; i < n; i++)
            {
                vertex(wid*step*i , y[i] );
            }
            vertex(wid,0);
            endShape(CLOSE);
    
            noFill();
            stroke(c);
            for(int i=0; i < n-1; i++)
            {
                strokeWeight(pow(2,2.5*noise(i*0.1,tstroke))-1);
                line(wid*step*i , y[i],wid*step*(i+1) , y[i+1]);
            }
            popMatrix();
        }
    
    }
    
    
    

    code

    tweaks (0)

    about this sketch

    This sketch is running as Java applet, exported from Processing.

    license

    advertisement

    Report Sketch

    Report for inappropriate content

    Please provide details if possible:

    Your have successfully reported the sketch. Thank you very much for helping to keep OpenProcessing clean and tidy :)

    Make a Copyright Infringement claim

    benjamin sanchez lengeling
    Nice remake! cheers
    Brendan Flynn
    26 Jun 2012
    ok so the dude above said remake, i also remember seeing this, its very cool, should make it sound reactive each line a incresed pitch on the sound scale. so when you play a sittare it would react wright. so tired at the moment i think that is whats happening
    You need to login/register to comment.