Beispiel #1
0
        public static void ThrowExceptionForReasonCode(int reasonCode)
        {
            VirtualMIDIException exception = new VirtualMIDIException(reasonCodeToString(reasonCode));

            exception.reasonCode = reasonCode;
            throw exception;
        }
Beispiel #2
0
 public void shutdown()
 {
     if (!virtualMIDIShutdown(fInstance))
     {
         int lastError = Marshal.GetLastWin32Error();
         VirtualMIDIException.ThrowExceptionForReasonCode(lastError);
     }
 }
Beispiel #3
0
        public void sendCommand(byte[] command)
        {
            if ((command == null) || (command.Length == 0))
            {
                return;
            }

            if (!virtualMIDISendData(fInstance, command, (UInt32)command.Length))
            {
                int lastError = Marshal.GetLastWin32Error();
                VirtualMIDIException.ThrowExceptionForReasonCode(lastError);
            }
        }
Beispiel #4
0
        public VirtualMIDI(string portName, UInt32 maxSysexLength, UInt32 flags, ref Guid manufacturer, ref Guid product)
        {
            fInstance = virtualMIDICreatePortEx3(portName, IntPtr.Zero, IntPtr.Zero, maxSysexLength, flags, ref manufacturer, ref product);

            if (fInstance == IntPtr.Zero)
            {
                int lastError = Marshal.GetLastWin32Error();
                VirtualMIDIException.ThrowExceptionForReasonCode(lastError);
            }

            fReadBuffer     = new byte[maxSysexLength];
            fReadProcessIds = new UInt64[17];
            fMaxSysexLength = maxSysexLength;
        }
Beispiel #5
0
        public VirtualMIDI(string portName, UInt32 maxSysexLength = TE_VM_DEFAULT_SYSEX_SIZE, UInt32 flags = TE_VM_FLAGS_PARSE_RX)
        {
            fInstance = virtualMIDICreatePortEx2(portName, IntPtr.Zero, IntPtr.Zero, maxSysexLength, flags);

            if (fInstance == IntPtr.Zero)
            {
                int lastError = Marshal.GetLastWin32Error();
                VirtualMIDIException.ThrowExceptionForReasonCode(lastError);
            }

            fReadBuffer     = new byte[maxSysexLength];
            fReadProcessIds = new UInt64[17];
            fMaxSysexLength = maxSysexLength;
        }
Beispiel #6
0
        public UInt64[] getProcessIds()
        {
            UInt32 length = 17 * sizeof(ulong);
            UInt32 count;

            if (!virtualMIDIGetProcesses(fInstance, fReadProcessIds, ref length))
            {
                int lastError = Marshal.GetLastWin32Error();
                VirtualMIDIException.ThrowExceptionForReasonCode(lastError);
            }

            count = length / sizeof(ulong);
            UInt64[] outIds = new UInt64[count];
            Array.Copy(fReadProcessIds, outIds, count);
            return(outIds);
        }
Beispiel #7
0
        public byte[] getCommand()
        {
            UInt32 length = fMaxSysexLength;

            if (!virtualMIDIGetData(fInstance, fReadBuffer, ref length))
            {
                int lastError = Marshal.GetLastWin32Error();
                VirtualMIDIException.ThrowExceptionForReasonCode(lastError);
            }

            byte[] outBytes = new byte[length];

            Array.Copy(fReadBuffer, outBytes, length);

            return(outBytes);
        }