55 lines
1.2 KiB
Plaintext
55 lines
1.2 KiB
Plaintext
import processing.sound.*;
|
|
|
|
AudioIn input;
|
|
Amplitude amp;
|
|
int scale;
|
|
int threshold = 50;
|
|
color c0 = color(random(255),random(255),random(255), random(20,100));
|
|
|
|
Circle[] myCircles = new Circle[0];
|
|
|
|
void setup() {
|
|
size(1024, 768);
|
|
background(255);
|
|
input = new AudioIn(this, 0);
|
|
//input.start(); // capture only
|
|
input.play(); // capture and play
|
|
amp = new Amplitude(this);
|
|
amp.input(input);
|
|
noStroke();
|
|
fill(c0);
|
|
}
|
|
|
|
void draw() {
|
|
background(255);
|
|
scale = int(map(amp.analyze(), 0, 0.2, 0, threshold));
|
|
fill(c0);
|
|
ellipse(width/2, height/2, scale, scale);
|
|
if (scale>threshold)
|
|
addCircle(scale, c0);
|
|
drawCircles();
|
|
}
|
|
|
|
void addCircle(int s, color c) {
|
|
// Create a new instant of circle
|
|
Circle tempCircle = new Circle(s, c);
|
|
// Add the new circle to Circle array
|
|
myCircles = (Circle[])append(myCircles, tempCircle);
|
|
println("Num of circles: "+myCircles.length);
|
|
|
|
// generate a new color for the next circle
|
|
c0 = color(random(255), random(255), random(255), random(20, 100));
|
|
}
|
|
|
|
void drawCircles() {
|
|
for (int i = 0; i < myCircles.length; i++) {
|
|
myCircles[i].move();
|
|
myCircles[i].display();
|
|
}
|
|
}
|
|
|
|
void keyPressed() {
|
|
println("Clear all");
|
|
myCircles = new Circle[0];
|
|
}
|