# MIDIdevice open funktioniert nicht



## dolliman (28. Jan 2021)

Hi, ich habe eine Fehlermeldung beim öffnen einer MIDI device.
Der unten stehende Code bringt mir eine 
java.lang.reflect.InvocationTargetException [...]
Caused by: javax.sound.midi.MidiUnavailableException: MIDI IN receiver not available

Ab Zeile 13 durchsuche ich das Array MidiDevice.Info[] nach einem String den ich in midioutini übergeben habe.
Die Suche ist erfolgreich und ich lande wie geplant in Zeile 23. Zeile 27verursacht dann den Fehler.
Was ich nicht verstehe, ist, dass ich, wenn ich die Kommentarstriche in Zeile 23 entferne, also dem expliziten Zuweisen einer MidiDevice keine Fehlermeldung erhalte.
Ich verstehe nicht den Unterschied, zwischen der Zuweisung in Zeile 15, wo i denselben Index liefert wie der, den ich in Zeile 23 als Zahl zuweise.
Auch nach der Zuweisung in Zeile 15 habe ich nochmal den String der MidiDivice von infos[5] und infos_ mit i=5 verglichen. Sie sind identisch.
Könnt Ihr mir auf die Sprünge helfen? Wo liegt hier mein Denkfehler?
Danke Euch!
Lars


[CODE lang="java" title="MIDI" highlight="15, 31"]//Attribute in der Main class
MidiDevice device;
MidiDevice.Info[] infos = MidiSystem.getMidiDeviceInfo();
MidiDevice.Info actualInfo;
Scanner input = new Scanner(System.in);

[...]


public boolean openMIDI(String midioutini, Stage primaryStage)
            throws InvalidMidiDataException, MidiUnavailableException {
        boolean midifound = false;
        for (int i = 0; i < infos.length; i++) {
            if (infos.toString().equals(midioutini)) {
                actualInfo = infos;
                System.out.println("actual info in schleife: " + infos);
                midifound = true;
            }
        }
        if (midifound == false) {
            [...]
        } else {
            //actualInfo = infos[5];
            System.out.println("Try to open MIDI device: " + actualInfo);
            device = MidiSystem.getMidiDevice(actualInfo);
            rcvr = device.getReceiver();
            device.open();
            System.out.println("Device opened: '" + actualInfo.toString() + "'");

        }
        return midifound;
    }[/CODE]_


----------



## dolliman (29. Jan 2021)

Ich habe den Fehler nun endlich selbst gefunden...
Falls mal jemand ähnlich auf dem Schlauch steht: Der MIDI-in Port hat denselben Namen wie der MIDI-out Port, sodass in meiner Suche immer erst der richtige und danach noch der falschen Port zugewiesen wurde. Ich muss vor der der Zuweisung noch prüfen, ob es sich auch wirklich um einen MIDI-out Port handelt.


----------

