andrew@0: /* andrew@0: * AudioEventMatcher.h andrew@0: * MultipleAudioMathcher andrew@0: * andrew@0: * Created by Andrew on 31/01/2012. andrew@0: * Copyright 2012 QMUL. All rights reserved. andrew@0: * andrew@0: */ andrew@0: andrew@0: andrew@0: andrew@0: #ifndef AUDIO_EVENT_MATCHER_H andrew@0: #define AUDIO_EVENT_MATCHER_H andrew@0: andrew@0: andrew@0: #include "ofMain.h" andrew@0: #include "ChromaOnset.h" andrew@0: #include "LiveAudioInput.h" andrew@0: #include "ofxWindowRegion.h" andrew@0: #include "BayesianArrayStructure.h" andrew@1: #include "RecordedMultitrackAudio.h" andrew@0: andrew@0: class AudioEventMatcher{ andrew@0: andrew@0: public: andrew@0: AudioEventMatcher(); andrew@0: andrew@0: void setArraySizes(); andrew@0: andrew@0: void draw(); andrew@6: void drawBayesianDistributions();; andrew@0: andrew@6: void newPitchEvent(const int& channel, const double& pitchIn, const double& timeIn); andrew@2: void newKickEvent(const double& timeIn); andrew@6: void newKickEvent(const int& channel, const double& timeIn); andrew@2: void newSnareEvent(const double& timeIn); andrew@2: andrew@2: void matchNewPitchEvent(const int& channel, const double& pitchIn, const double& timeIn); andrew@2: void matchNewOnsetEvent(const int& channel, const double& timeIn); andrew@1: andrew@0: BayesianArrayStructure bayesianStruct;//hold the probability distriubtions andrew@0: andrew@0: LiveAudioInput liveInput;//hold the new events that come in andrew@1: RecordedMultitrackAudio recordedTracks; andrew@1: andrew@1: void windowResized(const int& w, const int& h); andrew@0: andrew@0: ofxWindowRegion bayesTempoWindow; andrew@3: ofxWindowRegion bayesPositionWindow; andrew@3: ofxWindowRegion bayesLikelihoodWindow; andrew@0: andrew@3: bool checkMatch(const double& recordedPitch, const double& livePitch); andrew@3: double getPitchDistance(const double& pitchOne, const double& pitchTwo, const double& scale); andrew@3: andrew@3: void startPlaying(); andrew@3: andrew@3: bool usingRealTime; andrew@6: andrew@0: }; andrew@0: #endif