andrew@24: #ifndef _TEST_APP andrew@24: #define _TEST_APP andrew@24: andrew@24: andrew@24: //midieventholder - newMidiEvents() sent there andrew@24: //create cannamMidiLoader for cannamMainfunction andrew@24: andrew@24: andrew@24: //check new prior offset function - how is used? andrew@24: andrew@24: andrew@24: andrew@24: //check the widening function - adding decay noise andrew@24: //ticksperscreen could be better as millis per screen andrew@24: andrew@24: andrew@24: andrew@24: //uses ftmMidiPlay in max5 via osc to communicate notes in andrew@24: andrew@24: #include "ofMain.h" andrew@24: andrew@24: #include "MIDIFileReader.h" andrew@24: #include "ofxFileDialogOSX.h" andrew@24: #include "drawMidiNotes.h" andrew@24: #include "DynamicBayesianArray.h" andrew@24: #include "CannamMidiFileLoader.h" andrew@24: #include andrew@24: #include "midiEventHolder.h" andrew@24: #include "ofxMidiIn.h" andrew@24: #include "ofxOsc.h" andrew@24: #include "MidiInputStream.h" andrew@27: #include "ofxArgs.h" andrew@24: andrew@24: #define PORT 12121 andrew@25: #define SEND_PORT 5282 andrew@25: #define HOST "localhost" andrew@25: andrew@24: andrew@24: using namespace std; andrew@24: using namespace MIDIConstants; andrew@24: andrew@24: class testApp : public ofBaseApp{ andrew@27: private: andrew@27: ofxArgs* args; andrew@27: string option1, option2; andrew@27: bool flag1; andrew@27: ofxOscReceiver receiver; andrew@27: ofxOscSender sender; andrew@27: andrew@27: public: andrew@27: testApp(ofxArgs* args); andrew@24: andrew@24: void setup(); andrew@24: void update(); andrew@24: void draw(); andrew@24: andrew@24: void keyPressed (int key); andrew@24: void keyReleased(int key); andrew@24: void mouseMoved(int x, int y ); andrew@24: void mouseDragged(int x, int y, int button); andrew@24: void mousePressed(int x, int y, int button); andrew@24: void mouseReleased(int x, int y, int button); andrew@24: void windowResized(int w, int h); andrew@24: andrew@24: void startPlaying(); andrew@24: void stopPlaying(); andrew@24: bool getFilenameFromDialogBox(string* fileNameToSave); andrew@24: andrew@24: typedef std::vector IntVector; andrew@24: typedef std::vector DoubleVector; andrew@24: // typedef std::vector IntMatrix; andrew@24: IntVector v; andrew@24: andrew@24: midiEventHolder midiEvents; andrew@24: andrew@24: int cannamMainFunction(); andrew@24: string midiFileName; andrew@27: std::string museScoreFilename; andrew@27: andrew@24: bool playing; andrew@24: //drawMidiNotes drawer; andrew@24: andrew@24: // BayesianArrayStructure bayesStruct; andrew@24: andrew@24: int screenWidth, screenHeight; andrew@24: CannamMidiFileLoader fileLoader; andrew@24: andrew@24: //MIDI INPUT andrew@24: // vars andrew@24: int port; andrew@24: int id; andrew@24: int value; andrew@24: double timestamp; andrew@24: char msg[255]; andrew@24: string portName; andrew@24: andrew@25: void checkNewScoreNote(); andrew@25: void sendNoteToMuseScore(); andrew@25: void sendMeasureToMuseScore(); andrew@26: void sendBlackNotes(); andrew@25: void findMeasure(); andrew@26: andrew@24: // midi addon andrew@24: ofxMidiIn midiIn; andrew@24: // this is your listener function andrew@24: void newMessage(ofxMidiEventArgs &args); andrew@24: andrew@24: MidiInputStream noteInStream; andrew@24: andrew@24: double firstNoteTime; andrew@24: bool liveInputPlaying; andrew@24: double timePlayed; andrew@24: int transpose; andrew@25: int lastScoreIndexSent; andrew@25: int lastMeasureSent; andrew@26: double performanceRating; andrew@27: void sendNoteDataByOsc(const int& pitch, const int& ticks); andrew@24: andrew@27: ofTrueTypeFont verdana30; andrew@27: int midiPort; andrew@27: std::string midiPortName; andrew@30: void loadRecordedMidiFile(); andrew@24: andrew@30: bool readyToStart; andrew@30: void prepareToStartOnNextNote(); andrew@24: }; andrew@24: andrew@24: #endif