public override IMidiInput CreateVirtualOutputReceiver(PortCreatorContext context) { var nclient = new MidiClient(context.ApplicationName ?? "managed-midi virtual out"); MidiError error; var portName = context.PortName ?? "managed-midi virtual out port"; var nendpoint = nclient.CreateVirtualDestination(portName, out error); nendpoint.Manufacturer = context.Manufacturer; nendpoint.DisplayName = portName; nendpoint.Name = portName; var details = new CoreMidiPortDetails(nendpoint); return(new CoreMidiInput(details)); }
public override IMidiInput CreateVirtualOutputReceiver(PortCreatorContext context) { var seq = new AlsaSequencer(AlsaIOType.Duplex, AlsaIOMode.NonBlocking); var portNumber = seq.CreateSimplePort( context.PortName ?? "managed-midi virtual out", AlsaMidiAccess.virtual_output_connected_cap, AlsaMidiAccess.midi_port_type); seq.SetClientName(context.ApplicationName ?? "managed-midi output port creator"); var port = seq.GetPort(seq.CurrentClientId, portNumber); var details = new AlsaMidiPortDetails(port); return(new SimpleVirtualMidiInput(details, () => seq.DeleteSimplePort(portNumber))); }
public override IMidiOutput CreateVirtualInputSender(PortCreatorContext context) { var seq = new AlsaSequencer(AlsaIOType.Duplex, AlsaIOMode.NonBlocking); var portNumber = seq.CreateSimplePort( context.PortName ?? "managed-midi virtual in", AlsaMidiAccess.virtual_input_connected_cap, AlsaMidiAccess.midi_port_type); seq.SetClientName(context.ApplicationName ?? "managed-midi input port creator"); var port = seq.GetPort(seq.CurrentClientId, portNumber); var details = new AlsaMidiPortDetails(port); SendDelegate send = (buffer, start, length, timestamp) => seq.Send(portNumber, buffer, start, length); return(new SimpleVirtualMidiOutput(details, () => seq.DeleteSimplePort(portNumber)) { OnSend = send }); }
public abstract IMidiInput CreateVirtualOutputReceiver(PortCreatorContext context);
public abstract IMidiOutput CreateVirtualInputSender(PortCreatorContext context);