andrew@0: /* andrew@0: * AudioAnalysis.h andrew@0: * audioFileLoader4 andrew@0: * andrew@0: * Created by Andrew on 14/08/2011. andrew@0: * Copyright 2011 QMUL. All rights reserved. andrew@0: * andrew@0: */ andrew@0: andrew@0: #ifndef AUDIO_ANALYSIS_H andrew@0: #define AUDIO_ANALYSIS_H andrew@0: andrew@0: andrew@0: //#include "fftw3.h" andrew@0: #include "ofMain.h" andrew@0: //#include "chromaGram.h" andrew@0: //#include "ChordDetect.h" andrew@0: #include "sndfile.h" andrew@0: #include "ofxFileDialogOSX.h" andrew@0: #include "AudioFile.h" andrew@0: andrew@0: #define FRAMESIZE 512 andrew@0: #define ENERGY_LENGTH 80000 andrew@0: #define CHROMA_LENGTH 12000 andrew@0: #define CHROMA_CONVERSION_FACTOR 16 //16 times as many frames in energy as in chroma andrew@0: andrew@0: andrew@0: //this does a chromagram analysis and aubio onset analysis andrew@0: //held in double matrix and doubleVector respectively andrew@0: //these are dynamic vectors, so size set by what's needed for the file andrew@0: andrew@0: class AudioAnalysis{ andrew@0: andrew@0: public: andrew@0: andrew@0: AudioAnalysis(); andrew@0: andrew@0: typedef std::vector DoubleVector; andrew@0: typedef std::vector DoubleMatrix; andrew@0: andrew@0: DoubleMatrix chromaMatrix; andrew@0: // DoubleMatrix* matrixPtr; andrew@0: DoubleVector energyVector; andrew@0: andrew@0: AudioFile* audioHolder; andrew@0: void loadNewAudio(string soundFileName);//?? andrew@0: andrew@0: // Chromagram chromoGramm; andrew@0: int currentPlayingFrame; andrew@0: andrew@0: // ChordDetect chord; andrew@0: andrew@0: double getEnergyOfFrame(); andrew@0: int scrollWidth; andrew@0: //int totalFrames; andrew@0: void drawEnergyVectorFromPointer(); andrew@0: void drawSpectralDifference(); andrew@0: andrew@0: /* andrew@0: double getEnergyOfFrame(); andrew@0: andrew@0: andrew@0: void initialiseVariables(); andrew@0: andrew@0: andrew@0: void initialiseVariables(); andrew@0: andrew@0: andrew@0: AudioFile audioHolder; andrew@0: andrew@0: void drawDoubleMatrix(DoubleMatrix* dMatrix);//DoubleMatrix* dMatrix); WOULD BE NICE TO USE POINTER BUT NOT WORKING YET andrew@0: andrew@0: andrew@0: DoubleVector firstEnergyVector; andrew@0: andrew@0: void drawEnergyVectorFromPointer(DoubleVector* energyVec); andrew@0: andrew@0: void processAudioToDoubleMatrix(Chromagram* chromaG, DoubleMatrix* myDoubleMatrix, DoubleVector* energyVector); andrew@0: andrew@0: void loadNewAudio(string soundFileName); andrew@0: andrew@0: andrew@0: andrew@0: */ andrew@0: andrew@0: andrew@0: }; andrew@0: #endif andrew@0: andrew@0: andrew@0: