示例#1
0
        //cons
        public VSTPanel(VSTRig _rig, int _plugNum)
        {
            InitializeComponent();

            rig         = _rig;
            audiwin     = rig.controlPanel.auditwin;
            host        = rig.controlPanel.host;
            midiDevices = rig.controlPanel.midiDevices;

            plugNum = _plugNum;
            this.lblPlugName.Text = plugName;
            plugPath = null;
            fileName = null;
            plugin   = null;

            this.Size = new Size(PANELWIDTH, PANELHEIGHT);

            pluginInfoWnd  = null;
            paramEditorWnd = null;
            editorWindow   = null;

            midiInDevice     = null;
            midiInUnit       = null;
            midiOutDeviceNum = -1;

            audioOut = "no output";
        }
示例#2
0
        //- panel management ----------------------------------------------------------

        public bool loadPlugin(String _plugPath)
        {
            plugPath = _plugPath;
            fileName = Path.GetFileNameWithoutExtension(plugPath);
            plugin   = host.loadPlugin(plugPath);
            if (plugin != null)
            {
                plugName         = (plugin.name.Length > 0) ? plugin.name : fileName;
                lblPlugName.Text = plugName;
                editorWindowSize = new Size(plugin.editorWidth, plugin.editorHeight);

                if (plugin.programs != null)
                {
                    cbxProgList.DisplayMember = "name";
                    cbxProgList.DataSource    = plugin.programs;
                }
                else
                {
                    cbxProgList.Items.Add("no programs");
                    cbxProgList.SelectedIndex = 0;
                    cbxProgList.Enabled       = false;
                    btnPrevProg.Enabled       = false;
                    btnNextProg.Enabled       = false;
                }
                return(true);
            }
            return(false);
        }
示例#3
0
        public PluginInfoWnd(VSTPanel _panel)
        {
            InitializeComponent();
            this.BackColor = Color.FromArgb(0x3f, 0xff, 0x00);

            panel  = _panel;
            plugin = panel.plugin;

            //flags
            String flags = "";

            if ((plugin.flags & (1 << 0)) != 0)
            {
                flags += "  Has editor\n";
            }
            if ((plugin.flags & (1 << 4)) != 0)
            {
                flags += "  Supports replacing processing\n";
            }
            if ((plugin.flags & (1 << 5)) != 0)
            {
                flags += "  Program data is handled in chunks\n";
            }
            if ((plugin.flags & (1 << 8)) != 0)
            {
                flags += "  Is a synth\n";
            }
            if ((plugin.flags & (1 << 9)) != 0)
            {
                flags += "  Does not produce sound when input is silent\n";
            }
            if ((plugin.flags & (1 << 12)) != 0)
            {
                flags += "  Supports double precision processing\n";
            }

            //unique ID
            byte[] idbytes = BitConverter.GetBytes(plugin.uniqueID);
            String idstr   = System.Text.Encoding.ASCII.GetString(idbytes);

            char[] idchars = idstr.ToCharArray();
            Array.Reverse(idchars);
            idstr = new String(idchars);

            String infotext = plugin.name + "\n" +
                              plugin.vendor + "\n\n" +
                              //plugin.version + "\n" +
                              plugin.numPrograms + " programs\n" +
                              plugin.numParams + " parameters\n" +
                              plugin.numInputs + " inputs\n" +
                              plugin.numOutputs + " outputs\n\n" +
                              "Flags : 0x" + plugin.flags.ToString("X4") + "\n" +
                              flags +
                              "Unique ID : " + idstr + "\n";

            lblPlugInfo.Text = infotext;
        }
示例#4
0
        //cons
        public PluginSettingsWnd(VSTPanel _panel)
        {
            InitializeComponent();

            panel       = _panel;
            plugin      = panel.plugin;
            waveDevices = panel.host.waveDevices;
            midiDevices = panel.midiDevices;

            cbxAudioIn.DataSource  = waveDevices.getInDevNameList();
            cbxAudioOut.DataSource = waveDevices.getOutDevNameList();

            cbxMidiIn.DataSource    = midiDevices.getInDevNameList();
            cbxMidiIn.SelectedIndex = cbxMidiIn.FindString((panel.midiInDevice != null) ? panel.midiInDevice.devName : "no input");

            cbxMidiOut.DataSource = midiDevices.getOutDevNameList();
        }
示例#5
0
        /// <summary>
        /// Save Effects Settings
        /// </summary>
        public override void SaveSettings()
        {
            Settings.Instance.MusicDirectory = _initialMusicDirectory;

            // Settings for BASS DSP/FX
            Settings.Instance.BassEffects.Clear();
            BassEffect basseffect;

            // Gain
            if (textBoxGainDBValue.Text != "0")
            {
                basseffect            = new BassEffect();
                basseffect.EffectName = "Gain";
                basseffect.Parameter.Add(new BassEffectParm("Gain_dbV", textBoxGainDBValue.Text));
                Settings.Instance.BassEffects.Add(basseffect);
            }

            // Dynamic Amplification
            if (checkBoxDAmp.Checked)
            {
                basseffect            = new BassEffect();
                basseffect.EffectName = "DynAmp";
                basseffect.Parameter.Add(new BassEffectParm("Preset", comboBoxDynamicAmplification.SelectedIndex.ToString()));
                Settings.Instance.BassEffects.Add(basseffect);
            }

            // Compressor
            if (checkBoxCompressor.Checked)
            {
                basseffect            = new BassEffect();
                basseffect.EffectName = "Compressor";
                basseffect.Parameter.Add(new BassEffectParm("Threshold", trackBarCompressor.Value.ToString()));
                Settings.Instance.BassEffects.Add(basseffect);
            }

            // Settings for VST Plugings
            Settings.Instance.VSTPlugins.Clear();
            VSTPlugin vstplugin;

            foreach (string plugindll in _vstHandles.Keys)
            {
                vstplugin           = new VSTPlugin();
                vstplugin.PluginDll = plugindll;
                _vstHandle          = _vstHandles[plugindll];
                BASS_VST_PARAM_INFO paramInfo = new BASS_VST_PARAM_INFO();
                for (int i = BassVst.BASS_VST_GetParamCount(_vstHandle) - 1; i >= 0; i--)
                {
                    BassVst.BASS_VST_GetParamInfo(_vstHandle, i, paramInfo);
                    float value = BassVst.BASS_VST_GetParam(_vstHandle, i);
                    vstplugin.Parameter.Add(new VSTPluginParm(paramInfo.name, i, value.ToString()));
                }
                Settings.Instance.VSTPlugins.Add(vstplugin);
            }

            // Settings for WinAmpPlugins
            WinAmpPlugin winampplugin;

            // Clear all settings first
            Settings.Instance.WinAmpPlugins.Clear();
            foreach (DSPPluginInfo pluginInfo in listBoxSelectedPlugins.Items)
            {
                if (pluginInfo.DSPPluginType == DSPPluginInfo.PluginType.Winamp)
                {
                    winampplugin           = new WinAmpPlugin();
                    winampplugin.PluginDll = pluginInfo.FilePath;
                    Settings.Instance.WinAmpPlugins.Add(winampplugin);
                }
            }
            Settings.SaveSettings();
        }
示例#6
0
        private void cbxPlugin_SelectedIndexChanged(object sender, EventArgs e)
        {
            VSTPlugin plugin = (plugins.Count > 0) ? plugins[cbxPlugin.SelectedIndex] : null;

            setSelectedPlugin(plugin);
        }
示例#7
0
 public void setSelectedPlugin(VSTPlugin plugin)
 {
     currentPlugin     = plugin;
     currentPluginName = (plugin != null) ? plugin.name : null;
 }