annotate src/testApp.h @ 1:6842ff391568

getting rid of pointer use in processAudio - not many changes
author Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk>
date Wed, 18 May 2011 16:47:12 +0100
parents 572c856e38ac
children 9ce18f24b266
rev   line source
andrew@0 1 #ifndef _TEST_APP
andrew@0 2 #define _TEST_APP
andrew@0 3
andrew@0 4
andrew@0 5 #include "ofMain.h"
andrew@0 6 #include "chromaGram.h"
andrew@0 7 #include "ChordDetect.h"
andrew@0 8 #include "sndfile.h"
andrew@0 9 #include "ofxFileDialogOSX.h"
andrew@0 10 #include "timeWarp.h"
andrew@0 11
andrew@0 12 //#include <vector>
andrew@0 13 //#include <cstdlib>
andrew@0 14
andrew@0 15
andrew@0 16 #define FRAMESIZE 512
andrew@0 17 #define ENERGY_LENGTH 80000
andrew@0 18 #define CHROMA_LENGTH 12000
andrew@0 19 #define CHROMA_CONVERSION_FACTOR 16 //16 times as many frames in energy as in chroma
andrew@1 20 #define CHROMAGRAM_FRAMESIZE 2048
andrew@1 21
andrew@1 22
andrew@0 23 //length in terms of frames (at 512 samples per frame - there are 90 per second) => 900: 10 seconds
andrew@0 24
andrew@0 25 class testApp : public ofBaseApp{
andrew@0 26
andrew@0 27 public:
andrew@0 28
andrew@0 29
andrew@0 30 void setup();
andrew@0 31 void update();
andrew@0 32 void draw();
andrew@0 33
andrew@0 34 void keyPressed (int key);
andrew@0 35 void keyReleased(int key);
andrew@0 36 void mouseMoved(int x, int y );
andrew@0 37 void mouseDragged(int x, int y, int button);
andrew@0 38 void mousePressed(int x, int y, int button);
andrew@0 39 void mouseReleased(int x, int y, int button);
andrew@0 40 void windowResized(int w, int h);
andrew@0 41
andrew@0 42 void audioRequested (float * input, int bufferSize, int nChannels);
andrew@0 43 void loadSndfile();
andrew@0 44 double getEnergyOfFrame();
andrew@0 45
andrew@0 46
andrew@0 47 void drawChromoGram();
andrew@0 48
andrew@0 49 void loadFirstAudioFile();
andrew@0 50 void initialiseVariables();
andrew@0 51
andrew@0 52
andrew@0 53 typedef std::vector<double> DoubleVector;
andrew@0 54 typedef std::vector<DoubleVector> DoubleMatrix;
andrew@0 55
andrew@0 56 // DoubleMatrix chromaMatrix;
andrew@0 57 // DoubleMatrix secondMatrix;
andrew@0 58 DoubleMatrix* matrixPtr;
andrew@0 59
andrew@0 60 void drawDoubleMatrix(DoubleMatrix* dMatrix);//DoubleMatrix* dMatrix); WOULD BE NICE TO USE POINTER BUT NOT WORKING YET
andrew@0 61 void drawSpectralDifference(DoubleMatrix* dMatrix);
andrew@0 62
andrew@0 63 // DoubleVector firstEnergyVector;
andrew@0 64 // DoubleVector secondEnergyVector;
andrew@0 65
andrew@0 66
andrew@0 67 // DoubleMatrix similarityMatrix;
andrew@0 68 void calculateSimilarityMatrix();
andrew@0 69
andrew@0 70 bool drawSimilarity;
andrew@0 71 void drawSimilarityMatrix();
andrew@0 72 void printSimilarityMatrix(int sizeToPrint);
andrew@0 73
andrew@0 74 // DoubleMatrix alignmentMeasureMatrix;
andrew@0 75
andrew@0 76 // DoubleVector minimumAlignmentPath;
andrew@0 77
andrew@0 78 void drawAlignmentPath(int startingChromaXFrame, int startingChromaYFrame);
andrew@0 79 int findStartWidthFrame();
andrew@0 80
andrew@0 81 void printScoreForRow(int row, int max);
andrew@0 82
andrew@0 83 int numberOfScrollWidthsForFirstFile;
andrew@0 84 int numberOfScrollWidthsForSecondFile;
andrew@0 85
andrew@0 86 void checkIfAudioPositionExceedsWidthForFirstFile();
andrew@0 87
andrew@0 88 typedef std::vector<int> IntVector;
andrew@0 89 typedef std::vector<IntVector> IntMatrix;
andrew@0 90
andrew@0 91 // IntMatrix backwardsAlignmentPath;
andrew@0 92 int backwardsAlignmentIndex;//used for drawing the path
andrew@0 93
andrew@0 94 void updateAlignmentPathIndex(int idenifier);
andrew@0 95
andrew@0 96 // bool checkWhetherOnAlignmentPath(int xcoord, int ycoord, int *indexOfAlignmentPathTested);
andrew@0 97
andrew@0 98 bool findPreviousMinimumInBackwardsPath();
andrew@0 99 bool testForNewAlignmentMinimum(double *previousMinimum, int i, int j);
andrew@0 100
andrew@0 101 void calculateAlignmentMatrix();
andrew@0 102 // void performNextAlignment();
andrew@0 103 double getDistance(int i, int j);
andrew@0 104 void printAlignmentMatrix();
andrew@0 105 double getMinimum(int i, int j, float newValue);
andrew@0 106 bool extendAlignmentUp();
andrew@0 107 bool extendAlignmentAlong();
andrew@0 108 void calculateMinimumAlignmentPath();
andrew@0 109 int findMinimumOfVector(DoubleVector *d);
andrew@0 110 void swapBetweenPlayingFilesUsingAlignmentMatch();
andrew@0 111 int findMatchFromAlignment(bool whichFileToTest);
andrew@0 112
andrew@0 113 void drawEnergyVectorFromPointer(DoubleVector* energyVec);
andrew@0 114
andrew@1 115 void processAudioToDoubleMatrix(DoubleMatrix* myDoubleMatrix, DoubleVector* energyVector);
andrew@0 116
andrew@0 117 void loadNewAudio(string soundFileName);
andrew@0 118 void loadSecondAudio(string soundFileName);
andrew@0 119
andrew@0 120 void loadSoundFiles();
andrew@0 121 void openFileDialogBox();
andrew@0 122 void loadLibSndFile(const char * filename);
andrew@0 123 bool getFilenameFromDialogBox(string* fileNameToSave);
andrew@0 124 void openNewAudioFileWithdialogBox();
andrew@0 125
andrew@0 126 //int* firstAudioLength, secondAudioLength;
andrew@0 127
andrew@0 128 string soundFileName, secondFileName;
andrew@0 129
andrew@0 130 float screenHeight, screenWidth;
andrew@0 131
andrew@0 132 float pan;
andrew@0 133 int sampleRate;
andrew@0 134 bool bNoise;
andrew@0 135 float volume;
andrew@0 136
andrew@0 137 float * lAudio;
andrew@0 138 float * rAudio;
andrew@0 139
andrew@0 140 bool moveOn;
andrew@0 141 bool drawSpectralDifferenceFunction;
andrew@0 142 float frame[FRAMESIZE];
andrew@0 143 int frameIndex;
andrew@0 144 float energy[ENERGY_LENGTH];
andrew@0 145 float secondEnergy[ENERGY_LENGTH];
andrew@0 146
andrew@0 147 float chromoGramVector[CHROMA_LENGTH][12];
andrew@0 148 int rootChord[CHROMA_LENGTH];
andrew@0 149
andrew@0 150 // int energyIndex;
andrew@0 151 // int totalFrames;
andrew@0 152
andrew@0 153 int scrollWidth;// 1600
andrew@0 154 float chromoLength;
andrew@0 155
andrew@0 156 bool audioPlaying, audioPaused;
andrew@0 157 bool drawSecondMatrix;
andrew@0 158
andrew@0 159 float diagonalPenalty;
andrew@0 160
andrew@0 161 //------------------- for the simple sine wave synthesis
andrew@0 162 float targetFrequency;
andrew@0 163 float phase;
andrew@0 164 float phaseAdder;
andrew@0 165 float phaseAdderTarget;
andrew@0 166
andrew@0 167 string sndfileInfoString, textString;
andrew@0 168 int xIndex;
andrew@0 169
andrew@0 170 bool firstAudioFilePlaying;
andrew@0 171 ofSoundPlayer loadedAudio;
andrew@0 172 ofSoundPlayer secondAudio;
andrew@0 173 ofSoundPlayer *playingAudio;
andrew@0 174
andrew@0 175 float audioPosition;
andrew@0 176 float width, height;
andrew@0 177 int chromaIndex;
andrew@0 178 int totalNumberOfFrames;
andrew@0 179 int currentPlayingFrame;
andrew@0 180 int currentChromaFrame ;
andrew@0 181 string chordString;
andrew@0 182
andrew@0 183 //Chromagram* chromoGrammPtr;
andrew@0 184 Chromagram chromoGramm;
andrew@0 185 Chromagram secondChromoGramm;
andrew@0 186 string userInfoString;
andrew@0 187 ChordDetect chord;
andrew@0 188 //sndfile part
andrew@0 189 SNDFILE *infile; // define input and output sound files
andrew@0 190 SF_INFO sfinfo ; // struct to hold info about sound file
andrew@0 191
andrew@0 192
andrew@0 193 timeWarp tw;
andrew@1 194 Chromagram chromaG;
andrew@0 195
andrew@0 196 };
andrew@0 197
andrew@0 198 #endif