You can simply clear the background again, for example when you press a key:
void keyPressed(){
background(255, 60, 80);
}
You can do the same on some other event (amount of time, loudness, etc.)
Here's an example based on your code that clears the background every 3 seconds:
import ddf.minim.*;
Minim minim;
AudioInput in;
//3s as millis
int interval = 3 * 1000;
int time;
void setup() {
fullScreen();
background(255, 60, 80);
time = millis();
minim = new Minim(this);
//minim.debugOn ();
in = minim.getLineIn(Minim.MONO, 100);
}
void draw() {
float soundlevel;
float distance_top = random(100);
soundlevel = in.mix.get(0);
stroke(255, random(90, 255));
line(0, distance_top + soundlevel * 4000, width, distance_top + soundlevel * 1000);
line(0, distance_top + soundlevel * 1000, width, distance_top + soundlevel * 4000);
if(millis() - time >= interval){
// clear background
background(255, 60, 80);
// reset time for next interval
time = millis();
// debug
println("=========================> tick");
}
}
For more info on millis() for a delay see this answer
Another option is to do the calculation frame based using frameCount
.
For example if the sketch's frameRate
is about 60 fps and you want to clear roughly every 3 seconds you can check if the multiples of 180 (3 * 60) frames passed in tandem with the modulo(%) operator
import ddf.minim.*;
Minim minim;
AudioInput in;
void setup() {
//fullScreen();
size(300,300);
background(255, 60, 80);
minim = new Minim(this);
//minim.debugOn ();
in = minim.getLineIn(Minim.MONO, 100);
}
void draw() {
float soundlevel;
float distance_top = random(100);
soundlevel = in.mix.get(0);
stroke(255, random(90, 255));
line(0, distance_top + soundlevel * 4000, width, distance_top + soundlevel * 1000);
line(0, distance_top + soundlevel * 1000, width, distance_top + soundlevel * 4000);
if(frameCount % (3 * 60) == 0){
// clear background
background(255, 60, 80);
// debug
println("=========================> tick");
}
}