public InterstellarPlugin() { Samplerate = 48000; DevInfo = new DeviceInfo(); ParameterInfo = new Parameter[1]; PortInfo = new Port[2]; }
public SmashMasterEffect() { Samplerate = 48000; DevInfo = new DeviceInfo(); ParameterInfo = new Parameter[6]; PortInfo = new Port[2]; }
public void InitializeDevice() { #if DEBUG devInfo.DeviceID = "Low Profile - Polyhedrus - DEV"; #else devInfo.DeviceID = "Low Profile - Polyhedrus"; #endif devInfo.Developer = "Valdemar Erlingsson"; devInfo.EditorWidth = 995; devInfo.EditorHeight = 386; devInfo.HasEditor = true; devInfo.Name = "Polyhedrus Synthesizer"; devInfo.ProgramCount = 1; devInfo.Type = DeviceType.Generator; devInfo.Version = 1000; devInfo.UnsafeProcessing = true; devInfo.VstId = DeviceUtilities.GenerateIntegerId(devInfo.DeviceID); PortInfo[0].Direction = PortDirection.Output; PortInfo[0].Name = "Stereo Output"; PortInfo[0].NumberOfChannels = 2; for (int i = 0; i < 0; i++) { var p = new SharpSoundDevice.Parameter(); p.Display = "0.0"; p.Index = (uint)i; p.Name = "Parameter " + i; p.Steps = 0; p.Value = 0.0; ParameterInfo[i] = p; } }
public MrFuzzModule() { Samplerate = 48000; DevInfo = new DeviceInfo(); ParameterInfo = new Parameter[3]; PortInfo = new Port[2]; }
public AudioDeviceModule() { Samplerate = 48000; DevInfo = new DeviceInfo(); ParameterInfo = new Parameter[1]; PortInfo = new Port[1]; Controller = new SynthController(this); }
public Rodent() { Samplerate = 48000; DevInfo = new DeviceInfo(); ParameterInfo = new Parameter[8]; PortInfo = new Port[2]; e = new Editor(this); }
public TestbedPlugin() { Container = TestContainer.ActiveContainer; Container.SetSamplerate(48000); Samplerate = 48000; DevInfo = new DeviceInfo(); ParameterInfo = new Parameter[Container.Parameters.Length]; PortInfo = new Port[2]; }
public BiquadPlugin() { Samplerate = 48000; DevInfo = new DeviceInfo(); ParameterInfo = new Parameter[5]; PortInfo = new Port[2]; BiquadL = new Biquad(Biquad.FilterType.LowPass, 48000); BiquadR = new Biquad(Biquad.FilterType.LowPass, 48000); }
public Nearfield() { Samplerate = 48000; DevInfo = new DeviceInfo(); ParameterInfo = new Parameter[5]; PortInfo = new Port[2]; BufferLeft = new CircularBuffer(5000); BufferRight = new CircularBuffer(5000); }
public Modelay() { Samplerate = 48000; DevInfo = new DeviceInfo(); ParameterInfo = new Parameter[3]; PortInfo = new Port[2]; BufferLeft = new CircularBuffer(48000); BufferRight = new CircularBuffer(48000); Random = new Random(); }
public PolyhedrusPlugin() { AllocConsole(); controller = new PolyhedrusNative(48000, 12003, 12004); Samplerate = 48000; devInfo = new DeviceInfo(); ParameterInfo = new Parameter[0]; PortInfo = new Port[1]; }
/// <summary> /// Takes output generated by SerializeParameters(), deserializes it and assigns the values /// to the Parameters /// </summary> /// <param name="parameters">An array of parameters to set with the new values</param> /// <param name="data">Serialized values, as generated by the SerializeParameters() method</param> public static void DeserializeParameters(Parameter[] parameters, byte[] data) { parameters = parameters.OrderBy(x => x.Index).ToArray(); string values = Encoding.UTF8.GetString(data); var items = values.Split(','); var filtered = items.Where(x => x != null && x.Trim() != "").ToList(); var select = filtered.Select(x => Convert.ToDouble(x.Trim(), System.Globalization.CultureInfo.InvariantCulture)).ToList(); if (select.Count != parameters.Length) throw new Exception("Illegal program data. Number of parameters does not match"); for (int i = 0; i < parameters.Length; i++) parameters[i].Value = select[i]; }
public void InitializeDevice() { DevInfo.DeviceID = "Low Profile - Biquad"; #if DEBUG DevInfo.DeviceID = DevInfo.DeviceID + " - Dev"; #endif DevInfo.Developer = "Valdemar Erlingsson"; DevInfo.EditorHeight = 0; DevInfo.EditorWidth = 0; DevInfo.HasEditor = false; DevInfo.Name = "Biquad Filter"; DevInfo.ProgramCount = 1; DevInfo.Type = DeviceType.Effect; DevInfo.Version = 1000; DevInfo.VstId = DeviceUtilities.GenerateIntegerId(DevInfo.DeviceID); PortInfo[0].Direction = PortDirection.Input; PortInfo[0].Name = "Stereo Input"; PortInfo[0].NumberOfChannels = 2; PortInfo[1].Direction = PortDirection.Output; PortInfo[1].Name = "Stereo Output"; PortInfo[1].NumberOfChannels = 2; for (int i = 0; i < ParameterInfo.Length; i++) { var p = new Parameter(); p.Display = "0.0"; p.Index = (uint)i; p.Name = ParameterNames[i]; p.Steps = 0; p.Value = 0.0; ParameterInfo[i] = p; } SetParameter(P_TYPE, 0.0); SetParameter(P_FREQ, 0.5); SetParameter(P_SLOPE, 0.5); SetParameter(P_Q, 0.5); SetParameter(P_GAIN, 0.5); }
public void InitializeDevice() { DevInfo.DeviceID = "Low Profile - RXG100"; #if DEBUG DevInfo.DeviceID = DevInfo.DeviceID + " - Dev"; #endif DevInfo.Developer = "Valdemar Erlingsson"; DevInfo.EditorHeight = 0; DevInfo.EditorWidth = 0; DevInfo.HasEditor = true; DevInfo.Name = "RXG100 Amp Simulator"; DevInfo.ProgramCount = 1; DevInfo.Type = DeviceType.Effect; DevInfo.Version = 1001; DevInfo.VstId = DeviceUtilities.GenerateIntegerId(DevInfo.DeviceID); PortInfo[0].Direction = PortDirection.Input; PortInfo[0].Name = "Stereo Input"; PortInfo[0].NumberOfChannels = 2; PortInfo[1].Direction = PortDirection.Output; PortInfo[1].Name = "Stereo Output"; PortInfo[1].NumberOfChannels = 2; for(int i = 0; i < ParameterInfo.Length; i++) { var p = new Parameter(); p.Display = "0.0"; p.Index = (uint)i; p.Name = ParameterNames[i]; p.Steps = 0; p.Value = 0.0; ParameterInfo[i] = p; } HighpassInput = new Highpass1((float)Samplerate); // Channel A TF1A = new TF1(Samplerate); Stage1A = new SplineInterpolator(Data.Splines.Stage2_2TF); TF2A = new TF2(Samplerate); Stage2A = new SplineInterpolator(Data.Splines.Stage2_2TF); PostVolumeHpA = new Highpass1((float)Samplerate); TFPresA = new TFPres(Samplerate); TonestackA = new Tonestack((float)Samplerate); // Channel B TF1B = new TF1((float)Samplerate); TF1xB = new TF12((float)Samplerate); Stage1B = new SplineInterpolator(Data.Splines.Stage1CapSimulatedTF); TF2B = new TF2((float)Samplerate); Stage2B = new SplineInterpolator(Data.Splines.Stage2SimulatedTF); ClipperZenerB = new SplineInterpolator(Data.Splines.ZenerTF); ClipperDiodeB = new SplineInterpolator(Data.Splines.D1N914TF); TFVolumeB = new TFVolume((float)Samplerate); TFPresB = new TFPres((float)Samplerate); TonestackB = new Tonestack((float)Samplerate); h3 = new Highpass1((float)Samplerate); hipassZenerB = new Highpass1((float)Samplerate); LowpassOutput = new Lowpass1((float)Samplerate); TonestackA.setComponents(0.200e-9f, 0.022e-6f, 0.02e-6f, 1e3f, 500e3f, 47e3f, 500e3f, 20e3f, 500e3f); TonestackB.setComponents(0.200e-9f, 0.022e-6f, 0.02e-6f, 1e3f, 500e3f, 47e3f, 500e3f, 20e3f, 500e3f); SetSampleRate(Samplerate); Editor = new Editor(); Editor.Instance = this; DevInfo.EditorHeight = Editor.Height; DevInfo.EditorWidth = Editor.Width; for(int i = 0; i < ParameterInfo.Length; i++) { SetParam(i, 0.51); } }
public void InitializeDevice() { DevInfo.DeviceID = "Low Profile - Mr. Fuzz"; #if DEBUG DevInfo.DeviceID = DevInfo.DeviceID + " - Dev"; #endif DevInfo.Developer = "Valdemar Erlingsson"; //DevInfo.EditorHeight = e.Height; //DevInfo.EditorWidth = e.Width; DevInfo.HasEditor = false; DevInfo.Name = "Mr. Fuzz"; DevInfo.ProgramCount = 1; DevInfo.Type = DeviceType.Effect; DevInfo.Version = 1000; DevInfo.VstId = DeviceUtilities.GenerateIntegerId(DevInfo.DeviceID); PortInfo[0].Direction = PortDirection.Input; PortInfo[0].Name = "Mono Input"; PortInfo[0].NumberOfChannels = 1; PortInfo[1].Direction = PortDirection.Output; PortInfo[1].Name = "Stereo Output"; PortInfo[1].NumberOfChannels = 2; for (int i = 0; i < ParameterInfo.Length; i++) { var p = new Parameter(); p.Display = "0.5"; p.Index = (uint)i; p.Name = ParameterNames[i]; p.Steps = 0; p.Value = 0.5; ParameterInfo[i] = p; } HpInput = new Highpass1((float)Samplerate); TFStage = new MrFuzz.TFStage((float)Samplerate); DiodeStage = new LUT(); DiodeStage.ReadRecord(Table.DiodeResponse); DiodeStage.Table = Utils.MovingAve(DiodeStage.Table, (int)(DiodeStage.Table.Length / 200.0)); DiodeStage.Table = Table.Upsample(DiodeStage.Table, 100000); LowpassFilter = new Lowpass1((float)Samplerate); HpOutput = new Highpass1((float)Samplerate); // initialize all blocks UpdateAll(); }
public void InitializeDevice() { DevInfo.DeviceID = "Low Profile - Testbed"; DevInfo.Developer = "Valdemar Erlingsson"; DevInfo.EditorHeight = 0; DevInfo.EditorWidth = 0; DevInfo.HasEditor = false; DevInfo.Name = "Testbed"; DevInfo.ProgramCount = 1; DevInfo.Type = Container.IsSynth ? DeviceType.Generator : DeviceType.Effect; DevInfo.Version = 1000; DevInfo.VstId = DeviceUtilities.GenerateIntegerId(DevInfo.DeviceID); PortInfo[0].Direction = PortDirection.Input; PortInfo[0].Name = "Stereo Input"; PortInfo[0].NumberOfChannels = 2; PortInfo[1].Direction = PortDirection.Output; PortInfo[1].Name = "Stereo Output"; PortInfo[1].NumberOfChannels = 2; for (int i = 0; i < ParameterInfo.Length; i++) { var p = new Parameter(); p.Display = Container.GetDisplay(i); p.Index = (uint)i; if (Container.ParameterNames != null && Container.ParameterNames.Length > i) p.Name = Container.ParameterNames[i]; else p.Name = "Param " + i; p.Steps = 0; p.Value = Container.Parameters[i]; ParameterInfo[i] = p; } }
public void InitializeDevice() { DevInfo.Developer = "Valdemar Erlingsson"; DevInfo.DeviceID = "Analog Window - NetSynth"; DevInfo.EditorHeight = (Controller.View != null) ? (int)Controller.View.Height : 400; DevInfo.EditorWidth = (Controller.View != null) ? (int)Controller.View.Width : 800; DevInfo.HasEditor = true; DevInfo.Name = "NetSynth Software Synthesizer"; DevInfo.ProgramCount = 1; DevInfo.Type = DeviceType.Generator; DevInfo.Version = 1000; DevInfo.VstId = 1; //PortInfo[0].Direction = PortDirection.Input; //PortInfo[0].Name = "Stereo Input"; //PortInfo[0].NumberOfChannels = 2; PortInfo[0].Direction = PortDirection.Output; PortInfo[0].Name = "Stereo Output"; PortInfo[0].NumberOfChannels = 2; for (int i = 0; i < ParameterInfo.Length; i++) { var p = new Parameter(); p.Display = "0.0"; p.Index = (uint)i; p.Name = "Parameter"; p.Steps = 0; p.Value = 0.0; ParameterInfo[i] = p; //UpdateParameterDisplay(i, 0.5); } }
public void InitializeDevice() { DevInfo.DeviceID = "Low Profile - Smash Master"; #if DEBUG DevInfo.DeviceID = DevInfo.DeviceID + " - Dev"; #endif DevInfo.Developer = "Valdemar Erlingsson"; DevInfo.EditorHeight = 0; DevInfo.EditorWidth = 0; DevInfo.HasEditor = false; DevInfo.Name = "Smash Master"; DevInfo.ProgramCount = 1; DevInfo.Type = DeviceType.Effect; DevInfo.Version = 1000; DevInfo.VstId = DeviceUtilities.GenerateIntegerId(DevInfo.DeviceID); PortInfo[0].Direction = PortDirection.Input; PortInfo[0].Name = "Stereo Input"; PortInfo[0].NumberOfChannels = 2; PortInfo[1].Direction = PortDirection.Output; PortInfo[1].Name = "Stereo Output"; PortInfo[1].NumberOfChannels = 2; for (int i = 0; i < ParameterInfo.Length; i++) { var p = new Parameter(); p.Display = "0.5"; p.Index = (uint)i; p.Name = ParameterNames[i]; p.Steps = 0; p.Value = 0.5; ParameterInfo[i] = p; } Hp1 = new Highpass1((float)Samplerate); LpNoise = new Lowpass1((float)Samplerate); GainTF = new Gain(this.Samplerate); PostGain = new postGain(Samplerate); SaturateLP = new Lowpass1((float)Samplerate); ClipperHP = new Highpass1((float)Samplerate); Clipper = new LUT(); Clipper.ReadRecord(Tables.D1N914TF.Split('\n')); Clipper.Table = Tables.Upsample(Clipper.Table, 100000); Tonestack = new Tonestack((float)Samplerate); TF2 = new TF2(Samplerate); Contour = new Contour(Samplerate); OutHP = new Highpass1((float)Samplerate); OutLP = new Lowpass1((float)Samplerate); // 16Hz, remove DC bias from input Hp1.SetParam(0, 16f); LpNoise.SetParam(0, 3500f); ClipperHP.SetParam(0, 10f); SaturateLP.SetParam(0, 15000); Tonestack.FenderMode = true; Tonestack.setComponents(0.022e-6, 0.22e-6, 0.022e-6, 1000, 5e6, 6.8e3, 25e3, 1e3, 100e3); OutHP.SetParam(0, 30f); // initialize all blocks UpdateAll(); }
public void InitializeDevice() { DevInfo.Developer = "Valdemar Erlingsson"; DevInfo.DeviceID = "Analog Window - Interstellar IPC Plugin"; DevInfo.EditorHeight = 0; DevInfo.EditorWidth = 0; DevInfo.HasEditor = false; DevInfo.Name = "Interstellar IPC Plugin"; DevInfo.ProgramCount = 1; DevInfo.Type = DeviceType.Effect; DevInfo.Version = 1000; DevInfo.VstId = 456812594; PortInfo[0].Direction = PortDirection.Input; PortInfo[0].Name = "Stereo Input"; PortInfo[0].NumberOfChannels = 2; PortInfo[1].Direction = PortDirection.Output; PortInfo[1].Name = "Stereo Output"; PortInfo[1].NumberOfChannels = 2; for (int i = 0; i < ParameterInfo.Length; i++) { var p = new Parameter(); p.Display = "0.0"; p.Index = (uint)i; p.Name = ParameterNames[i]; p.Steps = 0; p.Value = 0.0; ParameterInfo[i] = p; } SetParameter(P_Volume, 0.5); string prc = @"C:\Src\_Tree\Audio\OscAP\OscAPGain\bin\x86\Debug\OscAPGain.exe"; Driver = new OscAP.HostDriver(prc); }
public RXG100() { Samplerate = 48000; DevInfo = new DeviceInfo(); ParameterInfo = new Parameter[NUM_PARAMS]; PortInfo = new Port[2]; }
public void InitializeDevice() { DevInfo.DeviceID = "Low Profile - RXG100"; #if DEBUG DevInfo.DeviceID = DevInfo.DeviceID + " - Dev"; #endif DevInfo.Developer = "Valdemar Erlingsson"; DevInfo.EditorHeight = 0; DevInfo.EditorWidth = 0; DevInfo.HasEditor = true; DevInfo.Name = "RXG100 Amp Simulator"; DevInfo.ProgramCount = 1; DevInfo.Type = DeviceType.Effect; DevInfo.Version = 1001; DevInfo.VstId = DeviceUtilities.GenerateIntegerId(DevInfo.DeviceID); PortInfo[0].Direction = PortDirection.Input; PortInfo[0].Name = "Stereo Input"; PortInfo[0].NumberOfChannels = 2; PortInfo[1].Direction = PortDirection.Output; PortInfo[1].Name = "Stereo Output"; PortInfo[1].NumberOfChannels = 2; for(int i = 0; i < ParameterInfo.Length; i++) { var p = new Parameter(); p.Display = "0.0"; p.Index = (uint)i; p.Name = ParameterNames[i]; p.Steps = 0; p.Value = 0.0; ParameterInfo[i] = p; } LowpassInput = new Lowpass1((float)Samplerate); // Channel A TF1A = new TF1(Samplerate); Stage1A = new LUT(); //Stage1A.ReadFile(@"c:\Randall_stage2_2_tf.txt"); Stage1A.ReadRecord(Tables.Stage2_2TF); Stage1A.Table = Utils.MovingAve(Stage1A.Table, (int)(Stage1A.Table.Length / 100.0)); Stage1A.Table = Tables.Upsample(Stage1A.Table, 100000); TF2A = new TF2(Samplerate); Stage2A = new LUT(); //Stage2A.ReadFile(@"c:\Randall_stage2_2_tf.txt"); Stage2A.ReadRecord(Tables.Stage2_2TF); Stage2A.Table = Utils.MovingAve(Stage2A.Table, (int)(Stage2A.Table.Length / 100.0)); Stage2A.Table = Tables.Upsample(Stage2A.Table, 100000); PostVolumeHpA = new Highpass1((float)Samplerate); TFPresA = new TFPres(Samplerate); TonestackA = new Tonestack((float)Samplerate); // Channel B TF1B = new TF1((float)Samplerate); TF1xB = new TF12((float)Samplerate); Stage1B = new LUT(); //Stage1B.ReadFile(@"C:\Src\_Tree\Audio\jVST\src\jDSP\RaDall\Randall_stage1_cap_simulated_tf.txt"); Stage1B.ReadRecord(Tables.Stage1CapSimulatedTF); Stage1B.Table = Utils.MovingAve(Stage1B.Table, (int)(Stage1B.Table.Length / 200.0)); Stage1B.Table = Tables.Upsample(Stage1B.Table, 100000); TF2B = new TF2((float)Samplerate); Stage2B = new LUT(); //Stage2B.ReadFile(@"C:\Src\_Tree\Audio\jVST\src\jDSP\RaDall\Randall_stage2_simulated_tf.txt"); Stage2B.ReadRecord(Tables.Stage2SimulatedTF); Stage2B.Table = Utils.MovingAve(Stage2B.Table, (int)(Stage2B.Table.Length / 200.0)); Stage2B.Table = Tables.Upsample(Stage2B.Table, 100000); ClipperZenerB = new LUT(); //ClipperZenerB.ReadFile(@"C:\Src\_Tree\Audio\jVST\src\jDSP\RaDall\Randall_zener_tf.txt"); ClipperZenerB.ReadRecord(Tables.ZenerTF); ClipperZenerB.Table = Utils.MovingAve(ClipperZenerB.Table, (int)(ClipperZenerB.Table.Length / 200.0)); ClipperZenerB.Table = Tables.Upsample(ClipperZenerB.Table, 100000); ClipperDiodeB = new LUT(); //ClipperDiodeB.ReadFile(@"C:\Src\_Tree\Audio\jVST\src\jDSP\RaDall\1N914_tf.txt"); ClipperDiodeB.ReadRecord(Tables.D1N914TF); ClipperDiodeB.Table = Utils.MovingAve(ClipperDiodeB.Table, (int)(ClipperDiodeB.Table.Length / 200.0)); ClipperDiodeB.Table = Tables.Upsample(ClipperDiodeB.Table, 100000); TFVolumeB = new TFVolume((float)Samplerate); TFPresB = new TFPres((float)Samplerate); TonestackB = new Tonestack((float)Samplerate); h3 = new Highpass1((float)Samplerate); hipassZenerB = new Highpass1((float)Samplerate); LowpassOutput = new Lowpass1((float)Samplerate); TonestackA.setComponents(0.200e-9f, 0.022e-6f, 0.02e-6f, 1e3f, 500e3f, 47e3f, 500e3f, 20e3f, 500e3f); TonestackB.setComponents(0.200e-9f, 0.022e-6f, 0.02e-6f, 1e3f, 500e3f, 47e3f, 500e3f, 20e3f, 500e3f); SetSampleRate(Samplerate); Editor = new Editor(); Editor.Instance = this; DevInfo.EditorHeight = Editor.Height; DevInfo.EditorWidth = Editor.Width; for(int i = 0; i < ParameterInfo.Length; i++) { SetParam(i, 0.51); } }
/// <summary> /// Accepts an array of Parameters and returns their values in a serialized format. /// </summary> /// <param name="parameters"></param> /// <returns></returns> public static byte[] SerializeParameters(Parameter[] parameters) { parameters = parameters.OrderBy(x => x.Index).ToArray(); string output = ""; foreach (var p in parameters) output += p.Value.ToString(System.Globalization.CultureInfo.InvariantCulture) + ", "; return Encoding.UTF8.GetBytes(output); }
public void InitializeDevice() { DevInfo.DeviceID = "Low Profile - Rodent.V2"; #if DEBUG DevInfo.DeviceID = DevInfo.DeviceID + " - Dev"; #endif DevInfo.Developer = "Valdemar Erlingsson"; DevInfo.EditorHeight = e.Height; DevInfo.EditorWidth = e.Width; DevInfo.HasEditor = true; DevInfo.Name = "Rodent.V2 Beta 4"; DevInfo.ProgramCount = 1; DevInfo.Type = DeviceType.Effect; DevInfo.Version = 1004; DevInfo.VstId = DeviceUtilities.GenerateIntegerId(DevInfo.DeviceID); PortInfo[0].Direction = PortDirection.Input; PortInfo[0].Name = "Mono Input"; PortInfo[0].NumberOfChannels = 1; PortInfo[1].Direction = PortDirection.Output; PortInfo[1].Name = "Stereo Output"; PortInfo[1].NumberOfChannels = 2; for(int i = 0; i < ParameterInfo.Length; i++) { var p = new Parameter(); p.Display = "0.49"; p.Index = (uint)i; p.Name = ParameterNames[i]; p.Steps = 0; p.Value = 0.49; ParameterInfo[i] = p; } Hipass1 = new Highpass1((float)Samplerate); Lowpass1 = new Lowpass1((float)Samplerate); Gain = new TFGain((float)Samplerate); HipassDC = new Highpass1((float)Samplerate); /*Clipper = new LUT(); Clipper.ReadRecord(Tables.D1N914TF.Split('\n')); Clipper.Table = Tables.Upsample(Clipper.Table, 100000);*/ Clipper = new SplineInterpolator(Splines.D1N914TF); /*Clipper2 = new LUT(); Clipper2.ReadRecord(Tables.LEDTF.Split('\n')); Clipper2.Table = Tables.Upsample(Clipper2.Table, 100000);*/ Clipper2 = new SplineInterpolator(Splines.LEDTF); Filter = new Lowpass1((float)Samplerate); Hipass3 = new Highpass1((float)Samplerate); // Frequency of 0.01uF cap + 1k + 1Meg = 7.227 Hz Hipass1.SetParam(0, 10f + (float)Math.Round(ParameterInfo[P_TIGHT].Value) * 300f); // Low pass rolloff because of 1n cap, estimate Lowpass1.SetParam(0, 5000f); // This is the cap after the gain, just some value to remove DC offset HipassDC.SetParam(0, 10f); // Final cutoff frequency ~ 7.7Hz Hipass3.SetParam(0, 7.7f); SetParam(P_ON, 1.0); // initialize all blocks UpdateAll(); e.UpdateParameters(); }