Esempio n. 1
0
            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));
            }
Esempio n. 2
0
            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)));
            }
Esempio n. 3
0
            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
                });
            }
Esempio n. 4
0
 public abstract IMidiInput CreateVirtualOutputReceiver(PortCreatorContext context);
Esempio n. 5
0
 public abstract IMidiOutput CreateVirtualInputSender(PortCreatorContext context);