private void midiInConfirmButton_Click(object sender, EventArgs e) { if (inReady) { midiInput.Stop(); midiInput.Close(); midiInput.Dispose(); midiInDevicesCB.Enabled = true; refreshMidiInButton.Enabled = true; midiInConfirmButton.ImageIndex = 0; inReady = false; checkReady(true); } else { midiInDevicesCB.Enabled = false; refreshMidiInButton.Enabled = false; midiInput = new MidiIn(midiInDevicesCB.SelectedIndex); midiInput.MessageReceived += midiInput_MessageReceived; midiInput.ErrorReceived += midiInput_ErrorReceived; midiInput.Start(); midiInConfirmButton.ImageIndex = 1; inReady = true; checkReady(true); } }
private void MainWindow_FormClosing(object sender, FormClosingEventArgs e) { audioOutput.Stop(); audioOutput.Dispose(); if (midiIn != default(MidiIn)) { midiIn.Stop(); midiIn.Dispose(); } }
public void StartMIDIInMonitoring() { if (setting.midiKbd.MidiInDeviceName == "") { return; } if (midiin != null) { try { midiin.Stop(); midiin.Dispose(); midiin.MessageReceived -= midiIn_MessageReceived; midiin.ErrorReceived -= midiIn_ErrorReceived; midiin = null; } catch { midiin = null; } } if (midiin == null) { for (int i = 0; i < MidiIn.NumberOfDevices; i++) { if (!setting.midiKbd.UseMIDIKeyboard) { continue; } if (setting.midiKbd.MidiInDeviceName != MidiIn.DeviceInfo(i).ProductName) { continue; } try { midiin = new MidiIn(i); midiin.MessageReceived += midiIn_MessageReceived; midiin.ErrorReceived += midiIn_ErrorReceived; midiin.Start(); } catch { midiin = null; } } } }
partial void Execute_MidiOffCommand() { MidiEnabled = false; midiIn.Stop(); midiIn.Dispose(); ResetCanExecute(); }
partial void Execute_MidiOffCommand() { try { MidiEnabled = false; midiIn.Stop(); midiIn.Dispose(); for (int i = 0; i < 64; i++) { if (_oscillators[i] != null) { _oscillators[i].Stop(); _oscillators[i] = null; } } } catch (Exception) { for (int i = 0; i < 64; i++) { if (_oscillators[i] != null) { _oscillators[i].Stop(); _oscillators[i] = null; } } } }
private void openDevice(int i) { if (i < 1) { return; } if (midiIn != null) { midiIn.Stop(); midiIn.Dispose(); midiIn = null; selectedDevice = 0; } try { midiIn = new MidiIn(i - 1); midiIn.MessageReceived += MIDIMessageReceived; midiIn.ErrorReceived += MIDIErrorReceived; midiIn.Start(); selectedDevice = i; } catch (Exception e) { midiIn = null; selectedDevice = 0; owner.logText(string.Format("Error: Cannot Open MIDI Device {0}: {1}", devices[i], e.Message)); } if (selectedDevice > 0) { slDev.selectedItem = selectedDevice; slDev.Enabled = false; online = true; } }
/// <summary> /// MIDI入力やめ /// </summary> public void StopMonitoring() { if (monitoring) { midiIn.Stop(); monitoring = false; } }
public void Close() { _midiInput.MessageReceived -= OnMidiMessage; _midiInput.ErrorReceived -= OnMidiError; _midiInput.Stop(); _midiInput.Dispose(); }
/// <inheritdoc /> public bool Init() { bool inited = false; DeviceName = "Invalid"; // default try { _midiIn?.Stop(); _midiIn?.Dispose(); _midiIn = null; // Figure out which device. List <string> devices = new(); for (int i = 0; i < MidiIn.NumberOfDevices; i++) { devices.Add(MidiIn.DeviceInfo(i).ProductName); } int ind = devices.IndexOf(UserSettings.TheSettings.MidiIn); if (ind < 0) { _logger.Error($"Invalid midi input device:{UserSettings.TheSettings.MidiIn}"); } else { _midiIn = new MidiIn(ind); _midiIn.MessageReceived += MidiIn_MessageReceived; _midiIn.ErrorReceived += MidiIn_ErrorReceived; _midiIn.Start(); inited = true; DeviceName = UserSettings.TheSettings.MidiIn; } } catch (Exception ex) { _logger.Error($"Init midi in failed: {ex.Message}"); inited = false; } return(inited); }
public void Dispose() { engine.Dispose(); if (canRead) { midiIn.Stop(); midiIn.Dispose(); canRead = false; } }
private void StopMonitoring() { if (monitoring) { midiIn.Stop(); monitoring = false; buttonMonitor.Text = "Monitor"; comboBoxMidiInDevices.Enabled = true; } }
public void Dispose() { if (Disposed) { return; } MidiIn.Stop(); MidiIn.Dispose(); MidiIn = null; }
private void OnDestroy() { StopAllCoroutines(); for (int i = 11; i < 90; i++) { SendMessage(i, 0); } controllerIn.Stop(); controllerIn.Dispose(); controllerOut.Dispose(); }
/// <summary> /// Resource clean up. /// </summary> /// <param name="disposing"></param> protected virtual void Dispose(bool disposing) { if (!_disposed && disposing) { _mdev?.Stop(); _mdev?.Dispose(); _mdev = null; _disposed = true; } }
public void CloseIn() { if (midiIn != null) { midiIn.Stop(); midiIn.OnLongMsg -= OnLongMessage; midiIn.OnShortMsg -= OnShortMessage; midiIn.Close(); midiIn = null; } }
private void MidiInputListener(bool enableListener) { if (enableListener) { _mIn.Start(); } else { _mIn.Stop(); } _userInputCycle = 0; }
private void MIDIInputTest_FormClosed(object sender, FormClosedEventArgs e) { try { midiInput.Stop(); midiInput.Close(); midiInput.Dispose(); } catch (NullReferenceException) { //Do Nothing }catch (NAudio.MmException) { //MIDI Device was disconnected before stopping } }
private void CleanupMidiPort() { if (_attachedMidiPort == null) { return; } _logService.Information("Disconnecting already attached MIDI port"); _attachedMidiPort.Stop(); _attachedMidiPort.Close(); _attachedMidiPort.Dispose(); _attachedMidiPort.MessageReceived -= ProcessMidiMessage; _attachedMidiPort.ErrorReceived -= LogMidiError; }
public void Init(int inDeviceNo, int outDeviceNo) { if (_initialized) { _inDevice.Stop(); _inDevice.Close(); _inDevice.Dispose(); _outDevice.Close(); _outDevice.Dispose(); } _inDevice = new MidiIn(inDeviceNo); _outDevice = new MidiOut(outDeviceNo); _inDevice.MessageReceived += MessageReceived; _inDevice.ErrorReceived += ErrorReceived; _inDevice.Start(); _initialized = true; }
/// <summary> /// Initialize the port. /// </summary> /// <param name="name"></param> /// <returns></returns> public bool Init(string name) { bool inited = false; try { if (_mdev != null) { _mdev.Stop(); _mdev.Dispose(); _mdev = null; } if (name != "") { for (int device = 0; device < MidiIn.NumberOfDevices && _mdev == null; device++) { if (name == MidiIn.DeviceInfo(device).ProductName) { _mdev = new MidiIn(device); _mdev.MessageReceived += NpMidiIn_MessageReceived; _mdev.ErrorReceived += NpMidiIn_ErrorReceived; _mdev.Start(); inited = true; } } if (_mdev == null) { ErrorInfo = $"Invalid midi input: {name}"; inited = false; } } } catch (Exception ex) { ErrorInfo = $"Init midi in failed: {ex.Message}"; inited = false; } return(inited); }
// Use this for initialization void OnDestroy() { if (_midiIn != null) { _midiIn.MessageReceived -= MidiIn_MessageReceived; } lock (eventQueueObject) { eventQueue.Clear(); } if (_midiIn != null) { _midiIn.Stop(); _midiIn.Dispose(); _midiIn = null; } }
public void Stop() { MidiIn.Stop(); MidiIn.ReceivedMidiEvent -= MidiInOnReceivedMidiEvent; MidiIn.ReceivedExclusiveMessage -= MidiInOnReceivedExclusiveMessage; }
static void Main(string[] args) { Console.WriteLine("待機:なんか入力"); Console.ReadKey(); if (MidiIn.NumberOfDevices == 0) { return; } for (var i = 0; i < MidiIn.NumberOfDevices; i++) { var d = MidiIn.DeviceInfo(i).ProductName; Console.WriteLine($"i : {d}"); } var deviceName = MidiIn.DeviceInfo(1).ProductName; Console.WriteLine($"接続 : {deviceName}"); var midiIn = new MidiIn(0); var stopWatch = new Stopwatch(); var midiStream = Observable.FromEventPattern <MidiInMessageEventArgs>( h => midiIn.MessageReceived += h, h => midiIn.MessageReceived -= h); var onStream = midiStream.Where(x => x.EventArgs.MidiEvent.CommandCode == MidiCommandCode.NoteOn) .Select(x => (x, stopWatch.ElapsedMilliseconds)); var offStream = midiStream.Where(x => x.EventArgs.MidiEvent.CommandCode == MidiCommandCode.NoteOff); var noteList = new List <NoteData>(); var list = new List <List <NoteData> >(); var list1 = noteList; onStream.Zip(offStream) .Subscribe(x => { var endTime = stopWatch.ElapsedMilliseconds; var note1 = x.First.x.EventArgs.MidiEvent; var length = endTime - x.First.ElapsedMilliseconds; if (!(note1 is NoteOnEvent noe)) { return; } Console.WriteLine($"*********************************"); Console.WriteLine($"コマンド : {noe.CommandCode}"); Console.WriteLine($"ノーツ名 : {noe.NoteName}"); Console.WriteLine($"長さ : {length}"); Console.WriteLine($"Time : {x.First.ElapsedMilliseconds}"); Console.WriteLine($"強さ : {noe.Velocity}"); var note = new NoteData() { AbsoluteTime = x.First.ElapsedMilliseconds, NoteNumber = noe.NoteNumber, Length = length, NoteName = noe.NoteName, Velocity = noe.Velocity }; list1.Add(note); }); midiIn.Start(); stopWatch.Start(); for (var i = 0; i < 10; i++) { Console.WriteLine($"キーを押すとデータ収集を開始します。 {i + 1}/10"); Console.WriteLine($"再びキーを押すと次のデータ収集に移行します。"); Console.ReadKey(); noteList = new List <NoteData>(); stopWatch.Restart(); Console.ReadKey(); list.Add(noteList); } list.ForEach(notes => { if (notes.Count == 0) { return; } var baseTime = notes[0].AbsoluteTime; Console.WriteLine("===================================================="); notes.ForEach(x => { x.RelativeTime = x.AbsoluteTime - baseTime; Console.WriteLine($"コード:{x.NoteName} 強さ:{x.Velocity}"); Console.WriteLine($"長さ:{x.Length} 相対的時間:{x.RelativeTime}"); }); }); Console.ReadKey(); stopWatch.Stop(); midiIn.Stop(); midiIn.Dispose(); using var stream = new StreamWriter("./midi.csv", false, Encoding.UTF8); foreach (var note in noteList) { stream.Write($"{note.NoteName} Velocity, Length, RelativeTime, "); } stream.WriteLine(); foreach (var nodeList in list) { foreach (var note in nodeList) { stream.Write($"{note.Velocity}, {note.Length}, {note.RelativeTime}, "); } stream.WriteLine(); } }
public bool UpdateCurrentMidiDevice(string name) { if (currentMidiDevice is not null) { try { currentMidiDevice.Stop(); currentMidiDevice.Dispose(); currentMidiDevice = null; currentMidiDeviceName = ""; } catch (Exception ex) { communication.SendWarningMessage($"Exception closing Midi Device: {ex}"); currentMidiDevice = null; currentMidiDeviceName = ""; } //try //{ // currentMidiDeviceOut?.Close(); // currentMidiDeviceOut?.Dispose(); // currentMidiDeviceOut = null; //} //catch (Exception ex) //{ // communication.SendWarningMessage($"Exception closing Midi Out Device: {ex}"); // currentMidiDeviceOut = null; //} } if (string.IsNullOrEmpty(name)) { return(true); } int newDevice = -1; for (int i = 0; i < MidiIn.NumberOfDevices; i++) { if (MidiIn.DeviceInfo(i).ProductName == name) { newDevice = i; break; } } if (newDevice == -1) { //Not found return(false); } try { currentMidiDeviceName = MidiIn.DeviceInfo(newDevice).ProductName; currentMidiDevice = new MidiIn(newDevice); currentMidiDevice.MessageReceived += MidiMessageReceived; currentMidiDevice.ErrorReceived += MidiErrorReceived; currentMidiDevice.Start(); } catch (Exception ex) { communication.SendErrorMessage($"Exception starting Midi Device: {ex}"); currentMidiDevice = null; currentMidiDeviceName = ""; return(false); } RecreateAudioStream(); //Success return(true); }
/// <summary> /// Resource clean up. /// </summary> public void Dispose() { _mdev?.Stop(); _mdev?.Dispose(); _mdev = null; }
private void StopMonitoring() { btnMIDIIn.Text = "MonitorOn"; _midiin.Stop(); monitoring = false; }