andrew@0: /* andrew@0: * ChromaOnset.h andrew@0: * fileLoaderAndOnsetDetection andrew@0: * andrew@0: * Created by Andrew on 17/01/2012. andrew@0: * Copyright 2012 QMUL. All rights reserved. andrew@0: * andrew@0: */ andrew@0: andrew@0: #ifndef CHROMA_ONSET_H andrew@0: #define CHROMA_ONSET_H andrew@0: andrew@0: #include "ofMain.h" andrew@0: #include "chromaGram.h" andrew@0: //#include "AubioPitch.h" andrew@0: #include "FrameHolder.h" andrew@0: andrew@0: /* andrew@0: //could switch to a struct to hold this? andrew@0: andrew@0: struct OnsetEvent{ andrew@0: double millisTime; andrew@0: int frameTime; andrew@0: andrew@0: bool chromaCalculated; andrew@0: float chromaValues[12]; andrew@0: andrew@0: bool aubioPitchFound; andrew@0: float aubioPitch; andrew@0: }; andrew@0: */ andrew@0: andrew@0: class ChromaOnset { andrew@0: public: andrew@0: ChromaOnset(); andrew@0: andrew@0: double millisTime; andrew@0: int frameTime; andrew@0: //chromagram chroma; andrew@0: bool chromaCalculated; andrew@0: int chromaSize; andrew@0: int pitchFrameCounter; andrew@0: andrew@0: //move chromagram out of this class andrew@0: //Chromagram cgram; andrew@0: andrew@0: typedef std::vector FloatVector; andrew@0: FloatVector chromaValues; andrew@0: FloatVector quantisedChromaValues; andrew@0: andrew@0: double getQuantisedDistance(ChromaOnset& secondChromaOnset); andrew@0: double getChromaQuantisedDistance(float* quantisedChromagramTwo); andrew@0: //also do pitch detection using this class andrew@0: //AubioPitch *aubioPitchDetector; andrew@0: bool aubioPitchFound; andrew@0: float aubioPitch; andrew@0: andrew@0: bool matched;//just for drawing andrew@0: andrew@0: andrew@0: bool processFrame(float* frame, const int& length); andrew@0: // void calculateChroma(float* frame, const int& length); andrew@0: andrew@0: double timeDistanceMillis(const ChromaOnset& secondChromaOnset); andrew@0: double pitchDistance(const ChromaOnset& secondChromaOnset); andrew@0: double chromaDotProductDistance(const ChromaOnset& secondChromaOnset); andrew@0: andrew@0: andrew@0: Chromagram* cgramPtr; andrew@0: void deleteChromagram(); andrew@0: andrew@0: FrameHolder onsetFrame; andrew@0: andrew@0: int onsetIndex;//in terms of our onset detection fn - ofxAubioOnsetDetector andrew@0: void printInfo(); andrew@0: }; andrew@0: #endif