public void Run(IInputDevicePluginContext pluginContext)
        {
            var port = pluginContext.GetInput <int>("Listening port");
            var millisecondThrottle = pluginContext.GetInput <int>("Incoming Midi Throttle (milliseconds)");

            using (var listener = new OscReceiver(port))
            {
                var stopWatch = new Stopwatch();

                while (listener.State == OscSocketState.Connected)
                {
                    stopWatch.Stop();
                    stopWatch.Reset();
                    stopWatch.Start();

                    var packet      = listener.Receive();
                    var midiMessage = MidiMessage.FromOscPacket(packet);

                    pluginContext.SetOutput("Midi note", midiMessage.MidiNote.Note);
                    pluginContext.SetOutput("Midi octave", midiMessage.MidiNote.Octave);
                    pluginContext.SetOutput("Midi velocity", midiMessage.Velocity);

                    pluginContext.SignalOutputChange();

                    while (stopWatch.ElapsedMilliseconds < millisecondThrottle)
                    {
                        listener.Receive();
                    }
                }
            }
        }
Esempio n. 2
0
        public void Run(IInputDevicePluginContext pluginContext)
        {
            foreach (var inputDevice in InputDevice.InstalledDevices)
            {
                inputDevice.Open();
                inputDevice.StartReceiving(null);

                inputDevice.NoteOn += (input) =>
                {
                    pluginContext.SetOutput("Velocity", input.Velocity);
                    pluginContext.SetOutput("Octave", input.Pitch.Octave());
                    pluginContext.SetOutput("Note", input.Pitch.NotePreferringFlats().Letter.ToString() + input.Pitch.NotePreferringFlats().Accidental);

                    pluginContext.SignalOutputChange();
                };
            }
        }
Esempio n. 3
0
 private void KeyPressHandler(object sender, KeyPressEventArgs args)
 {
     pluginContext.SetOutput("Key", args.KeyChar.ToString());
     pluginContext.SignalOutputChange();
 }