xxxxxxxxxx
82
let mrNoise;
let mrsNoise;
let playButton;
let stopButton;
let chooseNoise, setVolume;
let toggleOnOff;
let fft;
function setup() {
createCanvas(400, 200);
mrNoise = new p5.Noise();
mrNoise.amp(0);
//mrNoise.start();
fft = new p5.FFT();
toggleOnOff = createButton('play');
toggleOnOff.position(10,10);
toggleOnOff.mousePressed(function(){
if(mrNoise.started){
mrNoise.stop();
toggleOnOff.html('play');
}else{
mrNoise.start();
toggleOnOff.html('stop');
}
});
chooseNoise = createSelect();
chooseNoise.position(60,10);
chooseNoise.option('white');
chooseNoise.option('pink');
chooseNoise.option('brown');
chooseNoise.changed(function(){
mrNoise.setType(chooseNoise.value());
});
setVolume = createSlider(-60,0,-60,1);
setVolume.position(130,0);
setVolume.input(function(){
if(setVolume.value > -56){
//amptitude = 10^(decibels/20);
//pow(base, exponent);
mrNoise.amp(pow(10, setVolume.value()/20));
}else{
mrNoise.amp(map(setVolume.value(), -60, -56, 0, 0.0016), 0.1);
}
});
//playButton = createButton('play').position(10, 10).mousePressed(()=>{mrNoise.start();});
//stopButton = createButton('stop').position(10, 30).mousePressed(()=>{mrNoise.stop();});
}
function draw(){
background(80);
let spectrum = fft.analyze();
beginShape();
vertex(0,height);
for(let i=0; i<spectrum.length;i++){
//fill(255,255,0);
fill(chooseNoise.value());
stroke(255,100,0);
strokeWeight(5);
//point(map(log(i),0,log(spectrum.length), 0, width), map(spectrum[i],0,255,height,0));
//line(map(log(i),0,log(spectrum.length), 0, width),height,map(log(i),0,log(spectrum.length), 0, width), map(spectrum[i],0,255,height,0));
vertex(map(log(i),0,log(spectrum.length), 0, width), map(spectrum[i],0,255,height,0));
}
vertex(width,height);
endShape();
}
function touchStarted(){
if(getAudioContext().state !== 'running'){
getAudioContect().resume();
}
}