view hackday/testApp.h @ 26:179365726f07

live input, calculates score rating
author Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk>
date Sun, 04 Dec 2011 00:02:26 +0000
parents 2a025ea7c793
children fa1890efa044
line wrap: on
line source
#ifndef _TEST_APP
#define _TEST_APP


//midieventholder - newMidiEvents() sent there
//create cannamMidiLoader for cannamMainfunction


//check new prior offset function - how is used?



//check the widening function - adding decay noise
//ticksperscreen could be better as millis per screen



//uses ftmMidiPlay in max5 via osc to communicate notes in

#include "ofMain.h"

#include "MIDIFileReader.h"
#include "ofxFileDialogOSX.h"
#include "drawMidiNotes.h"
#include "DynamicBayesianArray.h"
#include "CannamMidiFileLoader.h"
#include <iostream>
#include "midiEventHolder.h"
#include "ofxMidiIn.h"
#include "ofxOsc.h"
#include "MidiInputStream.h"


#define PORT 12121
#define SEND_PORT 5282
#define HOST "localhost"


using namespace std;
using namespace MIDIConstants;

class testApp : public ofBaseApp{

	public:
		void setup();
		void update();
		void draw();

		void keyPressed  (int key);
		void keyReleased(int key);
		void mouseMoved(int x, int y );
		void mouseDragged(int x, int y, int button);
		void mousePressed(int x, int y, int button);
		void mouseReleased(int x, int y, int button);
		void windowResized(int w, int h);

	void startPlaying();
	void stopPlaying();
	bool getFilenameFromDialogBox(string* fileNameToSave);

	typedef std::vector<int> IntVector;
	typedef std::vector<double> DoubleVector;
//	typedef std::vector<IntVector> IntMatrix;	
	IntVector v;

	midiEventHolder midiEvents;
	
	int cannamMainFunction();
	string midiFileName;

	bool playing;
	//drawMidiNotes drawer;
	
//	BayesianArrayStructure bayesStruct;
	
	int screenWidth, screenHeight;
	CannamMidiFileLoader fileLoader;

	//MIDI INPUT
	// vars
	int port;
	int id;
	int value;
	double timestamp;
	char msg[255];
	string portName;
	
	void checkNewScoreNote();
	void sendNoteToMuseScore();
	void sendMeasureToMuseScore();
	void sendBlackNotes();
	void findMeasure();
	
	// midi addon
	ofxMidiIn	midiIn;
	// this is your listener function
	void newMessage(ofxMidiEventArgs &args);
	
	MidiInputStream noteInStream;

	double firstNoteTime;
	bool liveInputPlaying;
	double timePlayed;	
	int transpose;
	int lastScoreIndexSent;
	int lastMeasureSent;
	double performanceRating;
private:
	ofxOscReceiver	receiver;
	ofxOscSender	sender;

	
};

#endif