Dieser Artikel erinnert Sie daran, wie Sie MIDI-Dateien mit der Java Sound-API abspielen. Dies ist ein rudimentärer Artikel, der vorerst abgespielt / gestoppt werden kann.
Hier ist der Beispielquellcode. Es ist ein einfaches Programm, dass MIDI abgespielt wird, wenn Sie den Pfad der MIDI-Datei in die Konsoleneingabe eingeben. Wir machen wahnsinnig anwendbare Ausnahmebehandlungen, bitte verzeihen Sie mir. m (__) m
SamplePlayer.java
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import javax.sound.midi.InvalidMidiDataException;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.MidiUnavailableException;
import javax.sound.midi.Sequence;
import javax.sound.midi.Sequencer;
public class SamplePlayer {
public static void main(String[] args) {
//Hardware zur Wiedergabe von MIDI-Daten/Eine Instanz eines Softwaregeräts.
Sequencer sequencer = null;
try {
//Schließen Sie den Standard-Sequenzer an das Gerät an.
sequencer = MidiSystem.getSequencer();
//Öffnen Sie das Gerät und erwerben Sie Ressourcen.
sequencer.open();
}
catch (MidiUnavailableException e) {
e.printStackTrace();
}
//Rufen Sie den Pfad der MIDI-Datei von der Konsoleneingabe ab.
Scanner scanner = new Scanner(System.in);
System.out.print("MIDI-Dateipfad>> ");
String path = scanner.next();
try {
//MIDI-Daten aus der MIDI-Datei(Sequenzobjekt)Erhalten.
File file = new File(path);
Sequence sequence = MidiSystem.getSequence(file);
//Stellen Sie die erfassten MIDI-Daten im Sequenzer ein.
sequencer.setSequence(sequence);
}
catch (InvalidMidiDataException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
//Sequenzer-Wiedergabe
sequencer.start();
//Warten auf Tasteneingabe
System.out.println("Geben Sie die entsprechende Zeichenfolge ein, um den Vorgang abzuschließen.");
System.out.print(">>");
scanner.next();
scanner.close();
//Sequenzer stoppen
sequencer.stop();
//Schließen Sie den Sequenzer und geben Sie die verwendeten Ressourcen frei.
sequencer.close();
}
}
Ruft die für die MIDI-Wiedergabe benötigten Objekte ab. Der folgende Code ruft automatisch das von der API bereitgestellte Standardgerät ab. (Wenn Sie es nur spielen möchten, ist die Standardeinstellung ausreichend.)
** * [1] und [2] lösen "MidiUnavailableException" aus. Behandeln Sie daher unbedingt die Ausnahme. ** **.
Sequencer sequencer = null;
try {
// [1]Schließen Sie den Standard-Sequenzer an das Gerät an.
sequencer = MidiSystem.getSequencer();
// [2]Öffnen Sie das Gerät und erwerben Sie Ressourcen.
sequencer.open();
}
catch (MidiUnavailableException e) {
e.printStackTrace();
}
Holen Sie sich MIDI-Daten aus einer MIDI-Datei. Die erfassten MIDI-Daten werden von einem Objekt namens "Sequence" verwaltet.
Stellen Sie das erfasste Objekt im Sequenzer ein.
** * Wie zuvor lösen [1] und [2] "MidiUnavailableException" aus. Behandeln Sie daher die Ausnahme. ** **.
try {
// [1]MIDI-Daten aus der MIDI-Datei(Sequenzobjekt)Erhalten.
File file = new File(path);
Sequence sequence = MidiSystem.getSequence(file);
// [2]Stellen Sie die erfassten MIDI-Daten im Sequenzer ein.
sequencer.setSequence(sequence);
}
catch (InvalidMidiDataException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
Danach können Sie Play / Stop steuern, indem Sie Play (Start) und Stop (Stop) des Sequenzers aufrufen.
//Sequenzer-Wiedergabe
sequencer.start();
//Sequenzer stoppen
sequencer.stop();
Vergessen Sie nicht, close () am Ende des Programms auszuführen.
sequencer.close();