private byte[] GetParameterData() { VstParameterSet parameterSet = new VstParameterSet(); int emptyCount = 0; int parameterCount = 0; const int MAX_PARAMETERS = 1000; try { parameterSet.ProgramNumber = VstPluginContext.PluginCommandStub.GetProgram(); for (int i = 0; i < MAX_PARAMETERS; i++) { float parameterValue = VstPluginContext.PluginCommandStub.GetParameter(i); string display = VstPluginContext.PluginCommandStub.GetParameterDisplay(i); string label = VstPluginContext.PluginCommandStub.GetParameterLabel(i); string name = VstPluginContext.PluginCommandStub.GetParameterName(i); //if (parameterValue == 0.0f && (display == "0.000000" || display == "?") && label == string.Empty) //{ if (!string.IsNullOrEmpty(name) || !string.IsNullOrEmpty(label)) { VstParameter p = new VstParameter(); p.Index = i; p.Value = parameterValue; emptyCount = 0; parameterSet.Parameters.Add(p); parameterCount++; if (parameterCount == MAX_PARAMETERS) { MessageBox.Show("More than " + MAX_PARAMETERS.ToString() + " parameters in VST!?!"); break; } } else { // 100 x nothing? if (emptyCount++ == 100) { // Assume all parameters are read; break break; } } } } catch (Exception ex) { MessageBox.Show("Cannot export VST parameters : " + ex.Message); } return(parameterSet.ToByteArray()); }
private void SetParameters(byte[] data) { try { VstParameterSet parameterSet = VstParameterSet.FromByteArray(data); mVstPluginContext.PluginCommandStub.SetProgram(parameterSet.ProgramNumber); foreach (var parameter in parameterSet.Parameters) { mVstPluginContext.PluginCommandStub.SetParameter(parameter.Index, parameter.Value); } } catch (Exception ex) { MessageBox.Show("Cannot import VST parameters : " + ex.Message); } }
public static VstParameterSet FromByteArray(byte[] data) { VstParameterSet parameterSet = null; using (MemoryStream ms = new MemoryStream(data)) { try { BinaryFormatter formatter = new BinaryFormatter(); parameterSet = (VstParameterSet)formatter.Deserialize(ms); } catch (SerializationException e) { Console.WriteLine("Failed to deserialize VstParameterSet. Reason: " + e.Message); throw; } } return(parameterSet); }