10/22/02 Meeting Notes
ok we decided on sourceforge.net to host our project as, pat aggreed to take the initiative to sign us up and get us a password, all our documentation and source files will be stored up securely over the web. Also sourceforge will have a prototype GUI image, a jpg of what the program might end up looking at, this will give us all a better idea on the product that we are developing.
so basically since the system requirements have been pretty much spelled out, at least in a bare bones sense, perhaps more optional features and attributes could be specified now, but i think its more important to get into real design and code. the next major deliverable that we create is the class diagram. In our meeting today we decided on a basic 4 class design.
:-: Front End :-:
GUI Class: The GUI will be its own seperate class, it wont contain any of the loop data, but will interface with the other classes to support the users actions in real time. It will need to interact with the playback class and the loop class.
Playback Class: This class will handle the start and stop functionality of the GUI program. It will need to interact with the GUI Class when the user clicks no a playback button. Also it serves as an interface to the backend as it will read the Midi object. Some care must be done with the playback class as it will control the channels and perhaps choose not to play all the data in the Midi Object depending on track settings such as solo or mute tracks.
:-: Back End :-:
Loop Class: The Loop Class contains all the attributes of the loop and method to modify them. There is allowed multiple Loop Objects. In our intitial implementation however we are only going to have 1 drum object, but eventually in the future we want to support multiple, overlapping loops so lets keep that design precept in mind. The Loop class will interact with the GUI, as the GUI will pass in data as the loop is manipulated by the user. Of most importance in the Loop class will be a method to generate the midi data that is stored in the Midi object.
Midi Class: The Midi Class will contain the midi data in its raw-form. This will involve taking the passed in data from the Loop Class and somehow interfacing with the javax.sound.midi package. The Midi object will need an easy way to get at its data as it might be called directly from the GUI in file save/open scenerios. also during playback the data must be optimized so that the playback object can quickly start and stop the music output.