andrew@0
|
1 /*
|
andrew@0
|
2 * AudioEventMatcher.h
|
andrew@0
|
3 * MultipleAudioMathcher
|
andrew@0
|
4 *
|
andrew@0
|
5 * Created by Andrew on 31/01/2012.
|
andrew@0
|
6 * Copyright 2012 QMUL. All rights reserved.
|
andrew@0
|
7 *
|
andrew@0
|
8 */
|
andrew@0
|
9
|
andrew@0
|
10
|
andrew@0
|
11
|
andrew@0
|
12 #ifndef AUDIO_EVENT_MATCHER_H
|
andrew@0
|
13 #define AUDIO_EVENT_MATCHER_H
|
andrew@0
|
14
|
andrew@0
|
15
|
andrew@0
|
16 #include "ofMain.h"
|
andrew@0
|
17 #include "ChromaOnset.h"
|
andrew@0
|
18 #include "LiveAudioInput.h"
|
andrew@0
|
19 #include "ofxWindowRegion.h"
|
andrew@0
|
20 #include "BayesianArrayStructure.h"
|
andrew@1
|
21 #include "RecordedMultitrackAudio.h"
|
andrew@7
|
22 #include "DynamicVector.h"
|
andrew@0
|
23
|
andrew@0
|
24 class AudioEventMatcher{
|
andrew@0
|
25
|
andrew@0
|
26 public:
|
andrew@0
|
27 AudioEventMatcher();
|
andrew@0
|
28
|
andrew@0
|
29 void setArraySizes();
|
andrew@0
|
30
|
andrew@9
|
31 void updatePosition();
|
andrew@8
|
32 void updateBestAlignmentPosition();
|
andrew@8
|
33
|
andrew@0
|
34 void draw();
|
andrew@6
|
35 void drawBayesianDistributions();;
|
andrew@7
|
36 void setWindowDimensions();
|
andrew@0
|
37
|
andrew@6
|
38 void newPitchEvent(const int& channel, const double& pitchIn, const double& timeIn);
|
andrew@2
|
39 void newKickEvent(const double& timeIn);
|
andrew@6
|
40 void newKickEvent(const int& channel, const double& timeIn);
|
andrew@2
|
41 void newSnareEvent(const double& timeIn);
|
andrew@7
|
42 void newSnareEvent(const int& channel, const double& timeIn);
|
andrew@2
|
43
|
andrew@2
|
44 void matchNewPitchEvent(const int& channel, const double& pitchIn, const double& timeIn);
|
andrew@2
|
45 void matchNewOnsetEvent(const int& channel, const double& timeIn);
|
andrew@1
|
46
|
andrew@0
|
47 BayesianArrayStructure bayesianStruct;//hold the probability distriubtions
|
andrew@0
|
48
|
andrew@0
|
49 LiveAudioInput liveInput;//hold the new events that come in
|
andrew@1
|
50 RecordedMultitrackAudio recordedTracks;
|
andrew@1
|
51
|
andrew@1
|
52 void windowResized(const int& w, const int& h);
|
andrew@0
|
53
|
andrew@0
|
54 ofxWindowRegion bayesTempoWindow;
|
andrew@3
|
55 ofxWindowRegion bayesPositionWindow;
|
andrew@3
|
56 ofxWindowRegion bayesLikelihoodWindow;
|
andrew@0
|
57
|
andrew@3
|
58 bool checkMatch(const double& recordedPitch, const double& livePitch);
|
andrew@3
|
59 double getPitchDistance(const double& pitchOne, const double& pitchTwo, const double& scale);
|
andrew@3
|
60
|
andrew@3
|
61 void startPlaying();
|
andrew@3
|
62
|
andrew@3
|
63 bool usingRealTime;
|
andrew@7
|
64 double recentPitch, recentTime;
|
andrew@7
|
65
|
andrew@7
|
66 DynamicVector likelihoodVisualisation[3];
|
andrew@7
|
67 DynamicVector recentPrior;
|
andrew@10
|
68 DynamicVector projectedPrior;
|
andrew@8
|
69
|
andrew@8
|
70 double currentAlignmentPosition;
|
andrew@8
|
71 double lastAlignmentTime;
|
andrew@8
|
72
|
andrew@8
|
73 double recentEventTime[3];
|
andrew@10
|
74 int startTime;
|
andrew@9
|
75
|
andrew@9
|
76 double screenStartTimeMillis, screenEndTimeMillis, screenWidthMillis;
|
andrew@9
|
77 bool followingLiveInput;
|
andrew@9
|
78 void setScreenDisplayTimes();
|
andrew@0
|
79 };
|
andrew@0
|
80 #endif
|