Cet article rappelle comment lire des fichiers MIDI à l'aide de l'API Java Sound. Il s'agit d'un article rudimentaire qui peut être lu / arrêté pour le moment.
Voici l'exemple de code source. C'est un programme simple que le MIDI est joué lorsque vous entrez le chemin du fichier MIDI avec l'entrée de la console. Nous faisons une gestion des exceptions incroyablement applicable, alors veuillez me pardonner. 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) {
//Matériel pour lire les données MIDI/Une instance d'un périphérique logiciel.
Sequencer sequencer = null;
try {
//Obtenez le séquenceur par défaut connecté à l'appareil.
sequencer = MidiSystem.getSequencer();
//Ouvrez l'appareil et acquérez des ressources.
sequencer.open();
}
catch (MidiUnavailableException e) {
e.printStackTrace();
}
//Obtenez le chemin du fichier MIDI à partir de l'entrée de la console.
Scanner scanner = new Scanner(System.in);
System.out.print("Chemin du fichier MIDI>> ");
String path = scanner.next();
try {
//Données MIDI d'un fichier MIDI(Objet de séquence)Avoir.
File file = new File(path);
Sequence sequence = MidiSystem.getSequence(file);
//Définissez les données MIDI acquises dans le séquenceur.
sequencer.setSequence(sequence);
}
catch (InvalidMidiDataException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
//Lecture du séquenceur
sequencer.start();
//En attente de la saisie de la clé
System.out.println("Entrez la chaîne de caractères appropriée pour terminer.");
System.out.print(">>");
scanner.next();
scanner.close();
//Arrêt du séquenceur
sequencer.stop();
//Fermez le séquenceur et libérez les ressources que vous utilisiez.
sequencer.close();
}
}
Obtient les objets nécessaires à la lecture MIDI. Le code ci-dessous obtiendra automatiquement l'appareil par défaut fourni par l'API. (Si vous voulez juste le jouer, la valeur par défaut est suffisante.)
** * [1] et [2] lancent "MidiUnavailableException", assurez-vous donc de gérer l'exception. ** **
Sequencer sequencer = null;
try {
// [1]Obtenez le séquenceur par défaut connecté à l'appareil.
sequencer = MidiSystem.getSequencer();
// [2]Ouvrez l'appareil et acquérez des ressources.
sequencer.open();
}
catch (MidiUnavailableException e) {
e.printStackTrace();
}
Obtenez des données MIDI à partir d'un fichier MIDI. Les données MIDI acquises sont gérées par un objet appelé "Sequence".
Définissez l'objet acquis dans le séquenceur.
** * Comme précédemment, [1] et [2] lancent "MidiUnavailableException", assurez-vous donc de gérer l'exception. ** **
try {
// [1]Données MIDI d'un fichier MIDI(Objet de séquence)Avoir.
File file = new File(path);
Sequence sequence = MidiSystem.getSequence(file);
// [2]Définissez les données MIDI acquises dans le séquenceur.
sequencer.setSequence(sequence);
}
catch (InvalidMidiDataException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
Après cela, vous pouvez contrôler la lecture / l'arrêt en appelant play (start) et stop (stop) du séquenceur.
//Lecture du séquenceur
sequencer.start();
//Arrêt du séquenceur
sequencer.stop();
Veillez à ne pas oublier d'exécuter close () à la fin du programme.
sequencer.close();