annotate src/midiEventHolder.h @ 5:195907bb8bb7

added purple where notes have been seen - lets you see what updates have been used. Also the chopping of midi files to the beginning was introduced recently, so when they load, you chop any white space at the beginning, then use first note to launch.
author Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk>
date Fri, 19 Aug 2011 16:38:30 +0100
parents de86d77f2612
children 6f5836d432ca
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@2 9 #ifndef MIDI_EVENT_HOLDER
andrew@2 10 #define MIDI_EVENT_HOLDER
andrew@2 11
andrew@0 12 #include "ofMain.h"
andrew@0 13 #include "BayesianArrayStructure.h"
andrew@0 14
andrew@0 15 class midiEventHolder{
andrew@0 16
andrew@0 17 public:
andrew@0 18
andrew@0 19 midiEventHolder();
andrew@0 20 void printNotes();
andrew@0 21
andrew@0 22 typedef std::vector<int> IntVector;
andrew@0 23 typedef std::vector<IntVector> IntMatrix;
andrew@0 24
andrew@0 25 typedef std::vector<bool> BoolVector;
andrew@0 26
andrew@0 27 typedef std::vector<double> DoubleVector;
andrew@0 28 typedef std::vector<DoubleVector> DoubleMatrix;
andrew@0 29
andrew@0 30 //the rehearsal version
andrew@0 31 IntMatrix recordedNoteOnMatrix;//note, velocity, duration
andrew@2 32 DoubleVector recordedEventTimes;
andrew@2 33
andrew@0 34 IntVector matchesFound;
andrew@0 35 BoolVector noteOnMatches;
andrew@1 36
andrew@0 37 // int recordedNoteOnIndex;
andrew@2 38
andrew@0 39
andrew@0 40 IntMatrix playedNoteOnMatrix;
andrew@0 41 DoubleVector playedEventTimes;
andrew@0 42 int playedNoteIndex;
andrew@0 43 IntMatrix matchMatrix;
andrew@1 44 DoubleMatrix matchConfidence;
andrew@1 45 double totalConfidence;
andrew@0 46
andrew@1 47 double mouseX;
andrew@1 48
andrew@1 49 void clearAllEvents();
andrew@1 50 bool drawTempoMode;
andrew@0 51
andrew@0 52 double minimumMatchSpeed , maximumMatchSpeed;
andrew@0 53
andrew@0 54 double period, pulsesPerQuarternote;
andrew@0 55 double getEventTimeMillis(double ticks);
andrew@0 56 double getEventTimeTicks(double millis);
andrew@0 57
andrew@0 58 int getLocationFromTicks(double tickPosition);
andrew@0 59 int getLocationFromMillis(double millisPosition);
andrew@0 60
andrew@0 61 double windowStartTime;
andrew@0 62
andrew@0 63 //functions for finding match to incoming note
andrew@0 64 void newNoteOnEvent(int pitch, int velocity, double timePlayed);
andrew@0 65 int findLocalMatches(int notePitch);
andrew@0 66 bool checkIfMatchedNote(const int& tmpIndex);
andrew@0 67 int findMatch(const int& notePitch, const int& startTime, const int& endTime);
andrew@0 68
andrew@0 69
andrew@0 70 void findLocalTempoPairs();
andrew@0 71
andrew@0 72
andrew@0 73 double likelihoodWidth;
andrew@0 74 double likelihoodToNoiseRatio;
andrew@0 75
andrew@0 76 void printMatchMatrix();
andrew@0 77
andrew@0 78 void setMatchLikelihoods(int numberOfMatches);
andrew@0 79
andrew@0 80 void setStartPlayingTimes();
andrew@3 81 void setSpeedPrior(double speedPriorValue);
andrew@0 82
andrew@0 83 int width, height;
andrew@0 84 /////
andrew@0 85 string matchString;
andrew@0 86 void updatePlayPosition();
andrew@0 87
andrew@0 88 DoubleMatrix beatPeriodMatrix;
andrew@0 89
andrew@0 90 void drawFile();
andrew@0 91 void reset();
andrew@5 92 void setMatchedNotesBackToFalse();
andrew@0 93
andrew@0 94 int ticksPerScreen;
andrew@0 95 int tickLocation;
andrew@0 96 int numberOfScreensIn;
andrew@0 97 int noteArrayIndex;
andrew@0 98
andrew@0 99 int matchWindowWidth;
andrew@0 100
andrew@0 101 int noteMinimum, noteMaximum;
andrew@0 102 int* screenWidth;
andrew@0 103 int* screenHeight;
andrew@0 104 float noteHeight;
andrew@0 105 float tempo;
andrew@0 106 double lastPeriodUpdateTime;
andrew@0 107
andrew@0 108 double playPositionInMillis;
andrew@0 109
andrew@0 110 double timeOffsetForScreen;
andrew@0 111
andrew@0 112 double recentNoteOnTime;
andrew@0 113
andrew@0 114 void exampleCrossUpdate();
andrew@0 115 BayesianArrayStructure bayesStruct;
andrew@0 116
andrew@3 117 double speedPriorValue;
andrew@5 118 int bestMatchIndex;
andrew@0 119 string timeString;
andrew@0 120 double startTime;
andrew@0 121
andrew@2 122 };
andrew@2 123 #endif