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@1: #define FRAMESIZE 512 andrew@1: #define ENERGY_LENGTH 80000 andrew@1: #define CHROMA_LENGTH 12000 andrew@1: #define CHROMA_CONVERSION_FACTOR 16 //16 times as many frames in energy as in chroma andrew@1: andrew@1: 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@1: andrew@1: AudioAnalysis(); andrew@1: andrew@1: typedef std::vector DoubleVector; andrew@1: typedef std::vector DoubleMatrix; andrew@1: andrew@1: DoubleMatrix chromaMatrix; andrew@1: // DoubleMatrix* matrixPtr; andrew@1: DoubleVector energyVector; andrew@1: andrew@1: AudioFile* audioHolder; andrew@1: void loadNewAudio(string soundFileName);//?? andrew@1: andrew@1: Chromagram chromoGramm; andrew@1: int currentPlayingFrame; andrew@1: andrew@1: ChordDetect chord; andrew@1: andrew@1: double getEnergyOfFrame(); andrew@1: int scrollWidth; andrew@1: //int totalFrames; andrew@1: void drawEnergyVectorFromPointer(); andrew@1: void drawSpectralDifference(); andrew@1: andrew@0: /* andrew@0: double getEnergyOfFrame(); andrew@1: andrew@0: andrew@0: void initialiseVariables(); andrew@0: andrew@1: andrew@1: void initialiseVariables(); andrew@0: andrew@1: andrew@1: AudioFile audioHolder; andrew@1: andrew@1: void drawDoubleMatrix(DoubleMatrix* dMatrix);//DoubleMatrix* dMatrix); WOULD BE NICE TO USE POINTER BUT NOT WORKING YET andrew@0: andrew@1: andrew@1: DoubleVector firstEnergyVector; andrew@1: andrew@1: void drawEnergyVectorFromPointer(DoubleVector* energyVec); andrew@1: andrew@1: void processAudioToDoubleMatrix(Chromagram* chromaG, DoubleMatrix* myDoubleMatrix, DoubleVector* energyVector); andrew@1: andrew@1: void loadNewAudio(string soundFileName); andrew@1: andrew@1: andrew@1: andrew@0: */ andrew@0: andrew@0: andrew@0: }; andrew@0: #endif andrew@0: andrew@0: andrew@0: