send method

dynamic send(
  1. Uint8List data
)

Implementation

send(Uint8List data) async {
  if (_outs.isEmpty ||
      _disconnecting ||
      _midiOutHandle == 0 ||
      _midiOutBuffer == nullptr ||
      _midiOutHeader == nullptr) {
    return;
  }

  // Set data in out buffer
  _midiOutBuffer.asTypedList(data.length).setAll(0, data);
  _midiOutHeader.ref.lpData = PSTR(_midiOutBuffer.cast());
  _midiOutHeader.ref.dwBytesRecorded =
      _midiOutHeader.ref.dwBufferLength = data.length;
  _midiOutHeader.ref.dwFlags = 0;

  int result = midiOutPrepareHeader(
    _hMidiOut,
    _midiOutHeader,
    sizeOf<MIDIHDR>(),
  );
  if (result != 0) {
    debugPrint("HDR OUT PREP ERROR: ${midiErrorMessage(result)}");
  }

  result = midiOutLongMsg(_hMidiOut, _midiOutHeader, sizeOf<MIDIHDR>());
  if (result != 0) {
    debugPrint("SEND ERROR($result): ${midiErrorMessage(result)}");
  }

  result = midiOutUnprepareHeader(
    _hMidiOut,
    _midiOutHeader,
    sizeOf<MIDIHDR>(),
  );
  if (result != 0) {
    debugPrint("OUT UNPREPARE ERROR($result): ${midiErrorMessage(result)}");
  }
}