aboutsummaryrefslogtreecommitdiffstats
path: root/ofxMaxim/openFrameworksExamples/OSX/OF0.8.4MaximExtractorExample/src/testApp.cpp
diff options
context:
space:
mode:
authormick grierson <mickgrierson@gmail.com>2015-10-27 17:05:12 +0000
committermick grierson <mickgrierson@gmail.com>2015-10-27 17:05:12 +0000
commit60341ac292bb9ba6f1d33632f8fd8e767c6a99d4 (patch)
treedd801de535997f2f6ff4fc6faab8cfc86c003b7a /ofxMaxim/openFrameworksExamples/OSX/OF0.8.4MaximExtractorExample/src/testApp.cpp
parentbb210658ed2aa4eafa790197f84f3e24df22351b (diff)
clean up
Diffstat (limited to 'ofxMaxim/openFrameworksExamples/OSX/OF0.8.4MaximExtractorExample/src/testApp.cpp')
-rw-r--r--ofxMaxim/openFrameworksExamples/OSX/OF0.8.4MaximExtractorExample/src/testApp.cpp398
1 files changed, 0 insertions, 398 deletions
diff --git a/ofxMaxim/openFrameworksExamples/OSX/OF0.8.4MaximExtractorExample/src/testApp.cpp b/ofxMaxim/openFrameworksExamples/OSX/OF0.8.4MaximExtractorExample/src/testApp.cpp
deleted file mode 100644
index 6c0ccf4..0000000
--- a/ofxMaxim/openFrameworksExamples/OSX/OF0.8.4MaximExtractorExample/src/testApp.cpp
+++ /dev/null
@@ -1,398 +0,0 @@
-/* This is an example of how to integrate maximilain into openFrameworks,
- including using audio received for input and audio requested for output.
-
-
- You can copy and paste this and use it as a starting example.
-
- */
-
-
-#include "testApp.h"
-#include "maximilian.h"/* include the lib */
-#include "time.h"
-
-
-
-//-------------------------------------------------------------
-testApp::~testApp() {
-
-}
-
-
-//--------------------------------------------------------------
-void testApp::setup(){
-
- sender.setup(HOST, PORT);
- /* some standard setup stuff*/
-
-
-
- ofEnableAlphaBlending();
- ofSetupScreen();
- ofBackground(0, 0, 0);
- ofSetFrameRate(60);
-
- /* This is stuff you always need.*/
-
- sampleRate = 44100; /* Sampling Rate */
- initialBufferSize = 512; /* Buffer Size. you have to fill this buffer with sound*/
- lAudioOut = new float[initialBufferSize];/* outputs */
- rAudioOut = new float[initialBufferSize];
- lAudioIn = new float[initialBufferSize];/* inputs */
- rAudioIn = new float[initialBufferSize];
-
-
- /* This is a nice safe piece of code */
- memset(lAudioOut, 0, initialBufferSize * sizeof(float));
- memset(rAudioOut, 0, initialBufferSize * sizeof(float));
-
- memset(lAudioIn, 0, initialBufferSize * sizeof(float));
- memset(rAudioIn, 0, initialBufferSize * sizeof(float));
-
- /* Now you can put anything you would normally put in maximilian's 'setup' method in here. */
-
- // samp.load(ofToDataPath("sinetest_stepping2.wav"));
- // samp.load(ofToDataPath("whitenoise2.wav"));
- // samp.load(ofToDataPath("additive22.wav"));
- //samp.load(ofToDataPath("pinknoise2.wav"));
- //samp.load(ofToDataPath("filtersweep2.wav"));
- //samp.getLength();
-
-
- fftSize = 1024;
- mfft.setup(fftSize, 512, 256);
- ifft.setup(fftSize, 512, 256);
-
-
- nAverages = 12;
- oct.setup(sampleRate, fftSize/2, nAverages);
-
- mfccs = (double*) malloc(sizeof(double) * 13);
- mfcc.setup(512, 42, 13, 20, 20000, sampleRate);
-
- ofxMaxiSettings::setup(sampleRate, 2, initialBufferSize);
- ofSoundStreamSetup(2,2, this, sampleRate, initialBufferSize, 4);/* Call this last ! */
-
-
- //GUI STUFF
- gui.setup(); // most of the time you don't need a name
-
- /* mfccToggle.setBackgroundColor(ofColor(191,72,250));
- fftToggle.setBackgroundColor(ofColor(191,72,250));
- chromagramToggle.setBackgroundColor(ofColor(191,72,250));
- peakFrequencyToggle.setBackgroundColor(ofColor(191,72,250));
- centroidToggle.setBackgroundColor(ofColor(191,72,250));
- rmsToggle.setBackgroundColor(ofColor(191,72,250)); */
-
-
- gui.add(fftToggle.setup("FFT bin magnitudes (pitch/timbre/volume) (512)", true));
- gui.add(mfccToggle.setup("MFCCs (timbre/vocal) (13)", true));
- gui.add(chromagramToggle.setup("Octave analyser (pitch) (12)", true));
- gui.add(peakFrequencyToggle.setup("Peak frequency (pitch) (1)", true));
- gui.add(centroidToggle.setup("Spectral centroid (timbre) (1)", true));
- gui.add(rmsToggle.setup("RMS (volume) (1)", true));
-
- //gui.setSize(600, 500);
-
- bHide = true;
-
- myfont.loadFont("arial.ttf", 18);
-
- ofSetVerticalSync(true);
-
-
-}
-
-//--------------------------------------------------------------
-void testApp::update(){
-
- if (fftToggle) {
- ofxOscMessage m;
- m.setAddress("/fft");
- for (int i = 0; i < fftSize; i++) {
- m.addFloatArg(mfft.magnitudes[i]);
-
- }
- sender.sendMessage(m);
- }
-
- if (mfccToggle) {
- ofxOscMessage m;
- m.setAddress("/mfccs");
- for (int i = 0; i < 13; i++) {
- m.addFloatArg(mfccs[i]);
- }
- sender.sendMessage(m);
- }
-
- if (chromagramToggle) {
- ofxOscMessage m;
- m.setAddress("/octaveBins");
- for (int i = 0; i < oct.nAverages; i++) {
- m.addFloatArg(oct.averages[i]);
- }
- sender.sendMessage(m);
- }
-
- if (peakFrequencyToggle) {
- ofxOscMessage m;
- m.setAddress("/peakFrequency");
- m.addFloatArg(peakFreq);
- sender.sendMessage(m);
- }
-
- if (centroidToggle) {
- ofxOscMessage m;
- m.setAddress("/centroid");
- m.addFloatArg(centroid);
- sender.sendMessage(m);
- }
- if (rmsToggle) {
- ofxOscMessage m;
- m.setAddress("/rms");
- m.addFloatArg(RMS);
- sender.sendMessage(m);
- }
-
-
-
-}
-
-
-
-//--------------------------------------------------------------
-void testApp::draw(){
-
- float horizWidth = 500.;
- float horizOffset = 100;
- float fftTop = 250;
- float mfccTop = 350;
- float chromagramTop = 450;
-
- ofSetColor(255, 0, 0,255);
-
- //draw fft output
- float xinc = horizWidth / fftSize * 2.0;
- for(int i=0; i < fftSize / 2; i++) {
- //magnitudesDB took out
- float height = mfft.magnitudes[i] * 100;
- ofRect(horizOffset + (i*xinc),250 - height,2, height);
- }
-
- // cout << "\nMFCCS: ";
- ofSetColor(0, 255, 0,200);
- xinc = horizWidth / 13;
- for(int i=0; i < 13; i++) {
- float height = mfccs[i] * 100.0;
- ofRect(horizOffset + (i*xinc),mfccTop - height,40, height);
- // cout << mfccs[i] << ",";
- }
-
-
-
-
- //octave analyser
- ofSetColor(255, 0, 255,200);
- xinc = horizWidth / oct.nAverages;
- for(int i=0; i < oct.nAverages; i++) {
- float height = oct.averages[i] / 20.0 * 100;
- ofRect(horizOffset + (i*xinc),chromagramTop - height,2, height);
- }
-
- ofSetColor(255, 255, 255,255);
-
- char peakString[255]; // an array of chars
- sprintf(peakString, "Peak Frequency: %.2f", peakFreq);
- myfont.drawString(peakString, horizOffset, chromagramTop + 50);
-
- char centroidString[255]; // an array of chars
- sprintf(centroidString, "Spectral Centroid: %f", centroid);
- myfont.drawString(centroidString, horizOffset, chromagramTop + 100);
-
- char rmsString[255]; // an array of chars
- sprintf(rmsString, "RMS: %.2f", RMS);
- myfont.drawString(rmsString, horizOffset, chromagramTop + 150);
-
-
- /*
- ofSetColor(255, 0, 255, 200);
- //myfont.drawString("Pitch histogram", 50, 650);
- xinc = horizWidth / 12.0;
- int j = 0;
- float pitchHist[12];
- for (int i = 0; i < oct.nAverages; i++) {
- pitchHist[j] += oct.averages[i];
- j++;
- j = j % 12;
- }
- for(int i=0; i < 12; i++) {
- float height = pitchHist[i] /40. * 100;
- ofRect(100 + (i*xinc),chromagramTop - height,50, height);
- }
- */
-
- /* ofSetColor(255, 0, 255,200);
- xinc = horizWidth /12;
- for(int i=0; i < 12; i++) {
- float height = chromagram[i] / 50.0 * 100;
- ofRect(100 + (i*xinc),chromagramTop - height,2, height);
- } */
-
- // chromagram
-
- //Mel bands
- // cout << "\nMel bands: ";
- /* ofSetColor(255, 0, 255,100);
- xinc = 900.0 / 42.0;
- for(int i=0; i < 42; i++) {
- // cout << mfcc.melBands[i] << ",";
- float height = mfcc.melBands[i] * 5.0;
- ofRect(100 + (i*xinc),400 - height,10, height);
- } */
- // cout << endl;
-
-
- // cout << "\n-------" << endl;
-
- // cout << callTime << endl;
-
- if( bHide ){
- gui.draw();
- }
-
-}
-
-//--------------------------------------------------------------
-void testApp::audioRequested (float * output, int bufferSize, int nChannels){
- // static double tm;
-
-
-
- for (int i = 0; i < bufferSize; i++){
- // wave = osc.saw(maxiMap::linexp(mouseY + ofGetWindowPositionY(), 0, ofGetScreenHeight(), 200, 8000));
- wave = lAudioIn[i];
- //wave = samp.play(1.);
- //get fft
- if (mfft.process(wave)) {
- // int bins = fftSize / 2.0;
- //do some manipulation
- // int hpCutoff = floor(((mouseX + ofGetWindowPositionX()) / (float) ofGetScreenWidth()) * fftSize / 2.0);
- //highpass
- // memset(mfft.magnitudes, 0, sizeof(float) * hpCutoff);
- // memset(mfft.phases, 0, sizeof(float) * hpCutoff);
- //lowpass
- // memset(mfft.magnitudes + hpCutoff, 0, sizeof(float) * (bins - hpCutoff));
- // memset(mfft.phases + hpCutoff, 0, sizeof(float) * (bins - hpCutoff));
- mfft.magsToDB();
- // for(int z=0; z < 512; z++) cout << mfft.magnitudesDB[z] << ",";
- // cout << "---------\n";
- oct.calculate(mfft.magnitudesDB);
-
-
- /* for (int j = 0; j < 12; j++) {
- chromagram[j] = 0;
- }
- int j = 0;
- for (int i = 0; i < oct.nAverages; i++) {
- chromagram[j] += oct.averages[i];
- j++;
- j = j % 12;
- } */
-
- float sum = 0;
- float maxFreq = 0;
- int maxBin = 0;
-
- for (int i = 0; i < fftSize/2; i++) {
- sum += mfft.magnitudes[i];
- if (mfft.magnitudes[i] > maxFreq) {
- maxFreq=mfft.magnitudes[i];
- maxBin = i;
- }
- }
- centroid = sum / (fftSize / 2);
- peakFreq = (float)maxBin/fftSize * 44100;
-
-
- mfcc.mfcc(mfft.magnitudes, mfccs);
- //cout << mfft.spectralFlatness() << ", " << mfft.spectralCentroid() << endl;
- }
- //inverse fft
- gettimeofday(&callTS,NULL);
- // ifftVal = ifft.process(mfft.magnitudes, mfft.phases);
- gettimeofday(&callEndTS,NULL);
- callTime = (float)(callEndTS.tv_usec - callTS.tv_usec) / 1000000.0;
- callTime += (float)(callEndTS.tv_sec - callTS.tv_sec);
- //play result
- mymix.stereo(wave, outputs, 0.5);
- // float mix = ((mouseX + ofGetWindowPositionX()) / (float) ofGetScreenWidth());
- // mymix.stereo((wave * mix) + ((1.0-mix) * ifftVal), outputs, 0.5);
- // lAudioOut[i] = output[i*nChannels ] = outputs[0]; /* You may end up with lots of outputs. add them here */
-//rAudioOut[i] = output[i*nChannels + 1] = outputs[1];
- lAudioOut[i] = 0;
- rAudioOut[i] = 0;
-
- }
-
-
-
-}
-
-//--------------------------------------------------------------
-void testApp::audioReceived (float * input, int bufferSize, int nChannels){
-
-
- /* You can just grab this input and stick it in a double, then use it above to create output*/
-
- float sum = 0;
- for (int i = 0; i < bufferSize; i++){
-
- /* you can also grab the data out of the arrays*/
-
- lAudioIn[i] = input[i*2];
- rAudioIn[i] = input[i*2+1];
-
- sum += input[i*2] * input[i*2];
-
- }
- RMS = sqrt(sum);
-
-}
-
-//--------------------------------------------------------------
-void testApp::keyPressed(int key){
-
-}
-
-//--------------------------------------------------------------
-void testApp::keyReleased(int key){
-
-}
-
-//--------------------------------------------------------------
-void testApp::mouseMoved(int x, int y ){
-
-
-
-}
-
-//--------------------------------------------------------------
-void testApp::mouseDragged(int x, int y, int button){
-
-}
-
-//--------------------------------------------------------------
-void testApp::mousePressed(int x, int y, int button){
-
-}
-
-//--------------------------------------------------------------
-void testApp::mouseReleased(int x, int y, int button){
-
-}
-
-//--------------------------------------------------------------
-void testApp::windowResized(int w, int h){
-
-}
-