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); } }
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; } }