andrew@0
|
1 /*
|
andrew@0
|
2 * AudioAnalysis.h
|
andrew@0
|
3 * audioFileLoader4
|
andrew@0
|
4 *
|
andrew@0
|
5 * Created by Andrew on 14/08/2011.
|
andrew@0
|
6 * Copyright 2011 QMUL. All rights reserved.
|
andrew@0
|
7 *
|
andrew@0
|
8 */
|
andrew@0
|
9
|
andrew@0
|
10 #ifndef AUDIO_ANALYSIS_H
|
andrew@0
|
11 #define AUDIO_ANALYSIS_H
|
andrew@0
|
12
|
andrew@0
|
13
|
andrew@0
|
14 #include "fftw3.h"
|
andrew@0
|
15 #include "ofMain.h"
|
andrew@0
|
16 #include "chromaGram.h"
|
andrew@0
|
17 #include "ChordDetect.h"
|
andrew@0
|
18 #include "sndfile.h"
|
andrew@0
|
19 #include "ofxFileDialogOSX.h"
|
andrew@0
|
20 #include "AudioFile.h"
|
andrew@0
|
21
|
andrew@1
|
22 #define FRAMESIZE 512
|
andrew@1
|
23 #define ENERGY_LENGTH 80000
|
andrew@1
|
24 #define CHROMA_LENGTH 12000
|
andrew@1
|
25 #define CHROMA_CONVERSION_FACTOR 16 //16 times as many frames in energy as in chroma
|
andrew@1
|
26
|
andrew@1
|
27
|
andrew@0
|
28 //this does a chromagram analysis and aubio onset analysis
|
andrew@0
|
29 //held in double matrix and doubleVector respectively
|
andrew@0
|
30 //these are dynamic vectors, so size set by what's needed for the file
|
andrew@0
|
31
|
andrew@0
|
32 class AudioAnalysis{
|
andrew@0
|
33
|
andrew@0
|
34 public:
|
andrew@1
|
35
|
andrew@1
|
36 AudioAnalysis();
|
andrew@1
|
37
|
andrew@1
|
38 typedef std::vector<double> DoubleVector;
|
andrew@1
|
39 typedef std::vector<DoubleVector> DoubleMatrix;
|
andrew@1
|
40
|
andrew@1
|
41 DoubleMatrix chromaMatrix;
|
andrew@1
|
42 // DoubleMatrix* matrixPtr;
|
andrew@1
|
43 DoubleVector energyVector;
|
andrew@1
|
44
|
andrew@1
|
45 AudioFile* audioHolder;
|
andrew@1
|
46 void loadNewAudio(string soundFileName);//??
|
andrew@1
|
47
|
andrew@1
|
48 Chromagram chromoGramm;
|
andrew@1
|
49 int currentPlayingFrame;
|
andrew@1
|
50
|
andrew@1
|
51 ChordDetect chord;
|
andrew@1
|
52
|
andrew@1
|
53 double getEnergyOfFrame();
|
andrew@1
|
54 int scrollWidth;
|
andrew@1
|
55 //int totalFrames;
|
andrew@1
|
56 void drawEnergyVectorFromPointer();
|
andrew@1
|
57 void drawSpectralDifference();
|
andrew@1
|
58
|
andrew@0
|
59 /*
|
andrew@0
|
60 double getEnergyOfFrame();
|
andrew@1
|
61
|
andrew@0
|
62
|
andrew@0
|
63 void initialiseVariables();
|
andrew@0
|
64
|
andrew@1
|
65
|
andrew@1
|
66 void initialiseVariables();
|
andrew@0
|
67
|
andrew@1
|
68
|
andrew@1
|
69 AudioFile audioHolder;
|
andrew@1
|
70
|
andrew@1
|
71 void drawDoubleMatrix(DoubleMatrix* dMatrix);//DoubleMatrix* dMatrix); WOULD BE NICE TO USE POINTER BUT NOT WORKING YET
|
andrew@0
|
72
|
andrew@1
|
73
|
andrew@1
|
74 DoubleVector firstEnergyVector;
|
andrew@1
|
75
|
andrew@1
|
76 void drawEnergyVectorFromPointer(DoubleVector* energyVec);
|
andrew@1
|
77
|
andrew@1
|
78 void processAudioToDoubleMatrix(Chromagram* chromaG, DoubleMatrix* myDoubleMatrix, DoubleVector* energyVector);
|
andrew@1
|
79
|
andrew@1
|
80 void loadNewAudio(string soundFileName);
|
andrew@1
|
81
|
andrew@1
|
82
|
andrew@1
|
83
|
andrew@0
|
84 */
|
andrew@0
|
85
|
andrew@0
|
86
|
andrew@0
|
87 };
|
andrew@0
|
88 #endif
|
andrew@0
|
89
|
andrew@0
|
90
|
andrew@0
|
91
|