import pitaru.sonia_v2_9.*; Sample mySampleObj; Ball balls; float g = 0.20; float b = 1; float f = 1; float xpos; float radius; float[] prev; void setup(){ balls = new Ball(); size(800,400); rectMode(CENTER); ellipseMode(CENTER); noStroke (); Sonia.start(this); LiveInput.start(1024); framerate (30); prev=new float[1024]; reset (); int recTimeSec = 10; mySampleObj = new Sample(44100*recTimeSec); for (int i=0 ; i<1024; i++) prev[i]=0; } void draw(){ background(255); balls.bounce(); balls.move(); balls.display(); paddle(); } void paddle() { xpos=pos()*30; radius=100; fill(0); if(xposwidth-radius/2-20)xpos=width-radius/2-20; translate (xpos, height-10); rect(0, 0, radius, 10); } int pos (){ int position=0; float maxValue=0; LiveInput.getSpectrum(); //media int pesoPrec=3; for ( int i = 0; i < LiveInput.spectrum.length; i++){ prev[i]=(prev[i]*(pesoPrec-1)+LiveInput.spectrum[i])/pesoPrec; } //calcolo massimo for ( int i = 0; i < LiveInput.spectrum.length; i++){ if(prev[i]>maxValue) { position=i; maxValue=prev[i]; } } return position; } void reset() { balls = new Ball(); } public void stop(){ Sonia.stop(); super.stop(); }