IntPtr GetPortName(Wrapper *device, uint portNumber);
void ClosePort(Wrapper *device);
uint GetPortCount(Wrapper *device);
void OpenPort(Wrapper *device, uint portNumber, string portName);
void OpenVirtualPort(Wrapper *device, string portName);
Api OutGetCurrentApi(Wrapper *device);
int OutSendMessage(Wrapper *device, byte *message, int length);
void OutFree(Wrapper *device);
double InGetMessage(Wrapper *device, byte *message, ref ulong size);
void InIgnoreTypes( Wrapper *device, [MarshalAs(UnmanagedType.U1)] bool midiSysex, [MarshalAs(UnmanagedType.U1)] bool midiTime, [MarshalAs(UnmanagedType.U1)] bool midiSense );
Api InGetCurrentApi(Wrapper *device);
void InFree(Wrapper *device);