andrew@2: /* andrew@2: * SoundFileLoader.h andrew@2: * audioFileLoaderSVN1 andrew@2: * andrew@2: * Created by Andrew on 04/09/2011. andrew@2: * Copyright 2011 QMUL. All rights reserved. andrew@2: * andrew@2: */ andrew@2: andrew@2: #ifndef SOUND_FILE_LOADER_H andrew@2: #define SOUND_FILE_LOADER_H andrew@2: andrew@2: andrew@2: #include "fftw3.h" andrew@2: #include "ofMain.h" andrew@2: #include "sndfile.h" andrew@2: #include "AudioFile.h" andrew@2: #include "AudioAnalysis.h" andrew@2: #include "chromaGram.h" andrew@2: #include "ChordDetect.h" andrew@2: andrew@2: #define FRAMESIZE 512 andrew@2: #define ENERGY_LENGTH 80000 andrew@2: #define CHROMA_LENGTH 12000 andrew@2: #define CHROMA_CONVERSION_FACTOR 16 //16 times as many frames in energy as in chroma andrew@2: andrew@2: andrew@2: //this does a chromagram analysis and aubio onset analysis andrew@2: //held in double matrix and doubleVector respectively andrew@2: //these are dynamic vectors, so size set by what's needed for the file andrew@2: andrew@2: class SoundFileLoader{ andrew@2: andrew@2: public: andrew@2: SoundFileLoader(); andrew@2: float frame[FRAMESIZE]; andrew@2: andrew@2: void loadLibSndFile(const char *infilename); andrew@2: andrew@2: AudioFile audioHolder; andrew@2: AudioAnalysis chromaAnalysis; andrew@2: Chromagram chromoGramm; andrew@2: Chromagram* chromaG; andrew@2: andrew@2: typedef std::vector DoubleVector; andrew@2: typedef std::vector DoubleMatrix; andrew@2: andrew@2: void processAudioToDoubleMatrix(); andrew@2: double getEnergyOfFrame(); andrew@2: andrew@2: int totalNumberOfFrames; andrew@2: andrew@2: SNDFILE *infile; // define input and output sound files andrew@2: SF_INFO sfinfo ; // struct to hold info about sound file andrew@2: andrew@2: }; andrew@2: #endif