public List <string> GetDevices()
    {
        List <string> r = new List <string>();

        for (int t = 0; t < midiOutGetNumDevs(); t++)
        {
            MIDIOUTCAPSW ocaps = new MIDIOUTCAPSW();
            midiOutGetDevCapsW(t, ref ocaps, Marshal.SizeOf(ocaps));
            r.Add(string.Format("{0}|{1}", ocaps.wMid, ocaps.szPname));
        }
        return(r);
    }
 private static extern int midiOutGetDevCapsW(int uDeviceID, ref MIDIOUTCAPSW pmoc, int cbmoc);