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(); } } } }
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(); }; } }
private void KeyPressHandler(object sender, KeyPressEventArgs args) { pluginContext.SetOutput("Key", args.KeyChar.ToString()); pluginContext.SignalOutputChange(); }