void ofxFFTBase::drawLogarithmic(int x, int y, int w, int h) { vector<float> &fftLogNormData = logData.dataNorm; vector<float> &fftLogPeakData = logData.dataPeak; vector<int> &fftLogCutData = logData.dataCut; ofPushMatrix(); ofTranslate(x, y); drawBg(fftData, w, h); int renderSingleBandWidth = w / (float)fftLogNormData.size(); int bx, by; // border. bx = by = renderBorder; // draw cut data ofPushStyle(); ofFill(); ofSetColor(200); for(int i=0; i<fftLogCutData.size(); i++) { ofDrawRectangle(i * renderSingleBandWidth + bx, h + by, renderSingleBandWidth, -fftLogCutData[i] * h); } ofPopStyle(); //draw normalized data ofPushStyle(); for(int i=0; i<fftLogNormData.size(); i++) { ofFill(); ofSetColor(100); if (logData.dataBeats[i]) ofSetColor(10, 200, 255); ofDrawRectangle(i * renderSingleBandWidth + bx, h + by, renderSingleBandWidth, -fftLogNormData[i] * h); ofNoFill(); ofSetColor(232); ofDrawRectangle(i * renderSingleBandWidth + bx, h + by, renderSingleBandWidth, -fftLogNormData[i] * h); } ofPopStyle(); //draw peak data ofPushStyle(); ofFill(); ofSetColor(0); for(int i=0; i<fftLogPeakData.size(); i++) { float p = fftLogPeakData[i]; ofDrawRectangle(i * renderSingleBandWidth + bx, (1 - p) * (h - 2) + by, renderSingleBandWidth - 1, 2); } ofPopStyle(); drawBorder(w, h); drawThresholdLine(fftData, w, h); ofPopMatrix(); //drawThresholdLine(audioData, width, height); }
void ofxFFTBase::drawData(const ofxFFTData & audioData, int width, int height) { drawBg(audioData, width, height); drawGlitchData(audioData, width, height); // drawFftData(audioData, width, height); // this is audio data before its been normalised, good for debugging. drawFftNormData(audioData, width, height); drawFftPeakData(audioData, width, height); drawThresholdLine(audioData, width, height); drawBorder(width, height); }