Ich habe meinen eigenen Synthesizer in Java entworfen und möchte ihn jetzt mit einer Midi-Tastatur verbinden. Meine Klasse unten durchsucht alle Midi-Geräte mit Sendern. Es findet erfolgreich meine MIDI-Tastatur. Ich füge jedem Sender für jedes Gerät eigene Empfänger hinzu, damit es alles Mögliche aufnehmen kann. Beim Lesen aller Hilfedokumente und des Java-Dokuments weiß ich, dass ein Sender MidiEvents an einen Empfänger sendet, der sie dann mit der Sendemethode behandelt. Also habe ich meine eigene innere Klasse geschrieben, die Receiver implementiert und einfach eine println-Anweisung verwendet, um zu überprüfen, ob überhaupt etwas in der send-Methode gefunden wurde. Nichts wird jedoch aufgenommen. Es scheint sehr wenig Hilfe zu geben, um so eine einfache Sache zu machen und ich habe jede Hilfe-Datei, Javadoc und Forum angeschaut. Ich bin mir sicher, dass es etwas ganz Offensichtliches sein muss, das ich irgendwie vermisst habe.
Mein Synthesizer sollte nicht mit dem Interface-Synthesizer verwechselt werden und es ist kein Midi-Instrument. Es verwendet einen Synthesealgorithmus und verfügt über eine Wiedergabemethode. Im Grunde muss ich nur die Midi-Tastatur erhalten, die eine Note für ein Event sendet, wodurch die Wiedergabemethode aufgerufen wird.
%Vor%HINWEIS: Ich habe das schon gesehen: Java MIDI - Daten von Piano holen? .
und das: Ссылка
Interface Sequencer sah viel zu kompliziert für das, was ich auch will.
Ich habe festgestellt, dass das MidiDevice getTransmitter () scheinbar die Liste der bereits bereits geöffneten Sender zurückgibt, nicht Sender, die verfügbar zum Öffnen sind. Ich glaube, dass der Weg, einen neuen Sender zu öffnen, über die Methode getTransmitter () erfolgt. Ich habe Ihren Code geändert, um dies zu tun:
%Vor%Auf meiner Hardware (ich habe einen einfachen USB-MIDI-Controller angeschlossen), druckt der Code korrekt "Midi empfangen", nachdem eine Instanz von MidiHandler erstellt wurde.
Hoffe, das hilft!