private void OnEventReceived1(object sender, MidiEventReceivedEventArgs e) { rx.BackColor = Color.Red; var midiDevice = (MidiDevice)sender; MidiEventToBytesConverter x = new MidiEventToBytesConverter(); byte[] data = x.Convert(e.Event); /* * List<byte> n = new List<byte>(); * //n.Add(0x01); * //n.Add(Convert.ToByte(data.Length + 1)); * foreach(byte a in data) * { * n.Add(0x01); * n.Add(a); * } * //n.AddRange(data); * //n.Add(calculateCRC(data)); * serialPort1.Write(n.ToArray(), 0, n.Count);*/ tx.BackColor = Color.LimeGreen; serialPort1.Write(data, 0, data.Length); //textBox1.AppendText($"Event received from '{midiDevice.Name}' at {DateTime.Now}: {e.Event}" + Environment.NewLine); }
private void OnEventReceived(object sender, MidiEventReceivedEventArgs e) { var midiDevice = (MidiDevice)sender; Console.WriteLine($"Event received from '{midiDevice.Name}' at {DateTime.Now}: {e.Event}"); MessageBox.Show($"Event received from '{midiDevice.Name}' at {DateTime.Now}: {e.Event}"); }
private void OnInputEvent(object sender, MidiEventReceivedEventArgs e) { switch (e.Event) { case NoteAftertouchEvent aftertouchEvent: var buttonEvt = new ButtonEvent(aftertouchEvent); OnButtonChange?.Invoke(this, new FaderPortButtonEventArgs(buttonEvt.Button, buttonEvt.State)); return; case ControlChangeEvent controlChangeEvent: { if (_pendingSlider == null) { _pendingSlider = controlChangeEvent; } else if (_pendingSlider.ControlNumber == 0x20) { SliderPosition = _pendingSlider.ControlValue + (controlChangeEvent.ControlValue << 7); _pendingSlider = null; } else { _pendingSlider = controlChangeEvent; } } break; case PitchBendEvent pitchBendEvent: var up = pitchBendEvent.PitchValue == 0x80; break; } }
// Called when a MIDI event is received from the MIDI device void OnEventReceived(object sender, MidiEventReceivedEventArgs eventArgs) { // This event handler is invoked in different thread. // See: https://melanchall.github.io/drywetmidi/articles/devices/Common-problems.html#startcoroutine-can-only-be-called-from-the-main-thread-in-unity // Send MIDI event to the main thread queue.Enqueue(eventArgs.Event); }
private void OnMIDIEvent(object sender, MidiEventReceivedEventArgs e) { string eventstring = e.Event.ToString(); GroupCollection midiInfo = new Regex(@"Note On \[0\] \((?<pitch>\d+), (?<amount>\d+)\)").Match(eventstring).Groups; // trust me short amount; if (!short.TryParse(midiInfo["amount"].Value, out amount)) { amount = 0; } double pitch; if (!double.TryParse(midiInfo["pitch"].Value, out pitch)) { pitch = 0.0d; } if (amount != 0) // later i might regulate the amount, for now i just check if it is 0 { AddPitch(pitch); } else { RemovePitch(pitch); } }
private void OnEventReceived(object sender, MidiEventReceivedEventArgs e) { var midiDevice = (MidiDevice)sender; logger.Debug($"MIDI event received from '{midiDevice.Name}: ' {e.Event}"); ProcessRules(e); OnRecieveEvent?.Invoke(this, e); }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private static void midiEventReceivedB(object sender, MidiEventReceivedEventArgs e) { var ea = new CancelMidiEventReceivedEventArgs(MidiPort.PortB, e); MidiEventHooked?.Invoke(sender, ea); if (ea.Cancel) { return; } MidiEventReceivedB?.Invoke(sender, e.Event); }
private static void MidiKeyboard_EventReceived(object sender, MidiEventReceivedEventArgs e) { Log.overlayLog($"收到Note@{DateTime.Now.ToString("HH: mm:ss.fff")} "); switch (e.Event) { case NoteOnEvent @event: noteQueue.Enqueue(@event); break; case NoteOffEvent @event: noteQueue.Enqueue(@event); break; } }
private static void InputEvent(object sender, MidiEventReceivedEventArgs e) { if (e.Event is NoteEvent ev) { var idx = ev.NoteNumber - 21; PressedKeys[idx] = ev.EventType switch { MidiEventType.NoteOn => true, MidiEventType.NoteOff => false, _ => PressedKeys[idx] }; CurrentSong?.SongJudgement?.RecordNoteEvent(ev); } } }
private static void MidiKeyboard_EventReceived(object sender, MidiEventReceivedEventArgs e) { logs += e.Event.ToString() + "\r\n"; switch (e.Event) { case NoteOnEvent @event: noteQueue.Enqueue(@event); break; case NoteOffEvent @event: noteQueue.Enqueue(@event); break; default: break; } }
private void OnEventReceived(object sender, MidiEventReceivedEventArgs e) { var midiDevice = (MidiDevice)sender; Console.WriteLine($"Event received from '{midiDevice.Name}' at {DateTime.Now}: {e.Event}"); var map = MapEventToControl(e.Event); Console.WriteLine($"Mapped to {map.MidiControlType}:{map.ControlId}"); foreach (var controlAdaptor in controlAdaptors) { if (!controlAdaptor.MatchesEvent(map)) { continue; } controlAdaptor.HandleEvent(e.Event); break; } }
private void OnEventReceived(object sender, MidiEventReceivedEventArgs e) { var midiDevice = (MidiDevice)sender; Console.WriteLine($"Event received from '{midiDevice.Name}' at {DateTime.Now}: {e.Event}"); if (e.Event.EventType.Equals(MidiEventType.NoteOn)) { if (_serialPort.IsOpen) { Melanchall.DryWetMidi.MusicTheory.Note note = Melanchall.DryWetMidi.MusicTheory.Note.Get(((NoteOnEvent)e.Event).NoteNumber); Console.WriteLine("Arduino gets: " + processNote(note.NoteName, note.Octave)); _serialPort.Write(processNote(note.NoteName, note.Octave) + ";"); } } }
private static void InputDeviceOnEventReceived(object sender, MidiEventReceivedEventArgs e) { System.Console.WriteLine("Input: " + e.Event.ToString()); if (e.Event is SysExEvent s) { //System.Console.WriteLine("Output: " + s.Data.PrintInHex()); return; } byte[] bts = null; if (e.Event is NoteOnEvent noteOn) { if (noteOn.Channel != LightChannel) { return; } bts = PDevice.BuildSingleNoteLightPacket(noteOn.NoteNumber); //System.Console.WriteLine(noteOn.NoteNumber); //LightMap[noteOn.NoteNumber] = PlayHand.Right; } else if (e.Event is NoteOffEvent noteOff) { if (noteOff.Channel != LightChannel) { return; } bts = PDevice.BuildSingleNoteLightPacket(noteOff.NoteNumber, false); //LightMap.TryRemove(noteOff.NoteNumber, out _); } if (bts == null || _outputDevice == null) { return; } //var bts = PDevice.BuildLightsPacket(LightMap).AddTimestamp(); _outputDevice.SendEvent(new NormalSysExEvent(bts.AddTimestamp().ToArray())); //System.Console.WriteLine(bts.PrintInHex()); }
private static void OnEventReceived(object sender, MidiEventReceivedEventArgs e) { var midiDevice = (MidiDevice)sender; string noteName; string noteIntensity; if (CheckString(e.Event.ToString())) { string tempString; tempString = e.Event.ToString(); tempString = tempString.Replace("Note On [0] (", ""); tempString = tempString.Replace(", ", ""); tempString = tempString.Replace("(", ""); tempString = tempString.Replace(")", ""); if (tempString.Length == 4) { string tempClone = tempString; noteName = tempString.Substring(0, tempString.Length - 2); noteIntensity = tempClone.Replace(noteName, ""); tempString = tempString.Substring(0, tempString.Length - 2); } else { string tempclone = tempString; noteName = tempString.Substring(0, tempString.Length - 1); noteIntensity = tempclone.Replace(noteName, ""); tempString = tempString.Substring(0, tempString.Length - 1); } Console.WriteLine($"Note name: {noteName}"); Console.WriteLine($"Note intensity: {noteIntensity}"); int nameInt = Int32.Parse(noteName); int noteInt = Int32.Parse(noteIntensity); NoteTransfer.noteBuffer.Add(new Note(NoteTransfer.noteDict[nameInt], noteInt)); Console.WriteLine($"Event received from '{midiDevice.Name}' at {DateTime.Now}: {e.Event}"); } }
private void ProcessRules(MidiEventReceivedEventArgs e) { if (presetFile == null) { return; } var ruleIndex = 0; foreach (HandleRule rule in presetFile.rulesStorage) { logger.Trace($"handle rule index={ruleIndex} : {rule.GetType().Name}"); var matchResult = rule.CheckMatch(this, e.Event); logger.Trace($" -- check match = {matchResult}"); if (matchResult) { // call event OnMatchRuleEvent?.Invoke(this, rule); // execute action if (rule.Action != null) { logger.Trace($"-- executed linked action: {rule.Action.GetType().Name}"); rule.Action.Execute(); } else { logger.Trace("-- there is no linked action"); } if (rule.StopProcessing) { logger.Trace("-- flag StopProcessing is set. Break."); break; } } ruleIndex++; } }
private static void OnMidiRecieved(object sender, MidiEventReceivedEventArgs e) { if (e.Event != null) { if (e.Event.EventType == MidiEventType.NoteOn || e.Event.EventType == MidiEventType.NoteOff) { NoteEvent noteEvent = e.Event as NoteEvent; SendMidi(noteEvent); } else if (e.Event.EventType == MidiEventType.ControlChange) { ControlChangeEvent ccEvent = e.Event as ControlChangeEvent; SendMidi(ccEvent); } else if (e.Event.EventType == MidiEventType.ProgramChange) { ProgramChangeEvent pcEvent = e.Event as ProgramChangeEvent; SendMidi(pcEvent); } } }
private static void OnEventReceived(object sender, MidiEventReceivedEventArgs e) { var midiDevice = (MidiDevice)sender; NoteEvent ev = e.Event as NoteEvent; if (ev != null) { if (e.Event.EventType == MidiEventType.NoteOn && ev.Velocity > 0) { Console.WriteLine("Key " + ev.NoteNumber.ToString() + " pressed"); state.PressKey(ev.NoteNumber); //Process keybinding events when a key is pressed bindings.ProcessState(state, cursor); } else if (ev.Velocity == 0) { Console.WriteLine("Key " + ev.NoteNumber.ToString() + " released"); state.ReleaseKey(ev.NoteNumber); } } }
private void OnMidiEventReceived(object sender, MidiEventReceivedEventArgs e) { if (e.Event is NoteOnEvent) { NoteOnEvent evt = e.Event as NoteOnEvent; if (evt.Velocity == 0) { return; } if (noteLookup.TryGetValue(evt.NoteNumber, out Note note)) { note.Play(); if (detailedLogging) { Invoke((MethodInvoker)(() => { Log($"Recieved MIDI number {evt.NoteNumber}, the note is {(note.IsShiftedKey ? "^" : string.Empty)}{note.NoteCharacter}."); })); } } } }
private static void InputDevice_EventReceived(object sender, MidiEventReceivedEventArgs e) { //PluginLog.Verbose(e.Event.ToString()); Plugin.CurrentOutputDevice.SendEvent(e.Event); }
private void OnEventReceived(object sender, MidiEventReceivedEventArgs e) { String[] Negras = { "37", "39", "_", "42", "44", "46", "_", "49", "51", "_", "54", "56", "58", "_", "61", "63", "_", "66", "68", "70", "_", "73", "75", "_", "78", "80", "82", "_", }; String[] blancas = { "36", "38", "40", "41", "43", "45", "47", "48", "50", "52", "53", "55", "57", "59", "60", "62", "64", "65", "67", "69", "71", "72", "74", "76", "77", "79", "81", "83" }; string entrada = e.Event.ToString(); string notaFinal = entrada.Split('(', ',')[1]; bool on = false; string salida = (Note.Get((SevenBitNumber)Int32.Parse(notaFinal)).ToString()); salida = salida.Remove(salida.Length - 1); //salida = entrada; //registro de tipo de evento y notas activas if (entrada.Contains("On")) { on = true; activas.Add(notaFinal); var notita = Note.Get((SevenBitNumber)Int32.Parse(notaFinal)); notasAcorde.Add(notita); PostRequestChord(salida); //label1.Text = notasAcorde.Count().ToString(); } else if (entrada.Contains("Off")) { on = false; activas.RemoveAll(x => x == notaFinal); // label1.Text = notasAcorde.Count().ToString(); string pito = notaFinal + "c"; PostRequestChord(pito); } notaSalida.Text = salida; //cambio de colores en la interfaz foreach (Button p in panel1.Controls) { if (p.Name == notaFinal && on == true) { p.BackColor = Color.AliceBlue; } else if (p.Name == notaFinal && on == false) { foreach (string thing in Negras) { if (p.Name == thing) { p.BackColor = Color.Black; } } foreach (string thing in blancas) { if (p.Name == thing) { p.BackColor = Color.White; } } } } }
private void OnEventReceived(object sender, MidiEventReceivedEventArgs e) { ForwardEvent(e.Event); }
private static void OnEventReceived(object sender, MidiEventReceivedEventArgs e) { var midiDevice = (MidiDevice)sender; Console.WriteLine($"Event received from '{midiDevice.Name}' at {DateTime.Now}: {e.Event.ToString()}"); }
private void HandleOnRecieve(object sender, MidiEventReceivedEventArgs args) { MidiMonitorRecord r = new MidiMonitorRecord(DateTime.Now, args.Event); eventStore.Add(r); }
private void OnEventReceived(object sender, MidiEventReceivedEventArgs e) { Console.WriteLine($"Midi Event Received: {e.Event}"); _eventMapper.MapMidiEvent(e.Event); }
/// <summary> /// /// </summary> /// <param name="e"></param> public CancelMidiEventReceivedEventArgs(MidiPort port, MidiEventReceivedEventArgs e) { Port = port; Event = e; }
private void OnEventReceived(object sender, MidiEventReceivedEventArgs e) { _manualResetEvent.Set(); }
private void MidiIn_MidiEventReceived(object sender, MidiEventReceivedEventArgs e) { switch (e.MidiEvent.Status) { case MidiEventStatusType.NoteOn: if (XTouchMiniMcButton.Controls.TryGetValue(e.MidiEvent.Arg1, out XTouchMiniMcButton button)) { if (e.MidiEvent.Arg2 == (byte)McButtonState.Down) { //button down OnButtonDown(button); } else if (e.MidiEvent.Arg2 == (byte)McButtonState.Up) { //button up OnButtonUp(button); } else { Console.WriteLine("[_midiIn_MidiEventReceived] {0}", e.MidiEvent.ToString()); } } break; case MidiEventStatusType.CC: if (XTouchMiniMcEncoder.Controls.TryGetValue(e.MidiEvent.Arg1, out XTouchMiniMcEncoder encoder)) { /* * apparently the encoder works like this: * Clockwise: 0 < Arg2 < 0x40 * Anti-Clockwise: 40 < Arg2 < ?? (presumably 0x80) * * the value depends on the turn speed, no idea if it's just * reporting the amount of "steps" since the last measurement * * I just transform it to an int * negative: anti-clockwise * positive: clockwise * absolute value: speed (however that is measured) */ int ticks; if (e.MidiEvent.Arg2 > 0x40) { ticks = -(e.MidiEvent.Arg2 - 0x40); } else { ticks = e.MidiEvent.Arg2; } OnEncoderTurned(encoder, ticks); } break; case MidiEventStatusType.Pitch: if (XTouchMiniMcFader.Controls.TryGetValue(e.MidiEvent.Channel, out XTouchMiniMcFader fader)) { /* * translate the native value range from 0-127 to a double 0-1 */ double value = ((double)e.MidiEvent.Arg2) / 127d; OnFaderMoved(fader, value); } break; default: Console.WriteLine("[_midiIn_MidiEventReceived] {0}", e.MidiEvent.ToString()); break; } }
string GetStringDataByColumnIndex(int columnIndex, MidiEventReceivedEventArgs args) { string c1 = DateTime.Now.ToString("HH:mm:ss:fff"); string c2; string c3; string c4; string c5; string c6; string c7; string c8; switch (args.Event.EventType) { case MidiEventType.ControlChange: var cce = (ControlChangeEvent)args.Event; c2 = "Control change"; c3 = cce.Channel.ToString(); c4 = cce.ControlNumber.ToString(); c5 = cce.ControlValue.ToString(); c6 = nv; c7 = nv; c8 = nv; break; case MidiEventType.ProgramChange: var pce = (ProgramChangeEvent)args.Event; c2 = "Program change"; c3 = pce.Channel.ToString(); c4 = nv; c5 = nv; c6 = pce.ProgramNumber.ToString(); c7 = nv; c8 = nv; break; case MidiEventType.NoteOn: var noe = (NoteOnEvent)args.Event; c2 = "NoteOn"; c3 = noe.Channel.ToString(); c4 = nv; c5 = nv; c6 = nv; c7 = noe.NoteNumber.ToString(); c8 = noe.Velocity.ToString(); break; case MidiEventType.NoteOff: var nOffEvevent = (NoteOffEvent)args.Event; c2 = "NoteOff"; c3 = nOffEvevent.Channel.ToString(); c4 = nv; c5 = nv; c6 = nv; c7 = nOffEvevent.NoteNumber.ToString(); c8 = nOffEvevent.Velocity.ToString(); break; default: c2 = nv; c3 = nv; c4 = nv; c5 = nv; c6 = nv; c7 = nv; c8 = nv; break; } if (columnIndex == 1) { return(c1); } else if (columnIndex == 2) { return(c2); } else if (columnIndex == 3) { return(c3); } else if (columnIndex == 4) { return(c4); } else if (columnIndex == 5) { return(c5); } else if (columnIndex == 6) { return(c6); } else if (columnIndex == 7) { return(c7); } else if (columnIndex == 8) { return(c8); } else { return(nv); } }