Esempio n. 1
0
 protected override void initializePlugin()
 {
     try
     {
         log.Debug("Initialize MidiPlugin!");
         this.ewHelper = new Utilities.ExecutorWindowHelper();
         this.asmh     = new AssemblyHelper();
         this.devices  = new DeviceInformation();
         this.midi     = new MidiInformation();
         this.lch      = new Utilities.LinkChangedHandler(this.midi);
         ewHelper.RegisterSettings();
     }
     catch (Exception ex)
     {
         log.Error("Error initializing plugin...", ex);
     }
 }
Esempio n. 2
0
        public void Update(ExecutorWindowHelper ewHelper, InputLinkChangedMessage ilcMsg)
        {
            if (ilcMsg.Type == AbstractChangedMessage.EChangeType.CHANGED)
            {
                return;                                                            //nothing to do?
            }
            //retrieve InputLayer object
            var layer = midiInf.RuleSets.Select(j => j.InputLayer).FirstOrDefault(j => j.Metadata.ID.Equals(ilcMsg.ID.ParentLayer));

            if (layer == null)
            {
                MidiPlugin.log.Debug("Input Layer {0} does not belong to me, ignoring", ilcMsg.ID.ParentLayer.ID);
                return;
            }

            //retrieve InputChannel object
            var channel = layer.Channels.FirstOrDefault(j => j.Metadata.ID.Equals(ilcMsg.ID));

            if (channel == null)
            {
                MidiPlugin.log.Warn("Could not retrieve channel {0}", ilcMsg.ID.ChannelID);
                return;
            }
            var listener  = ilm.getInputListenerByID(ilcMsg.Listener.MetadataID);
            var channelId = channel.ID.ChannelID;

            switch (ilcMsg.Listener.ListenerID.ID)
            {
            case "ExecutorManager":
                var executor = Lumos.GUI.Connection.ConnectionManager.getInstance().GuiSession.Executors.First(j => j.ID == listener.Parent.ID.MetadataID);
                if (executor == null)
                {
                    MidiPlugin.log.Warn("Executor {0} does not exist, but is linked.", listener.Parent.ID.MetadataID);
                    return;
                }
                if (listener.Name == "Fader")
                {
                    //Link to executor fader
                    if (ilcMsg.Type == AbstractChangedMessage.EChangeType.ADDED)
                    {
                        try
                        {
                            var mbh = new MidiBacktrackHelper(channel as MidiInputChannel, executor);
                            helperList.Add(channelId, mbh);
                            mbh.Register();
                        }
                        catch (Exception e)
                        {
                            MidiPlugin.log.Warn("There is already a helper for channel {0} registered.", e, channelId);
                        }
                    }
                    else if (ilcMsg.Type == AbstractChangedMessage.EChangeType.REMOVED)
                    {
                        MidiBacktrackHelper mbh;
                        if (!helperList.TryGetValue(channelId, out mbh))
                        {
                            MidiPlugin.log.Warn("Could not fetch helper for ChannelID {0}", channelId);
                            return;
                        }
                        mbh.Unregister();
                        helperList.Remove(channelId);
                    }
                }

                break;

            case "DynamicExecutor":
                var dynamicExecutor = ewHelper.GetDynamicExecutorByMetadata(listener);
                if (dynamicExecutor == null)
                {
                    MidiPlugin.log.Warn("DynamicExecutor {0} does not exist, but is linked.", listener.Parent.ID.MetadataID);
                    return;
                }
                if (listener.Name == "Fader")
                {
                    //Link to executor fader
                    if (ilcMsg.Type == AbstractChangedMessage.EChangeType.ADDED)
                    {
                        try
                        {
                            var mbh = new MidiBacktrackHelper(channel as MidiInputChannel, dynamicExecutor);
                            helperList.Add(channelId, mbh);
                            mbh.Register();
                        }
                        catch (Exception e)
                        {
                            MidiPlugin.log.Warn("There is already a helper for channel {0} registered.", e, channelId);
                        }
                    }
                    else if (ilcMsg.Type == AbstractChangedMessage.EChangeType.REMOVED)
                    {
                        MidiBacktrackHelper mbh;
                        if (!helperList.TryGetValue(channelId, out mbh))
                        {
                            MidiPlugin.log.Warn("Could not fetch helper for ChannelID {0}", channelId);
                            return;
                        }
                        mbh.Unregister();
                        helperList.Remove(channelId);
                    }
                }
                break;
            }
        }