Mercurial > hg > multitrack-audio-matcher
view src/AudioEventMatcher.h @ 23:bc113cd60a2f
tmp mistake
author | Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk> |
---|---|
date | Mon, 13 Feb 2012 14:58:53 +0000 |
parents | 24c413f0f2c5 |
children | 4be22a1a0e24 |
line wrap: on
line source
/* * AudioEventMatcher.h * MultipleAudioMathcher * * Created by Andrew on 31/01/2012. * Copyright 2012 QMUL. All rights reserved. * */ #ifndef AUDIO_EVENT_MATCHER_H #define AUDIO_EVENT_MATCHER_H #define NUMBER_OF_CHANNELS 3 #include "ofMain.h" #include "ChromaOnset.h" #include "LiveAudioInput.h" #include "ofxWindowRegion.h" #include "BayesianArrayStructure.h" #include "RecordedMultitrackAudio.h" #include "DynamicVector.h" #include "AccompanimentSynchroniser.h" #include "TempoFollower.h" class AudioEventMatcher{ public: AudioEventMatcher(); void setArraySizes(); void updatePosition(); void updateBestAlignmentPosition(); void draw(); void drawBayesianDistributions();; void setWindowDimensions(); void newPitchEvent(const int& channel, const double& pitchIn, const double& timeIn); void newKickEvent(const double& timeIn); void newKickEvent(const int& channel, const double& timeIn); void newSnareEvent(const double& timeIn); void newSnareEvent(const int& channel, const double& timeIn); void matchNewPitchEvent(const int& channel, const double& pitchIn, const double& timeIn); void matchNewOnsetEvent(const int& channel, const double& timeIn); BayesianArrayStructure bayesianStruct;//hold the probability distriubtions LiveAudioInput liveInput;//hold the new events that come in RecordedMultitrackAudio recordedTracks; void loadAudioFiles(); void rescue();//flat prior void windowResized(const int& w, const int& h); ofxWindowRegion bayesTempoWindow; ofxWindowRegion bayesPositionWindow; ofxWindowRegion bayesLikelihoodWindow; bool checkMatch(const double& recordedPitch, const double& livePitch); double getPitchDistance(const double& pitchOne, const double& pitchTwo, const double& scale); void startPlaying(); void stopPlaying(); bool startedPlaying; bool usingRealTime; double recentPitch, recentTime; DynamicVector likelihoodVisualisation[NUMBER_OF_CHANNELS]; DynamicVector recentPriors[NUMBER_OF_CHANNELS]; //DynamicVector recentPrior; DynamicVector projectedPrior; double currentAlignmentPosition; double lastAlignmentTime; double recentEventTime[NUMBER_OF_CHANNELS]; int startTime; int currentAlignmentTime; double screenStartTimeMillis, screenEndTimeMillis, screenWidthMillis; bool followingLiveInput; void setScreenDisplayTimes(); AccompanimentSynchroniser synchroniser; //params double onsetLikelihoodWidth; double onsetLikelihoodToNoise; double pitchLikelihoodToNoise;//more noise double pitchOfNearestMatch;//for viz purposes double distanceOfNearestMatch; TempoFollower temporal; TempoFollower recordedTempoData; void calculateRecordedTempoData(); void setTempoPrior(double tempo); void setNextOnsetTime(const int&channel, int& time, int* indexForOnsets); int recordedTempoIndex; double recordedTempo; void updateRecordedTempo(); void drawRecordedTempo(); double currentSpeedRatio; void drawPlayingTempo(); void setSpeedRatioDistribution(const double& speedRatio); }; #endif