示例#1
0
        public void removePanel(VSTPanel panel)
        {
            panel.unloadPlugin();           //disconnect panel & shut down plugin
            rack.removePanel(panel);
            panels.Remove(panel);

            foreach (Patch patch in patches)            //add panel to each patch
            {
                patch.removePanel(panel);
            }


            hasChanged = true;
            controlPanel.rigPluginsChanged();         //broadcast rack change
        }
示例#2
0
        //---------------------------------------------------------------------

        public static VSTRig loadFromFile(String path, ControlPanel controlPanel)
        {
            VSTRig rig = null;

            EnamlData rigData = EnamlData.loadFromFile(path);      //load data from file

            if (rigData != null)
            {
                rig = new VSTRig(controlPanel);

                //load plugins
                List <String> plugs = rigData.getPathKeys("plugin-list");
                Dictionary <String, VSTPanel> plugList = new Dictionary <string, VSTPanel>();      //temp dict for matching plugins to patches
                foreach (String plug in plugs)
                {
                    String plugPath     = rigData.getStringValue("plugin-list." + plug + ".path", "");
                    String plugAudioOut = rigData.getStringValue("plugin-list." + plug + ".audio-out", "");
                    String plugMidiIn   = rigData.getStringValue("plugin-list." + plug + ".midi-in", "");

                    VSTPanel panel = rig.addPanel(plugPath);
                    //panel.plugin.setAudioOut(plugAudioOut);
                    panel.setMidiIn(plugMidiIn);

                    plugList[plug] = panel;
                }

                //load patches
                List <String> pats = rigData.getPathKeys("patch-list");
                foreach (String pat in pats)
                {
                    String patchName = rigData.getStringValue("patch-list." + pat + ".name", "");
                    Patch  patch     = new Patch(patchName);
                    foreach (String plug in plugs)
                    {
                        int patnum = rigData.getIntValue("patch-list." + pat + "." + plug, 0);
                        patch.addPanel(plugList[plug], patnum);
                    }
                    rig.patches.Add(patch);
                }
                rig.setCurrentPatch(0);
            }

            return(rig);
        }
示例#3
0
        //- plugin management ------------------------------------------------------------

        public VSTPanel addPanel(string pluginPath)
        {
            VSTPanel panel  = new VSTPanel(this, panels.Count);
            bool     result = panel.loadPlugin(pluginPath);

            if (!result)
            {
                return(null);
            }

            panels.Add(panel);
            rack.addPanel(panel);

            foreach (Patch patch in patches)            //add panel to each patch
            {
                patch.addPanel(panel, 0);
            }

            hasChanged = true;
            controlPanel.rigPluginsChanged();         //broadcast rack change

            return(panel);
        }
示例#4
0
 public void removePanel(VSTPanel panel)
 {
     panels.Remove(panel);
 }
示例#5
0
 public void addPanel(VSTPanel panel, int patchNum)
 {
     panels.Add(panel, patchNum);
 }