static internal MidiObject MidiObjectFromType (MidiObjectType type, IntPtr handle) { switch (type & (~MidiObjectType.ExternalMask)){ case MidiObjectType.Other: return new MidiObject (handle); case MidiObjectType.Device: return new MidiDevice (handle); case MidiObjectType.Entity: return new MidiEntity (handle); case MidiObjectType.Source: return new MidiEndpoint (handle, false); case MidiObjectType.Destination: return new MidiEndpoint (handle, false); default: throw new Exception ("Unknown MidiObjectType " + (int) type); } }
static internal MidiObject MidiObjectFromType (MidiObjectType type, MidiObjectRef handle) { if (handle == MidiObject.InvalidRef) return null; if (type == MidiObjectType.Other) return new MidiObject (handle, false); switch (type){ case MidiObjectType.ExternalDevice: case MidiObjectType.Device: return new MidiDevice (handle, false); case MidiObjectType.ExternalEntity: case MidiObjectType.Entity: return new MidiEntity (handle, false); case MidiObjectType.ExternalSource: case MidiObjectType.Source: return new MidiEndpoint (handle, false); case MidiObjectType.ExternalDestination: case MidiObjectType.Destination: return new MidiEndpoint (handle, false); default: throw new Exception ("Unknown MidiObjectType " + (int) type); } }
extern static MidiError MIDIObjectFindByUniqueID (int uniqueId, out IntPtr obj, out MidiObjectType objectType);
extern static MidiError /* OSStatus = SInt32 */ MIDIObjectFindByUniqueID (int /* MIDIUniqueID = SInt32 */ uniqueId, out MidiObjectRef obj, out MidiObjectType objectType);