+
+ // Finds track name and program change
+ MidiMessage msg;
+ for (int i = 0; i < track.size(); i++) {
+ msg = track.get(i).getMessage();
+ if (msg.getStatus() == 255) {
+ if (((MetaMessage)msg).getType() == 3) {
+ trackNameMessage = (MetaMessage)msg;
+ trackName = new String(trackNameMessage.getData());
+ }
+ } else if (msg.getStatus() == 192) {
+ programChangeMessage = (ShortMessage)msg;
+ programChange = programChangeMessage.getData1();
+ }
+ }
+
+ MidiEvent event;
+ for (int i = 0; i < track.size(); i++) {
+ event = track.get(i);
+ if (event instanceof MooNote) channel = ((MooNote)event).getChannel();
+ }
+
+ // Creates and places components.