IEnumerator ConnectMidiOnStart()
    {
        yield return(new WaitUntil(() =>
                                   MIDI.initialized
                                   ));

        try
        {
            for (int i = 0; i < MidiOUTPlugin.GetDeviceCount(); i++)
            {
                var deviceName = MidiOUTPlugin.GetDeviceName(i);
                MidiOUTPlugin.DisconnectDeviceByName(deviceName);
                //Debug.Log($"DisconnectMidiOut {deviceName}");
            }

            for (int i = 0; i < MidiINPlugin.GetDeviceCount(); i++)
            {
                var deviceName = MidiINPlugin.GetDeviceName(i);
                if (!deviceName.Contains("Session"))
                {
                    MidiINPlugin.ConnectDeviceByName(deviceName);
                    //Debug.Log($"ConnectMidiIn {deviceName}");
                    break;
                }
            }
        }
        catch (Exception e)
        {
            Debug.LogWarning("ConnectMidiOnStart " + e);
        }
    }
Exemple #2
0
        static IEnumerator InitMidiIO()
        {
            if (!MidiINPlugin.initialized)
            {
                MidiINPlugin.Init();
            }

            yield return(new WaitUntil(() =>
                                       MidiINPlugin.Initialized()
                                       ));

            if (!MidiOUTPlugin.initialized)
            {
                MidiOUTPlugin.Init();
            }

            yield return(new WaitUntil(() =>
                                       MidiOUTPlugin.Initialized()
                                       ));

            forceDefaultMidiIn  = settings.forceDefaultMidiIn;
            defaultMidiIn       = settings.defaultMidiIn;
            forceDefaultMidiOut = settings.forceDefaultMidiOut;
            defaultMidiOut      = settings.defaultMidiOut;

            if (forceDefaultMidiIn)
            {
                if (defaultMidiIn >= 0 && defaultMidiIn < MidiINPlugin.GetDeviceCount())
                {
                    MidiINPlugin.ConnectDevice(defaultMidiIn);
                }
            }
            else
            {
                MidiINPlugin.RestoreConnections();
                if (MidiINPlugin.connectedDevices.Count == 0)
                {
                    if (defaultMidiIn >= 0 && defaultMidiIn < MidiINPlugin.GetDeviceCount())
                    {
                        MidiINPlugin.ConnectDevice(defaultMidiIn);
                    }
                }
            }

            if (forceDefaultMidiOut)
            {
                if (defaultMidiOut >= 0 && defaultMidiOut < MidiOUTPlugin.GetDeviceCount())
                {
                    MidiOUTPlugin.ConnectDevice(defaultMidiOut);
                }
            }
            else
            {
                MidiOUTPlugin.RestoreConnections();
                if (MidiOUTPlugin.connectedDevices.Count == 0)
                {
                    if (defaultMidiOut >= 0 && defaultMidiOut < MidiOUTPlugin.GetDeviceCount())
                    {
                        MidiOUTPlugin.ConnectDevice(defaultMidiOut);
                    }
                }
            }
        }
    IEnumerator GetMidiInIe()
    {
        yield return(new WaitUntil(() =>
                                   MIDI.initialized
                                   ));

        listConnectedMidiIn = new List <string>();
        //Debug.Log("MidiINPlugin.connectedDevices " + MidiINPlugin.connectedDevices.Count);
        foreach (MidiDevice md in MidiINPlugin.connectedDevices)
        {
            listConnectedMidiIn.Add(md.name);
            //Debug.Log("MidiINPlugin.connectedDevices " + md.name);
        }

        //Debug.LogWarning("GetMidiInIe");
        foreach (Transform child in PanelMidiIn.transform)
        {
            Destroy(child.gameObject);
        }

        var buttonNoMidi = Instantiate(ButtonMidi, Vector3.zero, Quaternion.identity);

        buttonNoMidi.transform.SetParent(PanelMidiIn.transform);
        buttonNoMidi.transform.localScale = Vector3.one;
        buttonNoMidi.name = "IN No Midi In Detected";
        if (LocalizationManager.instance != null)
        {
            buttonNoMidi.GetComponentInChildren <Text>().text =
                LocalizationManager.instance.GetLocalizedValue("No Midi In Detected");
        }
        else
        {
            buttonNoMidi.GetComponentInChildren <Text>().text = "No Midi In Detected";
        }

        var color = buttonNoMidi.GetComponent <Image>().color;

        color.a = 0.2f;
        buttonNoMidi.GetComponent <Image>().color = color;

        for (int i = 0; i < MidiINPlugin.GetDeviceCount(); i++)
        {
            if (MidiOUTPlugin.GetDeviceName(i).Contains("Session"))
            {
                continue;
            }

            buttonNoMidi.SetActive(false);
            var button = Instantiate(ButtonMidi, Vector3.zero, Quaternion.identity);
            button.transform.SetParent(PanelMidiIn.transform);
            button.transform.localScale = Vector3.one;
            button.GetComponentInChildren <Text>().text = MidiINPlugin.GetDeviceName(i).Trim();

            if (listConnectedMidiIn.Contains(MidiINPlugin.GetDeviceName(i)))
            {
                button.name = "IN DISCONNECT " + MidiINPlugin.GetDeviceName(i);
                color       = button.GetComponent <Image>().color;
                color.a     = 1f;
                button.GetComponent <Image>().color = color;
            }
            else
            {
                button.name = "IN CONNECT " + MidiINPlugin.GetDeviceName(i);
                color       = button.GetComponent <Image>().color;
                color.a     = 0.2f;
                button.GetComponent <Image>().color = color;
            }
        }
    }
Exemple #4
0
    void Init()
    {
        foreach (MidiSelectionUIDeviceButton button in INs)
        {
            Destroy(button.gameObject);
        }

        INs = new List <MidiSelectionUIDeviceButton> ();

        foreach (MidiSelectionUIDeviceButton button in OUTs)
        {
            Destroy(button.gameObject);
        }

        OUTs = new List <MidiSelectionUIDeviceButton> ();

        int count = MidiINPlugin.deviceNames.Count > MidiOUTPlugin.deviceNames.Count ? MidiINPlugin.deviceNames.Count : MidiOUTPlugin.deviceNames.Count;

        _minHeight = count * (int)PREFAB_MidiDeviceButton.GetComponent <LayoutElement> ().preferredHeight + 100;

        if (_minHeight < minHeight)
        {
            _minHeight = minHeight;
        }

        _minWidth = minWidth;

        for (int i = 0; i < MidiINPlugin.GetDeviceCount(); i++)
        {
            var go = Instantiate(PREFAB_MidiDeviceButton);

            go.transform.SetParent(inPanel, false);
            MidiSelectionUIDeviceButton button = go.GetComponent <MidiSelectionUIDeviceButton> ();
            button.device          = MidiSelectionUIDeviceButton.Device.IN;
            button.midiSelectionUI = this;
            button.text.text       = MidiINPlugin.GetDeviceName(i);

            bool connected = false;

            foreach (MidiDevice device in MidiINPlugin.connectedDevices)
            {
                if (device.name == button.text.text)
                {
                    connected = true;
                }
            }

            button.connected = connected;

            if (connected)
            {
                button.image.color = connectedColor;
            }
            else
            {
                button.image.color = disconnectedColor;
            }

            INs.Add(button);

            int preferredWidth = (int)button.text.preferredWidth;
            if (preferredWidth > _minWidth / 2)
            {
                _minWidth = 2 * preferredWidth;
            }
        }

        for (int i = 0; i < MidiOUTPlugin.GetDeviceCount(); i++)
        {
            var go = Instantiate(PREFAB_MidiDeviceButton);
            go.transform.SetParent(outPanel, false);
            MidiSelectionUIDeviceButton button = go.GetComponent <MidiSelectionUIDeviceButton> ();
            button.device          = MidiSelectionUIDeviceButton.Device.OUT;
            button.midiSelectionUI = this;
            button.text.text       = MidiOUTPlugin.GetDeviceName(i);

            bool connected = false;

            foreach (MidiDevice device in MidiOUTPlugin.connectedDevices)
            {
                if (device.name == button.text.text)
                {
                    connected = true;
                }
            }

            button.connected = connected;

            if (connected)
            {
                button.image.color = connectedColor;
            }
            else
            {
                button.image.color = disconnectedColor;
            }

            OUTs.Add(button);

            int preferredWidth = (int)button.text.preferredWidth;
            if (preferredWidth > _minWidth / 2)
            {
                _minWidth = 2 * preferredWidth;
            }
        }

        _minWidth += 2 * widthMargin;
        //_minHeight += 2 * heightMargin;

        midiPanel.SetSize(new Vector2(_minWidth, _minHeight));
    }