annotate src/midiEventHolder.h @ 0:b299a65a3ad0

start project
author Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk>
date Tue, 16 Aug 2011 11:29:59 +0100
parents
children 1a32ce016bb9
rev   line source
andrew@0 1 /*
andrew@0 2 * midiEventHolder.h
andrew@0 3 * midiCannamReader3
andrew@0 4 *
andrew@0 5 * Created by Andrew on 19/07/2011.
andrew@0 6 * Copyright 2011 QMUL. All rights reserved.
andrew@0 7 *
andrew@0 8 */
andrew@0 9 #include "ofMain.h"
andrew@0 10 #include "BayesianArrayStructure.h"
andrew@0 11
andrew@0 12 class midiEventHolder{
andrew@0 13
andrew@0 14 public:
andrew@0 15
andrew@0 16 midiEventHolder();
andrew@0 17 void printNotes();
andrew@0 18
andrew@0 19 typedef std::vector<int> IntVector;
andrew@0 20 typedef std::vector<IntVector> IntMatrix;
andrew@0 21
andrew@0 22 typedef std::vector<bool> BoolVector;
andrew@0 23
andrew@0 24 typedef std::vector<double> DoubleVector;
andrew@0 25 typedef std::vector<DoubleVector> DoubleMatrix;
andrew@0 26
andrew@0 27 //the rehearsal version
andrew@0 28 IntMatrix recordedNoteOnMatrix;//note, velocity, duration
andrew@0 29 IntVector matchesFound;
andrew@0 30 BoolVector noteOnMatches;
andrew@0 31 // int recordedNoteOnIndex;
andrew@0 32 DoubleVector recordedEventTimes;
andrew@0 33
andrew@0 34 IntMatrix playedNoteOnMatrix;
andrew@0 35 DoubleVector playedEventTimes;
andrew@0 36 int playedNoteIndex;
andrew@0 37 IntMatrix matchMatrix;
andrew@0 38
andrew@0 39
andrew@0 40 double minimumMatchSpeed , maximumMatchSpeed;
andrew@0 41
andrew@0 42 double period, pulsesPerQuarternote;
andrew@0 43 double getEventTimeMillis(double ticks);
andrew@0 44 double getEventTimeTicks(double millis);
andrew@0 45
andrew@0 46 int getLocationFromTicks(double tickPosition);
andrew@0 47 int getLocationFromMillis(double millisPosition);
andrew@0 48
andrew@0 49 double windowStartTime;
andrew@0 50
andrew@0 51 //functions for finding match to incoming note
andrew@0 52 void newNoteOnEvent(int pitch, int velocity, double timePlayed);
andrew@0 53 int findLocalMatches(int notePitch);
andrew@0 54 bool checkIfMatchedNote(const int& tmpIndex);
andrew@0 55 int findMatch(const int& notePitch, const int& startTime, const int& endTime);
andrew@0 56
andrew@0 57
andrew@0 58 void findLocalTempoPairs();
andrew@0 59
andrew@0 60
andrew@0 61 double likelihoodWidth;
andrew@0 62 double likelihoodToNoiseRatio;
andrew@0 63
andrew@0 64 void printMatchMatrix();
andrew@0 65
andrew@0 66 void setMatchLikelihoods(int numberOfMatches);
andrew@0 67
andrew@0 68 void setStartPlayingTimes();
andrew@0 69
andrew@0 70 int width, height;
andrew@0 71 /////
andrew@0 72 string matchString;
andrew@0 73 void updatePlayPosition();
andrew@0 74
andrew@0 75 DoubleMatrix beatPeriodMatrix;
andrew@0 76
andrew@0 77 void drawFile();
andrew@0 78 void reset();
andrew@0 79
andrew@0 80 int ticksPerScreen;
andrew@0 81 int tickLocation;
andrew@0 82 int numberOfScreensIn;
andrew@0 83 int noteArrayIndex;
andrew@0 84
andrew@0 85 int matchWindowWidth;
andrew@0 86
andrew@0 87 int noteMinimum, noteMaximum;
andrew@0 88 int* screenWidth;
andrew@0 89 int* screenHeight;
andrew@0 90 float noteHeight;
andrew@0 91 float tempo;
andrew@0 92 double lastPeriodUpdateTime;
andrew@0 93
andrew@0 94 double playPositionInMillis;
andrew@0 95
andrew@0 96 double timeOffsetForScreen;
andrew@0 97
andrew@0 98 double recentNoteOnTime;
andrew@0 99
andrew@0 100 void exampleCrossUpdate();
andrew@0 101 BayesianArrayStructure bayesStruct;
andrew@0 102
andrew@0 103 string timeString;
andrew@0 104 double startTime;
andrew@0 105
andrew@0 106 };