internal async Task InitializeAsync() { var completionSource = new TaskCompletionSource <MidiDevice>(); using (var deviceOpenListener = new MidiDeviceOpenedListener(completionSource)) { _midiManager.OpenDevice(_deviceInfo, deviceOpenListener, null); _midiDevice = await completionSource.Task; // This is not a bug, Android uses "output" for input. _midiPort = _midiDevice.OpenOutputPort(_portInfo.PortNumber); } }