private static MidiChannel[] channels;
private static MidiChannel activeChannel;
private static MidiEvent[] timeSignatures, tempoChanges;
+ private static ArrayList emptyTracks;
private static String filename, fileArg;
private static long editPosition;
// Disables input to volatile components
// gui.disable();
- // Creates the visualization thread and starts it.
+ // Creates the visualisation thread and starts it.
player = new Thread () {
public void run() {
+ long ticksPerSixteenth = seq.getResolution()/4;
+ System.out.println("Ticks/16: " + ticksPerSixteenth);
+ long position = sequencer.getTickPosition();
while(sequencer.isRunning()) {
+ long pos = sequencer.getTickPosition();
+ long tickDiff = pos - position;
+ System.out.print(" ... " + tickDiff);
+ position = pos;
+
// Updates the GUI with the current tick position.
gui.update(sequencer.getTickPosition());
// Puts the thread to sleep for as long as it takes
// the sequencer to reach the next sixteenth.
try {
- sleep((long)((1000 * 60 * 1) / (getTempo() * 4)));
+ sleep((long)((15000 / getTempo()) * (tickDiff / ticksPerSixteenth)));
} catch (InterruptedException e) {
Moosique.stop();
}
* Returns the current editing position of the sequencer.
* @return the tick position
*/
- public static long getPosition() {
+ public static long getEditPosition() {
return editPosition;
}
* Sets the current editing position of the sequencer.
* @param ticks the tick position
*/
- public static void setPosition(long ticks) {
+ public static void setEditPosition(long ticks) {
editPosition = ticks;
}
isEdited = false;
Track[] tracks = seq.getTracks();
+ emptyTracks = new ArrayList();
// Searches track 0 for changes in tempo and time signature.
MidiEvent event;
}
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 not be removed.";
+ System.out.println(text);
+ emptyTracks.add(tracks[i]);
// Sorts the note lists by tick position.
Comparator c = new Comparator() {