Exemplo n.º 1
0
 public void EnumerateClientsAndPortsPrimitive()
 {
     using (var seq = new AlsaSequencer(AlsaIOType.Output, AlsaIOMode.NonBlocking)) {
         var cli = new AlsaClientInfo();
         cli.Client = -1;
         while (seq.QueryNextClient(cli))
         {
             TextWriter.Null.WriteLine("Client:" + cli.Client);
             foreach (var cpi in cli.GetType().GetProperties())
             {
                 TextWriter.Null.WriteLine($"  [{cpi}]\t{cpi.GetValue (cli)}");
             }
             var port = new AlsaPortInfo();
             port.Client = cli.Client;
             port.Port   = -1;
             while (seq.QueryNextPort(port))
             {
                 TextWriter.Null.WriteLine("  Port:" + port.Id);
                 foreach (var ppi in port.GetType().GetProperties())
                 {
                     TextWriter.Null.WriteLine($"    [{ppi}]\t{ppi.GetValue (port)}");
                 }
             }
         }
     }
 }
Exemplo n.º 2
0
        // app generates messages --> [RETURNED PORT] --> [output device port]
        AlsaPortInfo CreateOutputConnectedPort(AlsaPortInfo pinfo, string portName = "alsa-sharp output")
        {
            var portId = output.CreateSimplePort(portName, output_connected_cap, midi_port_type);
            var sub    = new AlsaPortSubscription();

            sub.Sender.Client      = (byte)output_client_id;
            sub.Sender.Port        = (byte)portId;
            sub.Destination.Client = (byte)pinfo.Client;
            sub.Destination.Port   = (byte)pinfo.Port;
            output.SubscribePort(sub);
            return(output.GetPort(sub.Sender.Client, sub.Sender.Port));
        }
Exemplo n.º 3
0
        // [input device port] --> [RETURNED PORT] --> app handles messages
        AlsaPortInfo CreateInputConnectedPort(AlsaSequencer seq, AlsaPortInfo pinfo, string portName = "alsa-sharp input")
        {
            var portId = seq.CreateSimplePort(portName, input_connected_cap, midi_port_type);
            var sub    = new AlsaPortSubscription();

            sub.Destination.Client = (byte)seq.CurrentClientId;
            sub.Destination.Port   = (byte)portId;
            sub.Sender.Client      = (byte)pinfo.Client;
            sub.Sender.Port        = (byte)pinfo.Port;
            seq.SubscribePort(sub);
            return(seq.GetPort(sub.Destination.Client, sub.Destination.Port));
        }
Exemplo n.º 4
0
        IEnumerable <AlsaPortInfo> EnumerateMatchingPorts(AlsaSequencer seq, AlsaPortCapabilities cap)
        {
            var cinfo = new AlsaClientInfo {
                Client = -1
            };

            while (seq.QueryNextClient(cinfo))
            {
                var pinfo = new AlsaPortInfo {
                    Client = cinfo.Client, Port = -1
                };
                while (seq.QueryNextPort(pinfo))
                {
                    if ((pinfo.PortType & midi_port_type) != 0 &&
                        (pinfo.Capabilities & cap) == cap)
                    {
                        yield return(pinfo.Clone());
                    }
                }
            }
        }
Exemplo n.º 5
0
 public AlsaMidiPortDetails(AlsaPortInfo port)
 {
     this.port = port;
 }