import javax.swing.*;
import java.io.*;
-/* UPDATES
- Killed superfluous exportMIDI method.
- Added public static void quit()
- Removed Sequence seq property.
- Changed forward(int measures) and rewind(int measures) to forward(long ticks) and rewind(long ticks).
- Added public static long getPosition()
- Added public static void setPosition(long ticks)
- Added public static void resume()
-*/
-
/*
* Moosique - The MIDI Tracker
*
* Starts the application.
*/
public static void main (String[] args) {
- System.out.println("Moosique version 1.0");
+ System.out.println("\nMoosique version 1.0\n");
// Acquires MIDI devices and connects them.
+ System.out.print("Initializing MIDI devices.");
try {
sequencer = MidiSystem.getSequencer();
+ System.out.print(".");
sequencer.open();
+ System.out.print(".");
synthesizer = MidiSystem.getSynthesizer();
+ System.out.print(".");
synthesizer.open();
+ System.out.print(".");
sequencer.getTransmitter().setReceiver(synthesizer.getReceiver());
} catch (MidiUnavailableException e) {
- System.out.println("Unable to initialize MIDI devices.");
+ System.out.println("Failed, quitting.");
quit();
}
+ System.out.println("Done");
//If a filename is given as the command-line argument, attempts to load a sequence from the file.
- try {
- if (args.length == 1) {
- if (!load(args[0])) seq = new Sequence(Sequence.PPQ, 96);
- } else {
- // Otherwise creates a new empty one.
- seq = new Sequence(Sequence.PPQ, 96);
- }
- } catch (InvalidMidiDataException e) {}
+ System.out.print("Loading MIDI sequence...");
+ if (args.length == 1) {
+ if (!load(args[0])) clearSequence();
+ } else {
+ // Otherwise creates a new empty one.
+ clearSequence();
+ }
+ System.out.println("Done");
// Sets up channels and GUI.
+ System.out.print("Creating GUI...");
channels = synthesizer.getChannels();
- gui = new MooGUI();
+ gui = new MooGUI(seq);
+ System.out.println("Done");
}
/*
return seq;
}
+ /*
+ * Returns a pointer to the current sequence.
+ * @return the current sequence
+ */
+ public static void clearSequence() {
+ // Creates sequence.
+ try {
+ seq = new Sequence(Sequence.PPQ, 96);
+ } catch (InvalidMidiDataException e) {}
+ // Sends sequence to GUI.
+ if (gui != null) gui.setSequence(seq);
+
+ }
+
/*
* Starts playback of the current sequence.
*/
public static void play() {
try {
sequencer.setSequence(seq);
+ sequencer.setTickPosition(position);
} catch (InvalidMidiDataException e) {}
- sequencer.setTickPosition(position);
sequencer.start();
}
}
// Sends sequence to GUI
- gui.setSequence(seq);
+ if (gui != null) gui.setSequence(seq);
// Searches the sequence for NoteOn events
Track[] tracks = seq.getTracks();