public static void DisconnectDevice(MidiDevice connectedDevice) { if (midiDevice == null || connectedDevice == null) { return; } if (connectedDevice.isEditor) { for (int i = connectedEditorDevices.Count - 1; i >= 0; i--) { if (connectedDevice.deviceId == connectedEditorDevices[i].deviceId) { connectedEditorDevices.RemoveAt(i); break; } } } else { for (int i = connectedDevices.Count - 1; i >= 0; i--) { if (connectedDevice.deviceId == connectedDevices[i].deviceId) { connectedDevices.RemoveAt(i); break; } } } midiDevice.DisconnectDevice(connectedDevice.deviceId, connectedDevice.isEditor); }
public static void Refresh() { if (midiDevice == null) { return; } deviceNames = new List <string>(); for (int i = 0; i < midiDevice.GetDeviceCount(); i++) { deviceNames.Add(midiDevice.GetDeviceName(i)); } if (midiEditorDevice != null) { connectedEditorDevices = new List <MidiDevice>(); for (int i = 0; i < midiEditorDevice.GetConnectedDeviceCount(); i++) { if (midiEditorDevice.GetConnectedDeviceIsEditor(i)) { MidiDevice md = new MidiDevice(); md.name = midiEditorDevice.GetConnectedDeviceName(i); md.deviceId = midiEditorDevice.GetConnectedDeviceId(i); md.isEditor = true; connectedEditorDevices.Add(md); } } } }
public static MidiDevice ConnectDevice(int deviceIndex, bool editor = false) { if (midiDevice == null) { return(null); } foreach (MidiDevice md in MidiOUTPlugin.connectedDevices) { if (md.name == midiDevice.GetDeviceName(deviceIndex)) { Debug.LogError("Preventing infinite loop. To have same device connected as IN and OUT is not allowed."); return(null); } } int deviceId = midiDevice.ConnectDevice(deviceIndex, editor); if (editor) { foreach (MidiDevice cd in connectedEditorDevices) { if (deviceId == cd.deviceId) { Debug.LogError("Editor device already connected"); return(cd); } } } else { foreach (MidiDevice cd in connectedDevices) { if (deviceId == cd.deviceId) { Debug.LogError("Device already connected"); return(cd); } } } MidiDevice connectedDevice = new MidiDevice { deviceId = deviceId, name = GetDeviceName(deviceIndex), isEditor = editor }; if (editor) { connectedEditorDevices.Add(connectedDevice); } else { connectedDevices.Add(connectedDevice); } return(connectedDevice); }
public static void RestoreEditorConnections() { string names = EditorPrefs.GetString("MIDI_IN_NAMES", "").Trim(); string[] midiInNames = string.IsNullOrEmpty(names) ? new string[0] : names.Split(';'); foreach (string midiInName in midiInNames) { MidiDevice midiDevice = ConnectDeviceByName(midiInName, true); if (midiDevice == null) { Debug.LogError("Could not conned midi in device : " + midiInName); } } }
public static void DisconnectDeviceByName(string deviceName, bool editor = false) { if (midiDevice == null) { return; } MidiDevice disconnectDevice = null; if (editor) { for (int i = connectedEditorDevices.Count - 1; i >= 0; i--) { if (deviceName == connectedEditorDevices[i].name) { disconnectDevice = connectedEditorDevices[i]; break; } } } else { for (int i = connectedDevices.Count - 1; i >= 0; i--) { if (deviceName == connectedDevices[i].name) { disconnectDevice = connectedDevices[i]; break; } } } if (disconnectDevice != null) { DisconnectDevice(disconnectDevice); } }