So spielen Sie eine MIDI-Datei mit der Java Sound API ab

Einführung

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.

Beispielcode

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();
	}
}

Kommentar

Bereiten Sie einen Sequenzer vor

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();
	}

MIDI-Datei lesen

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();
	}


MIDI Play / Stop

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();

Geben Sie die Systemressourcen frei

Vergessen Sie nicht, close () am Ende des Programms auszuführen.

	sequencer.close();

Recommended Posts

So spielen Sie eine MIDI-Datei mit der Java Sound API ab
So spielen Sie eine MIDI-Datei mit der Java Sound API ab (geben Sie das zu verwendende MIDI-Gerät an)
So zerlegen Sie eine Java-Klassendatei
So dekompilieren Sie eine Java-Klassendatei
[Java] Verwendung der File-Klasse
Versuchen Sie es mit der Stream-API in Java
[Java] So berechnen Sie das Alter mit LocalDate
[Java] Verwendung der toString () -Methode
Studieren der Verwendung des Konstruktors (Java)
[Verarbeitung × Java] Verwendung der Schleife
[Java] Wie man Dateien ausgibt und schreibt!
[Java] So erhalten Sie das aktuelle Verzeichnis
[Verarbeitung × Java] Verwendung der Klasse
So erhalten Sie das Datum mit Java
[Java] Verwendung der Calendar-Klasse
[Java] Wie man mit der String-Klasse an die Spitze eines bestimmten Strings kommt
ChatWork4j für die Verwendung der ChatWork-API in Java
Wie man Stimme oder Musik mit Javascript spielt
So implementieren Sie die Brotkrumenfunktion mit gretel
Verwendung der Java-API mit Lambda-Ausdrücken
[Java] (für MacOS) Methode zur Einstellung des Klassenpfads
Verwendung der replace () -Methode (Java Silver)
[Java] So erhalten Sie die endgültige umgeleitete URL
Versuchen Sie es mit der Syntaxanalyse der COTOHA-API in Java
[Java] Memo zum Schreiben der Quelle
[Java] So erhalten Sie mithilfe von Stream auf einfache Weise die längste Zeichenfolge von ArrayList
So legen Sie fest, dass Tabulatoren und Leerzeichen sichtbar sind, indem Sie mit der Tabulatortaste Leerzeichen in Java-Dateien in Eclipse einfügen
[Java] So erhalten Sie die URL der Übergangsquelle
[Java] So lassen Sie den privaten Konstruktor in Lombok weg
Wie schreibe ich Scala aus der Perspektive von Java
Wie kann ich IBM Mainframe-Dateien in Java eingeben / ausgeben?
[Java] Wie man aus Janken rauskommt (entspricht Paiza Rang A)
[Java] So extrahieren Sie den Dateinamen aus dem Pfad
[Für Anfänger] So bedienen Sie die Stream-API nach Java 8
[Android Studio] [Java] So fixieren Sie den Bildschirm vertikal
Zusammenfassung der Java-Kommunikations-API (1) Verwendung von Socket
Zusammenfassung der Java-Kommunikations-API (3) Verwendung von SocketChannel
So konvertieren Sie A in a und a in A mit logischem Produkt und Summe in Java
So verwenden Sie Play Framework ohne typsicheren Aktivator
Zusammenfassung der Java-Kommunikations-API (2) Verwendung von HttpUrlConnection
So erhalten Sie den Klassennamen des Arguments von LoggerFactory.getLogger, wenn Sie SLF4J in Java verwenden
Verwendung von Maven zum Platzieren von Ressourcendateien außerhalb von JAR
Verwendung der Ketten-API
So senken Sie die Java-Version
[Java] Verwendung von Map
So deinstallieren Sie Java 8 (Mac)
Java zum Spielen mit Function
Java - So erstellen Sie JTable
[Ein Muss für einen Java-Ingenieurlehrling] Verwendung der Stream-API
Unterschied zwischen Java und JavaScript (wie man den Durchschnitt findet)
Verwendung von Java Optional
So minimieren Sie Java-Images
Wie schreibe ich einen Java-Kommentar