Beispiel #1
0
        public static Message FromOSC(Stream stream)
        {
            var ms = new MemoryStream();

            stream.CopyTo(ms);
            var bytes  = ms.ToArray();
            var start  = 0;
            var bundle = OSCBundle.Unpack(bytes, ref start, (int)stream.Length);

            var message = new Message();

            foreach (OSCMessage m in bundle.Values)
            {
                var binList = new BinList();
                binList.AssignFrom(m.Values);                 // does not clone implicitly

                var address = m.Address.Split('/');
                var name    = address[address.Length - 1];
                address[address.Length - 1] = "";
                var messageAddress = "";

                foreach (var part in address)
                {
                    if (part.Trim() != "")
                    {
                        messageAddress += "." + part;
                    }
                }

                message.Address = messageAddress.Substring(1);
                message[name]   = binList;
            }

            return(message);
        }