#pragma once #include "ofMain.h" #include "ofxXmlSettings.h" //event times are absolute integer milliseconds class note { public: note(int n,int v,int d=0); int num; int velocity; int duration; //may be needed another time? }; class score { //implements basics of timelime, loading from xml, time, checking public: protected: ofxXmlSettings XML; }; class lyricscore: public score { //draws lyrics to screen for a certain time public: }; class musicscore: public score { //draws notes to screen for a certain time and certain parameters, checks when they become ready //how will it be played dictates how the data is stored //play : start from beginning, schedule event at next delta //end : clean up and start again //you can set position of sound file, it will seek. will we want ffwd at any stage //when it comes to drawing, we will want to repeatedly retrieve notes in a range of times //lower_bound and upper_bound public: void parseMidi(string filename); private: map notes; }; class song { public: song(string backfile,string melfile,string musfile); private: ofSoundPlayer backing; ofSoundPlayer melody; lyricscore lyrics; musicscore notes; int bpm; };