For this project I used my project 3 code as a starting point. The movement in the x coordinate changes the frequency. The movement of the y coordinate changes the amplitude. Mouse press resets the frequency to a certain point. Pressing any key randomizes the frequency. If the firefly is off canvas, the sound automatically stops to prevent from any unsavory sounds.
/* Mari Kubota
49-104 Section D
mkubota@andrew.cmu.edu
Assignment 10
*/
var x = 300;
var y = 300;
var diameter = 8;
var diffx = 0;
var diffy = 0;
var targetX = 300;
var targetY = 300;
var angle = 0;
var value=0;
var frequency=400.0;
var amplitude= 5;
function setup() {
createCanvas(640, 480);
useSound();
}
function preload() {
}
function soundSetup() { // setup for audio generation
// you can replace any of this with your own audio code:
osc = new p5.TriOsc();
osc.freq(frequency);
osc.amp(amplitude);
osc.start();
}
function draw(){
background (200-mouseY,220-mouseY,250);
//trees
translate(100 - mouseX/2, 0);
fill(0);
rect (-1000, 400,3050,80);
rect (30,200,20,200);
triangle (40,150,80,350,0,350);
rect (180,200,20,200);
triangle (190,150,100,350,280,350);
rect (330,200,20,200);
triangle (340,150,380,350,300,350);
rect (530,200,20,200);
triangle (530,100,640,350,440,350);
rect (750,200,20,200);
triangle (750,100,860,350,660,350);
//sun
fill("red");
ellipse(30,50,50,50);
//firefly
fill(value-100, value, value-200);
diffx = mouseX - x;
diffy = mouseY - y;
x = x + 0.1*diffx;
y = y + 0.1*diffy;
noStroke();
ellipse(x, y, diameter, diameter);
//sound
if(diffx > 0){
osc.freq(frequency++); // difference in x changes frequency
} else if(diffx<0){
osc.freq(frequency--);
}
if(diffy > 0){
osc.amp(amplitude++); //difference in y changes amplitude
} else if(diffy<0){
osc.amp(amplitude--);
}
if (mouseIsPressed) { // resets frequency to 400
frequency= 400;
}
//sound cuts off if firefly is off canvas
if(x>width+450 || x<-400){
amplitude=0;
}
if(y>height || y<0){
amplitude=0;
}
}
//press any key to randomize frequency
function keyPressed(){
frequency= random(200,2000);
}