float x, y, maxAmp; float [] amps = new float [16]; float [] freqs = new float [16]; int gX1=40, gX2, gX3, gY1=20, gY2=40, gY3, gY4, gY5, gY6, cX1, cX2, cY1, mX, mY; PFont fontA; void setup(){ size (520, 350); gX2=width-gX1; gX3=gX2/16; gY3=height-gY1-gY2; gY4=gY1+(gY3/2); gY6=gY3/10; cX1=gX1-(gX3/2); cX2=width-(gX3/2); cY1=height-gY2; maxAmp = (gY4-gY1)/8; loop(); for(int i=0; i<16; i++){ freqs[i]=(i+1)*(TWO_PI/gX2); } fontA = loadFont ("ArialHebrew-12.vlw"); grid(); smooth(); fill(255, 64); noLoop(); } void draw(){ //ampsFill(); //ampTotal(); background (255); grid(); wave(); bars(); } void mousePressed() { loop(); ampsFill(); } void mouseDragged() { loop(); ampsFill(); } void mouseReleased() { noLoop(); } void keyPressed(){ if(key == '1'){ //sawtooth for(int i=0; i<16; i++){ amps[i]=1.0/(i+1); } } if(key == '2'){ //square for(int i=0; i<16; i++){ amps[i]=1.0/(i+1); amps[1+(i/2)*2]=0; //println(amps[i]); } } loop(); } void keyReleased(){ noLoop(); } void ampsFill(){ mX=(constrain(mouseX, cX1, cX2)-35)/gX3; mX=constrain(mX, 0, 15); mY=gY3-(constrain(mouseY, gY1, cY1)-40); amps[mX]=map(mY, gY1, cY1, 0.0, 1.0); } /*void ampTotal(){ float tAmp =0; for(int i=0; i<16; i++){ tAmp=tAmp+amps[i]; } maxAmp = (gY4-gY1)/tAmp; }*/ void grid(){ int cent=0, part1=0, part2=0; float part3=0; for(int i=0; i<11; i++){ strokeWeight(1); stroke(0, 20); gY5 = (i*gY6)+gY1; line(gX1, gY5, width, gY5); fill(100); cent=100-(i*10); cent=char(cent); textFont(fontA, 12); text(cent, 16, gY5+3); } strokeWeight(1); stroke(0, 20); for(int j=0; j<16; j++){ part1=(j*gX3)+gX1; line(part1, gY1, part1, cY1); part2=j+1; part2=char(part2); text(part2, gX1+(j*gX3)-2, 16); part3=100*amps[j]; text(nf(part3, 2, 1), gX1+(j*gX3)-6, cY1+16); } } void wave(){ float x2=gX1, y2=gY4; stroke(0, 255, 0); strokeWeight(3); for(int i=0; i