Java erhält die Eingabe von der MIDI-Tastatur

8

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.

    
Jonathan 04.08.2011, 07:35
quelle

2 Antworten

12

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!

    
sjlevine29 28.08.2011, 04:45
quelle
2

Ich habe festgestellt, dass Sie das Gerät öffnen müssen, bevor Sie setRecceiver () aufrufen, andernfalls wird die send () -Methode des Empfängers mit allen ungültigen MIDI-Daten aus dem letzten Aufruf der Anwendung aufgerufen.

%Vor%     
Robert 18.03.2015 14:15
quelle

Tags und Links