TF to emulate effects of limited size bypass cap (0.47uF)
Inheritance: AudioLib.Modules.TransferVariable
コード例 #1
0
ファイル: RXG100.cs プロジェクト: v0dka/SharpSoundPlugins
        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);
            }
        }
コード例 #2
0
        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      = 1100;
            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);
            }
        }
コード例 #3
0
        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);
            }
        }