class Zpectral{ // Input FFT // original code by Marius Watz // modified by Krister Olsson // pseudo-wrapped by coyarzun@error404.cl // Showcase for new FFT processing options in Ess v2. // Clicking and dragging changes FFT damping int bufferSize; int steps; int wave_interp; float limitDiff; int numAverages; float myDamp=.1f; float maxLimit,minLimit; FFT myFFT; AudioInput myInput; Zpectral(int buf, int av){ // set up our AudioInput bufferSize=buf; numAverages=av; myInput=new AudioInput(bufferSize); // set up our FFT myFFT=new FFT(bufferSize*2); myFFT.equalizer(true); // set up our FFT normalization/dampening minLimit=.005; maxLimit=.05; myFFT.limits(minLimit,maxLimit); myFFT.damp(myDamp); myFFT.averages(numAverages); // get the number of bins per average steps=bufferSize/numAverages; // get the distance of travel between minimum and maximum limits limitDiff=maxLimit-minLimit; myInput.start(); } void updateSpectrum(){ myFFT.getSpectrum(myInput); wave_interp = (int)max(0,(((millis()-myInput.bufferStartTime)/(float)myInput.duration)*myInput.size)); } void setDamp(){ myDamp=mouseY/(float)height; if (myDamp>1) myDamp=1; else if(myDamp<0) myDamp=0; myFFT.damp(myDamp); } }