Esempio n. 1
0
        public void TestBundle()
        {
            var listener = new UDPListener(55555);

            var sender1 = new SharpOSC.UDPSender("localhost", 55555);
            var msg1    = new SharpOSC.OscMessage("/test/address1", 23, 42.42f, "hello world", new byte[3] {
                2, 3, 4
            });
            var msg2 = new SharpOSC.OscMessage("/test/address2", 34, 24.24f, "hello again", new byte[5] {
                5, 6, 7, 8, 9
            });
            var dt     = DateTime.Now;
            var bundle = new SharpOSC.OscBundle(Utils.DateTimeToTimetag(dt), msg1, msg2);

            sender1.Send(bundle);
            sender1.Send(bundle);
            sender1.Send(bundle);

            var recv = (OscBundle)listener.Receive();

            recv = (OscBundle)listener.Receive();
            recv = (OscBundle)listener.Receive();


            Assert.AreEqual(dt.Date, recv.Timestamp.Date);
            Assert.AreEqual(dt.Hour, recv.Timestamp.Hour);
            Assert.AreEqual(dt.Minute, recv.Timestamp.Minute);
            Assert.AreEqual(dt.Second, recv.Timestamp.Second);
            //Assert.AreEqual(dt.Millisecond, recv.DateTime.Millisecond); Ventus not accurate enough

            Assert.AreEqual("/test/address1", recv.Messages[0].Address);
            Assert.AreEqual(4, recv.Messages[0].Arguments.Count);
            Assert.AreEqual(23, recv.Messages[0].Arguments[0]);
            Assert.AreEqual(42.42f, recv.Messages[0].Arguments[1]);
            Assert.AreEqual("hello world", recv.Messages[0].Arguments[2]);
            Assert.AreEqual(new byte[3] {
                2, 3, 4
            }, recv.Messages[0].Arguments[3]);

            Assert.AreEqual("/test/address2", recv.Messages[1].Address);
            Assert.AreEqual(4, recv.Messages[1].Arguments.Count);
            Assert.AreEqual(34, recv.Messages[1].Arguments[0]);
            Assert.AreEqual(24.24f, recv.Messages[1].Arguments[1]);
            Assert.AreEqual("hello again", recv.Messages[1].Arguments[2]);
            Assert.AreEqual(new byte[5] {
                5, 6, 7, 8, 9
            }, recv.Messages[1].Arguments[3]);

            listener.Close();
        }
Esempio n. 2
0
        public void ListenerSingleMSG()
        {
            var listener = new UDPListener(55555);

            var sender = new SharpOSC.UDPSender("localhost", 55555);

            var msg = new SharpOSC.OscMessage("/test/", 23.42f);

            sender.Send(msg);

            while (true)
            {
                var pack = listener.Receive();
                if (pack == null)
                {
                    Thread.Sleep(1);
                }
                else
                {
                    break;
                }
            }

            listener.Dispose();
        }
Esempio n. 3
0
        public void TestMessage()
        {
            var listener = new UDPListener(55555);

            var sender = new SharpOSC.UDPSender("localhost", 55555);

            // Test every message type (except Symbol)
            var msg1 = new SharpOSC.OscMessage(
                "/test/address",

                23,
                42.42f,
                "hello world",
                new byte[3] {
                2, 3, 4
            },
                -123456789123,
                new Timetag(DateTime.Now.Date).Tag,
                new Timetag(DateTime.Now.Date.AddMonths(1)),
                (double)1234567.890,
                new Symbol("wut wut"),
                (char)'x',
                new RGBA(20, 40, 60, 255),
                new Midi(3, 110, 55, 66),
                true,
                false,
                null,
                Double.PositiveInfinity
                );

            OscMessage msgRevc = null;

            sender.Send(msg1);
            msgRevc = (OscMessage)listener.Receive();
            Assert.NotNull(msgRevc);

            Assert.AreEqual("/test/address", msgRevc.Address);
            Assert.AreEqual(16, msgRevc.Arguments.Count);

            Assert.AreEqual(23, msgRevc.Arguments[0]);
            Assert.AreEqual(42.42f, msgRevc.Arguments[1]);
            Assert.AreEqual("hello world", msgRevc.Arguments[2]);
            Assert.AreEqual(new byte[3] {
                2, 3, 4
            }, msgRevc.Arguments[3]);
            Assert.AreEqual(-123456789123, msgRevc.Arguments[4]);
            Assert.AreEqual(new Timetag(DateTime.Now.Date), msgRevc.Arguments[5]);
            Assert.AreEqual(new Timetag(DateTime.Now.Date.AddMonths(1)), msgRevc.Arguments[6]);
            Assert.AreEqual((double)1234567.890, msgRevc.Arguments[7]);
            Assert.AreEqual(new Symbol("wut wut"), msgRevc.Arguments[8]);
            Assert.AreEqual((char)'x', msgRevc.Arguments[9]);
            Assert.AreEqual(new RGBA(20, 40, 60, 255), msgRevc.Arguments[10]);
            Assert.AreEqual(new Midi(3, 110, 55, 66), msgRevc.Arguments[11]);
            Assert.AreEqual(true, msgRevc.Arguments[12]);
            Assert.AreEqual(false, msgRevc.Arguments[13]);
            Assert.AreEqual(null, msgRevc.Arguments[14]);
            Assert.AreEqual(Double.PositiveInfinity, msgRevc.Arguments[15]);

            listener.Close();
        }
Esempio n. 4
0
        public void CloseListener()
        {
            var l1 = new UDPListener(55555);
            var isnull = l1.Receive();
            l1.Close();

            var l2 = new UDPListener(55555);
            isnull = l2.Receive();
            l2.Close();
        }
Esempio n. 5
0
    void Update()
    {
        var bundle = li.Receive();

        if (bundle != null)
        {
            //var msg = (bundle).Messages[0];
            //Debug.Log(msg.Arguments[0].ToString());
            Debug.Log(bundle);
        }
    }
Esempio n. 6
0
        public void CloseListener()
        {
            var l1     = new UDPListener(55555);
            var isnull = l1.Receive();

            l1.Close();

            var l2 = new UDPListener(55555);

            isnull = l2.Receive();
            l2.Close();
        }
Esempio n. 7
0
        public void TestBundle()
        {
            var listener = new UDPListener(55555);

            var sender1 = new SharpOSC.UDPSender("localhost", 55555);
            var msg1 = new SharpOSC.OscMessage("/test/address1", 23, 42.42f, "hello world", new byte[3] { 2, 3, 4 });
            var msg2 = new SharpOSC.OscMessage("/test/address2", 34, 24.24f, "hello again", new byte[5] { 5, 6, 7, 8, 9 });
            var dt = DateTime.Now;
            var bundle = new SharpOSC.OscBundle(Utils.DateTimeToTimetag(dt), msg1, msg2);

            sender1.Send(bundle);
            sender1.Send(bundle);
            sender1.Send(bundle);

            var recv = (OscBundle)listener.Receive();
            recv = (OscBundle)listener.Receive();
            recv = (OscBundle)listener.Receive();

            Assert.AreEqual(dt.Date, recv.Timestamp.Date);
            Assert.AreEqual(dt.Hour, recv.Timestamp.Hour);
            Assert.AreEqual(dt.Minute, recv.Timestamp.Minute);
            Assert.AreEqual(dt.Second, recv.Timestamp.Second);
            //Assert.AreEqual(dt.Millisecond, recv.DateTime.Millisecond); Ventus not accurate enough

            Assert.AreEqual("/test/address1", recv.Messages[0].Address);
            Assert.AreEqual(4, recv.Messages[0].Arguments.Count);
            Assert.AreEqual(23, recv.Messages[0].Arguments[0]);
            Assert.AreEqual(42.42f, recv.Messages[0].Arguments[1]);
            Assert.AreEqual("hello world", recv.Messages[0].Arguments[2]);
            Assert.AreEqual(new byte[3] { 2, 3, 4 }, recv.Messages[0].Arguments[3]);

            Assert.AreEqual("/test/address2", recv.Messages[1].Address);
            Assert.AreEqual(4, recv.Messages[1].Arguments.Count);
            Assert.AreEqual(34, recv.Messages[1].Arguments[0]);
            Assert.AreEqual(24.24f, recv.Messages[1].Arguments[1]);
            Assert.AreEqual("hello again", recv.Messages[1].Arguments[2]);
            Assert.AreEqual(new byte[5] { 5, 6, 7, 8, 9 }, recv.Messages[1].Arguments[3]);

            listener.Close();
        }
Esempio n. 8
0
    // Update is called once per frame
    void Update()
    {
        messageReceived = (OscMessage)listener.Receive();
        if (messageReceived != null)
        {
            boxcollider.enabled = true;
            s = (string)messageReceived.Arguments[0];
            string[] w = s.Split(',');

            x = -(Int32.Parse(w[0]) - 200);
            y = -(Int32.Parse(w[1]) - 240);
            v.Set(x, y, 10);

            rigidbody.MovePosition(v);
        }
    }
Esempio n. 9
0
        public void CloseListenerException()
        {
            UDPListener l1 = null;
            bool ex = false;
            try
            {
                l1 = new UDPListener(55555);
                var isnull = l1.Receive();
                var l2 = new UDPListener(55555);
            }
            catch (Exception e)
            {
                ex = true;
            }

            Assert.IsTrue(ex);
            l1.Close();
        }
Esempio n. 10
0
        public void ListenerLoadTest()
        {
            var listener = new UDPListener(55555);

            var sender = new SharpOSC.UDPSender("localhost", 55555);

            var msg = new SharpOSC.OscMessage("/test/", 23.42f);

            for (int i = 0; i < 1000; i++)
                sender.Send(msg);

            for (int i = 0; i < 1000; i++)
            {
                var receivedMessage = listener.Receive();
                Assert.NotNull(receivedMessage);
            }

            listener.Dispose();
        }
Esempio n. 11
0
        // Update is called once per frame
        protected void Update()
        {
            if (port == -1)
            {
                port = 12001;
            }
            OscBundle p = (OscBundle)listener.Receive();

            if (p != null)
            {
                Debug.Log("Receiving OSC");
                int count = 0;
                foreach (OscMessage m in p.Messages)
                {
                    HandleOSCMeassage(m, count);
                    count++;
                }
            }
        }
Esempio n. 12
0
        public void CloseListenerException()
        {
            UDPListener l1 = null;
            bool        ex = false;

            try
            {
                l1 = new UDPListener(55555);
                var isnull = l1.Receive();
                var l2     = new UDPListener(55555);
            }
            catch (Exception e)
            {
                ex = true;
            }

            Assert.IsTrue(ex);
            l1.Close();
        }
Esempio n. 13
0
        public void ListenerLoadTest()
        {
            var listener = new UDPListener(55555);

            var sender = new SharpOSC.UDPSender("localhost", 55555);

            var msg = new SharpOSC.OscMessage("/test/", 23.42f);

            for (int i = 0; i < 1000; i++)
            {
                sender.Send(msg);
            }

            for (int i = 0; i < 1000; i++)
            {
                var receivedMessage = listener.Receive();
                Assert.NotNull(receivedMessage);
            }

            listener.Dispose();
        }
Esempio n. 14
0
        void Run()
        {
            while (!stopRequested)
            {
                var packet = listener.Receive();
                if (packet != null)
                {
                    lastPacketRecieved = DateTime.UtcNow;
                    OnOSCMessageReceived(packet);
                }

                if (DateTime.UtcNow.Subtract(lastPacketRecieved).TotalMilliseconds > HANGUP_TIME)
                {
                    lastPacketRecieved = DateTime.UtcNow;
                    EmitData(
                        new EEGEvent(
                            DateTime.UtcNow,
                            EEGDataType.CONTACT_QUALITY,
                            new double[] { 4, 4, 4, 4 }
                            )
                        );
                }
            }
        }
Esempio n. 15
0
        public void TestMessage()
        {
            var listener = new UDPListener(55555);

            var sender = new SharpOSC.UDPSender("localhost", 55555);

            // Test every message type (except Symbol)
            var msg1 = new SharpOSC.OscMessage(
                "/test/address",

                23,
                42.42f,
                "hello world",
                new byte[3] { 2, 3, 4 },
                -123456789123,
                new Timetag(DateTime.Now.Date).Tag,
                new Timetag(DateTime.Now.Date.AddMonths(1)),
                (double)1234567.890,
                new Symbol("wut wut"),
                (char)'x',
                new RGBA(20, 40, 60, 255),
                new Midi(3, 110, 55, 66),
                true,
                false,
                null,
                Double.PositiveInfinity
            );

            OscMessage msgRevc = null;

            sender.Send(msg1);
            msgRevc = (OscMessage)listener.Receive();
            Assert.NotNull(msgRevc);

            Assert.AreEqual("/test/address", msgRevc.Address);
            Assert.AreEqual(16, msgRevc.Arguments.Count);

            Assert.AreEqual(23,												msgRevc.Arguments[0]);
            Assert.AreEqual(42.42f,											msgRevc.Arguments[1]);
            Assert.AreEqual("hello world",									msgRevc.Arguments[2]);
            Assert.AreEqual(new byte[3] { 2, 3, 4 },						msgRevc.Arguments[3]);
            Assert.AreEqual(-123456789123,									msgRevc.Arguments[4]);
            Assert.AreEqual(new Timetag(DateTime.Now.Date),					msgRevc.Arguments[5]);
            Assert.AreEqual(new Timetag(DateTime.Now.Date.AddMonths(1)),	msgRevc.Arguments[6]);
            Assert.AreEqual((double)1234567.890,							msgRevc.Arguments[7]);
            Assert.AreEqual(new Symbol("wut wut"),							msgRevc.Arguments[8]);
            Assert.AreEqual((char)'x',										msgRevc.Arguments[9]);
            Assert.AreEqual(new RGBA(20, 40, 60, 255),						msgRevc.Arguments[10]);
            Assert.AreEqual(new Midi(3, 110, 55, 66),						msgRevc.Arguments[11]);
            Assert.AreEqual(true,											msgRevc.Arguments[12]);
            Assert.AreEqual(false,											msgRevc.Arguments[13]);
            Assert.AreEqual(null,											msgRevc.Arguments[14]);
            Assert.AreEqual(Double.PositiveInfinity,						msgRevc.Arguments[15]);

            listener.Close();
        }
Esempio n. 16
0
        public void ListenerSingleMSG()
        {
            var listener = new UDPListener(55555);

            var sender = new SharpOSC.UDPSender("localhost", 55555);

            var msg = new SharpOSC.OscMessage("/test/", 23.42f);

            sender.Send(msg);

            while (true)
            {
                var pack = listener.Receive();
                if (pack == null)
                    Thread.Sleep(1);
                else
                    break;
            }

            listener.Dispose();
        }
Esempio n. 17
0
        private void frmMain_Load(object sender, EventArgs e)
        {
            updateThread = new Thread(() =>
            {
                var listener = new UDPListener(PORT);
                OscMessage messageReceived = null;

                int nameUpdateCounter = 0;

                Stopwatch stopWatch = new Stopwatch();
                stopWatch.Start();

                while (runThread == true)
                {
                    /**
                     * Tuning Packet Descriptor
                     * Actual Value, Requested Value, IAccum, System Name
                     */
                    if (!initCompleted)
                    {
                        //Initialize the connection
                        sendIAccumReset();
                        initCompleted = true;
                    }

                    messageReceived = (OscMessage)listener.Receive();
                    if (messageReceived != null)
                    {
                        switch (messageReceived.Address)
                        {
                        case "/PIDData":
                            try
                            {
                                double actualVal    = (double)messageReceived.Arguments[0];
                                double requestedVal = (double)messageReceived.Arguments[1];
                                actualPoints.Add(actualVal);
                                requestedPoints.Add(requestedVal);
                                if (stopWatch.ElapsedMilliseconds > 200)
                                {
                                    //Update TextBox UI Every 200ms to avoid slowing down the app
                                    double iAccum = (double)messageReceived.Arguments[2];
                                    double err    = requestedVal - actualVal;
                                    averageError.AddNumber(err);
                                    txtActualVal.Invoke((MethodInvoker) delegate { txtActualVal.Text = actualVal.ToString("0.####"); });
                                    txtDesiredVal.Invoke((MethodInvoker) delegate { txtDesiredVal.Text = requestedVal.ToString("0.####"); });
                                    txtDeviation.Invoke((MethodInvoker) delegate { txtDeviation.Text = err.ToString("0.####"); });
                                    txtAverageDev.Invoke((MethodInvoker) delegate { txtAverageDev.Text = averageError.GetAverage().ToString("0.####"); });
                                    txtIAccum.Invoke((MethodInvoker) delegate { txtIAccum.Text = iAccum.ToString("0.####"); });

                                    if (nameUpdateCounter++ % 5 == 0)
                                    {
                                        txtSysName.Invoke((MethodInvoker) delegate { txtSysName.Text = (string)messageReceived.Arguments[3]; });
                                    }

                                    if (messageCounter > 200)
                                    {
                                        sleepRate = 0;
                                    }
                                    else
                                    {
                                        sleepRate = (int)((200.0 / messageCounter) / 2.0);
                                    }
                                    messageCounter = 0;
                                    stopWatch.Restart();
                                }
                            }
                            catch (Exception) { }
                            break;

                        default:
                            break;
                        }

                        messageCounter++;
                    }

                    if (sleepRate > 0)
                    {
                        Thread.Sleep(sleepRate);
                    }
                }

                listener.Close();
            });
            updateThread.Start();

            pidChart.Hoverable         = false;
            pidChart.DisableAnimations = true;
            pidChart.DataTooltip       = null;

            numkP.LostFocus        += sendPIDUpdate;
            numkI.LostFocus        += sendPIDUpdate;
            numkD.LostFocus        += sendPIDUpdate;
            numkF.LostFocus        += sendPIDUpdate;
            numAccel.LostFocus     += sendPIDUpdate;
            numVel.LostFocus       += sendPIDUpdate;
            numRamp.LostFocus      += sendPIDUpdate;
            numIZone.LostFocus     += sendPIDUpdate;
            numSetpoint.LostFocus  += sendPIDUpdate;
            numMaxIAccum.LostFocus += sendPIDUpdate;

            numkP.KeyDown        += checkEnter_Pressed;
            numkI.KeyDown        += checkEnter_Pressed;
            numkD.KeyDown        += checkEnter_Pressed;
            numkF.KeyDown        += checkEnter_Pressed;
            numAccel.KeyDown     += checkEnter_Pressed;
            numVel.KeyDown       += checkEnter_Pressed;
            numRamp.KeyDown      += checkEnter_Pressed;
            numIZone.KeyDown     += checkEnter_Pressed;
            numSetpoint.KeyDown  += checkEnter_Pressed;
            numMaxIAccum.KeyDown += checkEnter_Pressed;
        }
Esempio n. 18
0
        static void RunOptions(Options o)
        {
            Console.WriteLine("OSC will listen on port " + o.ListenPort + " and send to " + o.SendIp + ":" + o.SendPort + "");

            remote.Login();

            var listener = new UDPListener(o.ListenPort);
            var sender   = new UDPSender(o.SendIp, o.SendPort);

            VoicemeeterType vmType = remote.GetVMType();

            Console.WriteLine("Successfully connect to " + vmType + " version: " + remote.GetVMVersion());

            while (true)
            {
                try {
                    OscMessage messageReceived = (OscMessage)listener.Receive();
                    if (messageReceived != null)
                    {
                        // /vm/type/channel/cmd
                        if (messageReceived.Address.StartsWith("/vm/"))
                        {
                            String[] d = messageReceived.Address.Split('/');
                            if (d[2] == "strip" || d[2] == "bus")
                            {
                                switch (d[4])
                                {
                                case "gain":
                                    remote.SetParameterFloat(d[2] + "[" + d[3] + "].Gain", (float)messageReceived.Arguments[0]);
                                    break;

                                case "mute":
                                    remote.SetParameterFloat(d[2] + "[" + d[3] + "].Mute", (float)messageReceived.Arguments[0]);
                                    break;
                                }
                            }
                        }
                        if (o.Verbose)
                        {
                            Console.WriteLine(messageReceived.Address + " = " + messageReceived.Arguments[0].ToString());
                        }
                    }
                }
                catch (Exception e) { Console.WriteLine("Unknown exception occured: " + e.Message); }

                if (vmType.ToString() == VoicemeeterType.VOICEMEETER.ToString())
                {
                }
                if (vmType.ToString() == VoicemeeterType.VOICEMEETER_BANANA.ToString())
                {
                }
                if (vmType.ToString() == VoicemeeterType.VOICEMEETER_POATATO.ToString())
                {
                }

                for (int i = 0; i < (vmType.PhysicalCount + vmType.VirtualCount); i++)
                {
                    remote.IsParametersDirty();
                    sender.Send(new SharpOSC.OscMessage("/vm/bus/" + i.ToString() + "/gain", remote.GetParameterFloat("Bus[" + i.ToString() + "].Gain")));
                    sender.Send(new SharpOSC.OscMessage("/vm/bus/" + i.ToString() + "/mute", remote.GetParameterFloat("Bus[" + i.ToString() + "].Mute")));
                    sender.Send(new SharpOSC.OscMessage("/vm/bus/" + i.ToString() + "/level", 1, remote.GetLevel(VoicemeeterLevelType.OUTPUT, (VoicemeeterChannels)(i * vmType.PhysicalOutputChannelCount))));
                    sender.Send(new SharpOSC.OscMessage("/vm/bus/" + i.ToString() + "/level", 2, remote.GetLevel(VoicemeeterLevelType.OUTPUT, (VoicemeeterChannels)(i * vmType.PhysicalOutputChannelCount + 1))));

                    remote.IsParametersDirty();
                    sender.Send(new SharpOSC.OscMessage("/vm/strip/" + i.ToString() + "/gain", remote.GetParameterFloat("Strip[" + i.ToString() + "].Gain")));
                    sender.Send(new SharpOSC.OscMessage("/vm/strip/" + i.ToString() + "/mute", remote.GetParameterFloat("Strip[" + i.ToString() + "].Mute")));
                    sender.Send(new SharpOSC.OscMessage("/vm/strip/" + i.ToString() + "/label", stringOR(remote.GetParameterStringUNICODE("Strip[" + i.ToString() + "].Label"), "A" + (i + 1).ToString())));
                    sender.Send(new SharpOSC.OscMessage("/vm/strip/" + i.ToString() + "/level", 1, remote.GetLevel(VoicemeeterLevelType.INPUT_POST_MUTE, (VoicemeeterChannels)(i < vmType.PhysicalCount ? (i * vmType.PhysicalInputChannelCount + 0) : (vmType.PhysicalCount * 2 + (i - vmType.PhysicalCount) * vmType.VirtualChannelCount + 0)))));
                    sender.Send(new SharpOSC.OscMessage("/vm/strip/" + i.ToString() + "/level", 2, remote.GetLevel(VoicemeeterLevelType.INPUT_POST_MUTE, (VoicemeeterChannels)(i < vmType.PhysicalCount ? (i * vmType.PhysicalInputChannelCount + 1) : (vmType.PhysicalCount * 2 + (i - vmType.PhysicalCount) * vmType.VirtualChannelCount + 1)))));
                }

                System.Threading.Thread.Sleep(10);
            }
        }
Esempio n. 19
0
        public void Update(object sender, DoWorkEventArgs e)
        {
            // Receive loop from Sharp OSC.
            while (true)
            {
                try
                {
                    // If the receiver exists, then receive the packet. Skip if it's null.
                    if (Receiver == null)
                    {
                        Thread.Sleep(1);
                        continue;
                    }

                    OscPacket Packet = Receiver.Receive();

                    if (Packet == null)
                    {
                        Thread.Sleep(1);
                        continue;
                    }

                    if (Packet.GetType().Name == "OscMessage")
                    {
                        // Get the next message. This receive will not block.
                        OscMessage ReceivedMessage = (OscMessage)Packet;

                        // Show any received Limelight values.
                        if (ReceivedMessage.Address.Equals("/Robot/Limelight/X"))
                        {
                            Application.Current.Dispatcher.InvokeAsync(new Action(() => LimelightWidget.UpdateX((double)ReceivedMessage.Arguments[0])));
                        }
                        if (ReceivedMessage.Address.Equals("/Robot/Limelight/Y"))
                        {
                            Application.Current.Dispatcher.InvokeAsync(new Action(() => LimelightWidget.UpdateY((double)ReceivedMessage.Arguments[0])));
                        }
                        if (ReceivedMessage.Address.Equals("/Robot/Limelight/A"))
                        {
                            Application.Current.Dispatcher.InvokeAsync(new Action(() => LimelightWidget.UpdateA((double)ReceivedMessage.Arguments[0])));
                        }

                        // Show any received Console values.
                        if (ReceivedMessage.Address.Equals("/Robot/Console/Text"))
                        {
                            Application.Current.Dispatcher.InvokeAsync(new Action(() => ConsoleBox.PrintLine((string)ReceivedMessage.Arguments[0])));
                        }
                    }
                    else
                    {
                        // The packet is actually a bundle, and should be logged.
                        OscBundle Bundle = (OscBundle)Packet;

                        // Log the bundle data if the bundle ID contains the word log.
                        if (((string)Bundle.Messages[0].Arguments[0]).Contains("Log"))
                        {
                            // Create the relevant data for the CSV file.
                            string BundleIdentifier = "";
                            string HeaderLine       = "";
                            string DataLine         = "";

                            // Iterate through all the messages and generate the header and data rows.
                            foreach (OscMessage Message in Bundle.Messages)
                            {
                                if (Message.Address.Equals("/BundleIdentifier"))
                                {
                                    BundleIdentifier = (string)Message.Arguments[0];
                                    continue;
                                }

                                HeaderLine += Message.Address + ",";
                                DataLine   += ((double)Message.Arguments[0]).ToString() + ",";
                            }

                            // Call the log data function.
                            Application.Current.Dispatcher.InvokeAsync(new Action(() => LoggerWidget.LogData(BundleIdentifier, HeaderLine, DataLine)));
                        }

                        // If the bundle ID is "CurrentBundle" then send the data to the current widget.
                        if (((string)Bundle.Messages[0].Arguments[0]).Equals("CurrentBundle"))
                        {
                            // Iterate through all the messages and generate the header and data rows.
                            foreach (OscMessage Message in Bundle.Messages)
                            {
                                if (!Message.Address.Equals("/BundleIdentifier"))
                                {
                                    Application.Current.Dispatcher.InvokeAsync(new Action(() => CurrentWidget.SetCurrentMeter((double)Message.Arguments[0], Message.Address)));
                                }
                            }
                        }

                        // If the bundle ID is "SensorInputBundle" then send the data to the current widget.
                        if (((string)Bundle.Messages[0].Arguments[0]).Equals("SensorInputBundle"))
                        {
                            // Iterate through all the messages and generate the header and data rows.
                            foreach (OscMessage Message in Bundle.Messages)
                            {
                                if (!Message.Address.Equals("/BundleIdentifier"))
                                {
                                    Application.Current.Dispatcher.InvokeAsync(new Action(() => SensorInputWidget.SetSensorValue((double)Message.Arguments[0], Message.Address)));
                                }
                            }
                        }

                        // If the bundle ID is "ErrorBundle" then send the data to the error reporter.
                        if (((string)Bundle.Messages[0].Arguments[0]).Equals("ErrorBundle"))
                        {
                            List <string> Errors = new List <string>();

                            // Iterate through all the messages and generate the header and data rows.
                            foreach (OscMessage Message in Bundle.Messages)
                            {
                                if (!Message.Address.Equals("/BundleIdentifier"))
                                {
                                    foreach (int Argument in Message.Arguments)
                                    {
                                        if (Argument != -1)
                                        {
                                            Errors.Add(ConvertErrorAddress(Message.Address) + ConvertFault(Argument));
                                        }
                                    }
                                }
                            }

                            Application.Current.Dispatcher.InvokeAsync(new Action(() => ErrorWidget.SetErrors(Errors)));
                        }

                        if (((string)Bundle.Messages[0].Arguments[0]).Equals("ControllerDataBundle"))
                        {
                            // Iterate through all the messages and save controller data.
                            foreach (OscMessage Message in Bundle.Messages)
                            {
                                switch (Message.Address)
                                {
                                case "/BundleIdentifier":
                                    break;

                                case "/DriverController/Buttons":

                                    foreach (int ButtonState in Message.Arguments)
                                    {
                                    }
                                    break;

                                case "/DriverController/Axis":
                                    foreach (double AxisValue in Message.Arguments)
                                    {
                                    }
                                    break;

                                case "/OperatorController/Buttons":
                                    foreach (int ButtonState in Message.Arguments)
                                    {
                                    }
                                    break;

                                default:
                                    break;
                                }
                            }
                        }
                    }
                }
                catch (Exception Ex)
                {
                    // Catch any exceptions.
                    MessageBox.Show(Ex.Message + Ex.StackTrace, "OSC Receive Exception", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
                }
            }
        }
Esempio n. 20
0
        public Task TotalMixListener(string bus, string ip, int port)
        {
            bankSettingInputBus.Clear();
            bankSettingPlaybackBus.Clear();
            bankSettingOutputBus.Clear();

            var       listener  = new UDPListener(settings.ListeningPort);
            OscBundle message   = null;
            bool      done      = false;
            string    snapRegEx = @"^\/$";
            Regex     r         = new Regex(snapRegEx, RegexOptions.IgnoreCase);

            SendOscCommand("/1/bus" + bus, 1.0f, ip, port);
            while (done == false)
            {
                message = (OscBundle)listener.Receive();
                if (message != null)
                {
                    Match m = r.Match(message.Messages[0].Address);

                    if (bus == "Input")
                    {
                        for (int i = 0; i < message.Messages.Count; i++)
                        {
                            if (bankSettingInputBus.ContainsKey(message.Messages[i].Address))
                            {
                                bankSettingInputBus.Remove(message.Messages[i].Address);
                            }
                            bankSettingInputBus.Add(message.Messages[i].Address, message.Messages[i].Arguments[0].ToString());
                        }
                        if ((m.Success && bankSettingInputBus.Count >= 5) || bankSettingInputBus.Count > 145)
                        {
                            break;
                        }
                    }
                    if (bus == "Playback")
                    {
                        for (int i = 0; i < message.Messages.Count; i++)
                        {
                            if (bankSettingPlaybackBus.ContainsKey(message.Messages[i].Address))
                            {
                                bankSettingPlaybackBus.Remove(message.Messages[i].Address);
                            }
                            bankSettingPlaybackBus.Add(message.Messages[i].Address, message.Messages[i].Arguments[0].ToString());
                        }
                        break;
                    }
                    if (bus == "Output")
                    {
                        for (int i = 0; i < message.Messages.Count; i++)
                        {
                            if (bankSettingOutputBus.ContainsKey(message.Messages[i].Address))
                            {
                                bankSettingOutputBus.Remove(message.Messages[i].Address);
                            }
                            bankSettingOutputBus.Add(message.Messages[i].Address, message.Messages[i].Arguments[0].ToString());
                        }
                        break;
                    }
                }
            }
            listener.Close();
            return(Task.CompletedTask);
        }
Esempio n. 21
0
        public void poll()
        {
            OscBundle bundle = null;

            while (bundle == null)
            {
                bundle = (OscBundle)listener.Receive();
                Thread.Sleep(1);
            }

            //Debug.Log("Received a bundle!");
            List <OscMessage> messages = bundle.Messages;

            OscMessage lastMessage = bundle.Messages[bundle.Messages.Count - 1];

            switch (lastMessage.Address)
            {
            case "/notes_receiver":
                Note   note       = new Note();
                object midiNumber = lastMessage.Arguments[0];
                object start      = lastMessage.Arguments[1];
                object duration   = lastMessage.Arguments[2];
                // Typecheck to make sure that message is intact
                if (midiNumber is int midiNumberInt)
                {
                    note.MidiNumber = midiNumberInt;
                    note.Start      = (float)start;
                    note.Duration   = (float)duration;
                    note.Starts.Add((float)start);
                    note.Durations.Add((float)duration);

                    individualNote = note;
                    receivedNote   = true;
                }
                break;

            case "/notes_complete":
                isDoneReceivingNotes = true;
                break;

            case "/chords_receiver":
                int    i          = 0;
                object commonName = lastMessage.Arguments[i];
                // Typecheck to make sure that message is intact
                if (commonName is string commonNameString)
                {
                    // Initialise chord object
                    chord            = new Chord();
                    chord.CommonName = commonNameString;
                    // Add all subsequent ints (notes) to the chord object until separator "|" is hit
                    object next = lastMessage.Arguments[++i];
                    while (next is int nextMidiNumberInt)
                    {
                        Note individualNote = new Note(nextMidiNumberInt);
                        chord.AddNote(individualNote);
                        next = lastMessage.Arguments[++i];
                    }
                    // After notes (int) in OSC message it's beat and duration (floats)
                    var chordStart = (float)next;
                    next = lastMessage.Arguments[++i];
                    var chordDuration = (float)next;

                    chord.Start    = chordStart;
                    chord.Duration = chordDuration;
                    receivedChord  = true;
                }
                break;
            }
            poll();
        }