public static MidiThruConnection[] Find(string persistentOwnerID, out MidiError error) { if (persistentOwnerID == null) { throw new ArgumentNullException(nameof(persistentOwnerID)); } IntPtr ret; using (var nssstr = new NSString(persistentOwnerID)) { error = MIDIThruConnectionFind(nssstr.Handle, out ret); } using (var data = Runtime.GetNSObject <NSData> (ret)) { var typeSize = Marshal.SizeOf(typeof(MidiThruConnectionRef)); var totalObjs = (int)data.Length / typeSize; if (totalObjs == 0) { return(null); } var basePtr = data.Bytes.ToInt32(); var connections = new MidiThruConnection[totalObjs]; for (int i = 0; i < totalObjs; i++) { connections[i] = new MidiThruConnection((uint)(basePtr + i * typeSize)); } return(connections); } }
public MidiEndpoint CreateVirtualSource(string name, out MidiError statusCode) { IntPtr ptr; statusCode = (MidiError)CoreMidiInterop.MIDISourceCreate(Handle, Midi.ToCFStringRef(name), out ptr); return(statusCode == MidiError.Ok ? new MidiEndpoint(ptr, name, true, null) : null); }
public MidiEndpoint CreateVirtualDestination(string name, out MidiError statusCode) { IntPtr ptr; var d = new ReadDispatcher(); statusCode = (MidiError)CoreMidiInterop.MIDIDestinationCreate(Handle, Midi.ToCFStringRef(name), d.DispatchProc, IntPtr.Zero, out ptr); return(statusCode == MidiError.Ok ? new MidiEndpoint(ptr, name, true, d) : null); }
public static MidiThruConnection Create(string persistentOwnerID, MidiThruConnectionParams connectionParams, out MidiError error) { MidiThruConnectionRef ret; using (var data = connectionParams.WriteStruct ()) { var retStr = NSString.CreateNative (persistentOwnerID); error = MIDIThruConnectionCreate (retStr, data.Handle, out ret); NSString.ReleaseNative (retStr); } if (error != MidiError.Ok) return null; return new MidiThruConnection (ret); }
public static MidiThruConnection[]? Find(string persistentOwnerID, out MidiError error) { if (persistentOwnerID is null) { throw new ArgumentNullException(nameof(persistentOwnerID)); } IntPtr ret; var persistentOwnerIDHandle = CFString.CreateNative(persistentOwnerID); try { error = MIDIThruConnectionFind(persistentOwnerIDHandle, out ret); } finally { CFString.ReleaseNative(persistentOwnerIDHandle); } using (var data = Runtime.GetNSObject <NSData> (ret)) { if (data is null) { return(null); } var typeSize = Marshal.SizeOf(typeof(MidiThruConnectionRef)); var totalObjs = (int)data.Length / typeSize; if (totalObjs == 0) { return(null); } var connections = new MidiThruConnection[totalObjs]; unsafe { uint *handles = (uint *)(IntPtr)data.Bytes; for (int i = 0; i < totalObjs; i++) { connections [i] = new MidiThruConnection(handles [i]); } } return(connections); } }
public static MidiThruConnection[] Find(string persistentOwnerID, out MidiError error) { if (persistentOwnerID == null) throw new ArgumentNullException (nameof (persistentOwnerID)); IntPtr ret; using (var nssstr = new NSString (persistentOwnerID)) { error = MIDIThruConnectionFind (nssstr.Handle, out ret); } using (var data = Runtime.GetNSObject<NSData> (ret)) { var typeSize = Marshal.SizeOf (typeof (MidiThruConnectionRef)); var totalObjs = (int) data.Length / typeSize; if (totalObjs == 0) return null; var basePtr = data.Bytes.ToInt32 (); var connections = new MidiThruConnection[totalObjs]; for (int i = 0; i < totalObjs; i++) connections[i] = new MidiThruConnection ((uint)(basePtr + i * typeSize)); return connections; } }
public MidiThruConnectionParams?GetParams(out MidiError error) { if (Handle == InvalidRef) { throw new ObjectDisposedException("MidiThruConnection"); } IntPtr ret; error = MIDIThruConnectionGetParams(Handle, out ret); if (error != MidiError.Ok || ret == IntPtr.Zero) { return(null); } using (var data = Runtime.GetNSObject <NSData> (ret, true)) { if (data is null) { return(null); } var cnnParams = new MidiThruConnectionParams(); cnnParams.ReadStruct(data); return(cnnParams); } }
internal MidiException (MidiError code) : base (code.ToString ()) { ErrorCode = code; }
public static MidiThruConnection?Create(string persistentOwnerID, MidiThruConnectionParams connectionParams, out MidiError error) { MidiThruConnectionRef ret; using (var data = connectionParams.WriteStruct()) { var retStr = CFString.CreateNative(persistentOwnerID); try { error = MIDIThruConnectionCreate(retStr, data.Handle, out ret); } finally { CFString.ReleaseNative(retStr); } } if (error != MidiError.Ok) { return(null); } return(new MidiThruConnection(ret)); }
public MidiEndpoint CreateVirtualDestination (string name, out MidiError status) { var m = new MidiEndpoint (this, name, out status); if (status == MidiError.Ok) return m; m.Dispose (); return null; }
public MidiEndpoint CreateVirtualSource (string name, out MidiError statusCode) { using (var nsstr = new NSString (name)){ MidiObjectRef ret; var code = MIDISourceCreate (handle, nsstr.Handle, out ret); if (code != 0){ statusCode = (MidiError) code; return null; } statusCode = MidiError.Ok; return new MidiEndpoint (ret, true); } }
internal MidiException (MidiError code) : base (code == MidiError.NotPermitted ? "NotPermitted, does your app Info.plist include the 'audio' key in the UIBackgroundModes section?" : code.ToString ()) { ErrorCode = code; }
internal MidiEndpoint (MidiClient client, string name, out MidiError code) { using (var nsstr = new NSString (name)){ GCHandle gch = GCHandle.Alloc (this); code = MIDIDestinationCreate (client.handle, nsstr.Handle, Read, GCHandle.ToIntPtr (gch), out handle); EndpointName = name; } }
public MidiThruConnectionParams GetParams(out MidiError error) { if (Handle == InvalidRef) throw new ObjectDisposedException ("MidiThruConnection"); IntPtr ret; error = MIDIThruConnectionGetParams (Handle, out ret); if (error != MidiError.Ok || ret == IntPtr.Zero) return null; using (var data = Runtime.GetNSObject<NSData> (ret, true)) { if (data == null) return null; var cnnParams = new MidiThruConnectionParams (); cnnParams.ReadStruct (data); return cnnParams; } }