try {
seq = new Sequence(Sequence.PPQ, DEFAULT_RESOLUTION, DEFAULT_TRACKS);
sequencer.setSequence(seq);
+ emptyTracks = new ArrayList();
} catch (InvalidMidiDataException e) {}
// Sends sequence to GUI.
if (gui != null) gui.setSequence(seq);
// Puts the thread to sleep for as long as it takes
// the sequencer to reach the next sixteenth.
try {
- sleep((long)((15000 / getTempo()) * (tickDiff / ticksPerSixteenth)));
+ //sleep((long)((15000 / getTempo()) * (tickDiff / ticksPerSixteenth)));
+ sleep (10);
} catch (InterruptedException e) {
Moosique.stop();
}
}
/**
- * Shows the given message in the status bar.
- * @param text the message to show
+ * Returns whether the given track should be drawn
+ * @return true if the given track should be drawn
*/
public static boolean shouldBeDrawn(Track track) {
if (drawEmptyTracks) return true;
/**
- * Shows the given message in the status bar.
- * @param text the message to show
+ * Sets whether empty tracks should be drawn
+ * @param state true if empty tracks should be drawn
*/
public static void setDrawEmptyTracks(boolean state) {
drawEmptyTracks = state;
}
noteOns.trimToSize();
noteOffs.trimToSize();
- boolean isEmpty = (noteOns.size() == 0);
- String text = "Track " + i + " has " + noteOns.size() + "/" + noteOffs.size() + "/" + tracks[i].size();
- if (isEmpty) {
- text += " and will be removed.";
- emptyTracks.add(tracks[i]);
- }
- System.out.println(text);
+ if (noteOns.size() == 0) emptyTracks.add(tracks[i]);
// Sorts the note lists by tick position.
Comparator c = new Comparator() {
}
}
- /*
- Collections.sort(track[i].events, new Comparator() {
- public int compare(Object o1, Object o2) {
- return ((MidiEvent)o2).getTick() - ((MidiEvent)o1).getTick();
- }
- });
-
- // Searches the sequence for NoteOn events
- MidiEvent noteOn, noteOff = null, nextEvent;
- MidiMessage nextMsg;
- ShortMessage shortMsg;
-
- for (int i = 0; i < tracks.length; i++) {
- for (int j = 0; j < tracks[i].size(); j++) {
- noteOn = tracks[i].get(j);
- if (noteOn.getMessage().getStatus() == ShortMessage.NOTE_ON) {
- // Finds the corresponding NoteOff event
- for (int k = j + 1; k < tracks[i].size(); k++) {
- nextEvent = tracks[i].get(k);
- nextMsg = nextEvent.getMessage();
- if (nextMsg instanceof ShortMessage) {
- shortMsg = (ShortMessage) nextMsg;
- if (shortMsg.getCommand() == ShortMessage.NOTE_OFF && shortMsg.getChannel() == ((ShortMessage)noteOn.getMessage()).getChannel() && shortMsg.getData1() == ((ShortMessage)noteOn.getMessage()).getData1()) {
- noteOff = nextEvent;
- break;
- }
- }
- }
- // Replaces the NoteOn event with a MooNote, if possible with the corresponding NoteOff event
- tracks[i].remove(noteOn);
- if (noteOff != null) {
- tracks[i].add(new MooNote(noteOn, noteOff));
- } else {
- tracks[i].add(new MooNote(noteOn));
- }
- }
- }
- }
-*/
// Sends sequence to GUI and sequencer, then returns
if (gui != null) gui.setSequence(seq);
try {