Page 1 of 1

beatcounter

PostPosted: Wed Dec 03, 2014 5:45 pm
by BenChang
Code: Select all

float lastT;

boolean recording=false;

float recordedTimes[];

float averageTime=0;
int tapCount;
int maxTaps=64;

Pulsar p;

void setup()
{
  size(800, 600);
  recordedTimes = new float[maxTaps];
  p=new Pulsar(400,300);
  frameRate(200);
}

void draw()
{

  p.update();
 
}

void keyPressed ()
{
 
  if (!recording)
  {
    if (key==' ')
    {
        p.run(0);
        recording=true;
        println("start recording");
        tapCount=0;
        lastT=millis();
     
    }
  }
  else
  {
    if (key==' ')
    {
       recording=false;
    }
    if (key=='b')
    {
      float t=millis();
      recordedTimes[tapCount]=t-lastT;
      lastT=t;
 
      averageTime = average(recordedTimes, tapCount);
      p.setDelay(averageTime);
      println(60000/averageTime);
      tapCount++;
      if (tapCount>=maxTaps)
      {
        recording=false;
      }
    }
  }
}
  float average (float a[], int n)
  {

    float avg=0;

    if (n>0)
    {
      for (int i=0;i<n;i++)
      {
        avg+=a[i];
      }
      avg=avg/n;
    } 
    return avg;

  }

Pulsar

PostPosted: Wed Dec 03, 2014 5:45 pm
by BenChang
Code: Select all
class Pulsar
{
   float delay;
   float lastT;
   int x,y; 
   boolean running;
   int r;
   Pulsar(int x, int y)
   {
       this.x=x;
       this.y=y;
       running=false;
       delay=0;
       r=0;
   }
   
   void run(float d)
   {
      running=true;
      lastT=millis();
      delay=d;
   }
   
   void setDelay(float d)
   {
      delay=d;
   }
   
   void stop()
   {
      running=false;
   }
   
   void update()
   {
      float t=millis();
     
     
      noStroke();
      if (delay>0 && t-lastT > delay)
      {
          r=255;
          lastT=t;
      }
      else
      {
         ;
      }
      fill(r,64,64);
      rect(x,y,100,100);
     
      if (r>64)
        r--;
   }
}