Ejemplo n.º 1
0
        public Flanger(int sampleRate, double minDelay, double maxDelay)
        {
            if (minDelay > maxDelay)
            {
                double m = minDelay;
                minDelay = maxDelay;
                maxDelay = m;
            }
            LfoDescriptor description = new LfoDescriptor();

            this.lfo = new Lfo();
            this.lfo.QuickSetup(sampleRate, description);

            this.baseDelay = (int)(sampleRate * (maxDelay - minDelay));
            this.minDelay  = (int)(sampleRate * minDelay);

            int size = (int)(sampleRate * maxDelay) + 1;

            this.inputBuffer1  = new float[size];
            this.outputBuffer1 = new float[size];
            this.position1     = 0;

            this.inputBuffer2  = new float[size];
            this.outputBuffer2 = new float[size];
            this.position2     = 0;

            this.fBack = .15f;
            this.wMix  = .5f;
            this.dMix  = .5f;
        }
Ejemplo n.º 2
0
        public override void Load(DescriptorList description, AssetManager assets)
        {
            //read in sfz params
            CustomDescriptor sfzConfig = description.FindCustomDescriptor("sfzi");

            exTarget    = (int)sfzConfig.Objects[0];
            exGroup     = (int)sfzConfig.Objects[1];
            sfzVolume   = (float)sfzConfig.Objects[2];
            sfzPan      = new PanComponent((float)sfzConfig.Objects[3], PanFormulaEnum.Neg3dBCenter);
            ampKeyTrack = (float)sfzConfig.Objects[4];
            ampRootKey  = (byte)sfzConfig.Objects[5];
            ampVelTrack = (float)sfzConfig.Objects[6];
            //read in the generator info
            GeneratorDescriptor gdes = description.GenDescriptions[0];

            if (gdes.SamplerType != WaveformEnum.SampleData)
            {
                throw new Exception("Sfz can only support sample data generators.");
            }
            gen = gdes.ToGenerator(assets);
            //read in the envelope info
            ptch_env = description.EnvelopeDescriptions[0];
            fltr_env = description.EnvelopeDescriptions[1];
            amp_env  = description.EnvelopeDescriptions[2];
            //read in the lfo info
            ptch_lfo = description.LfoDescriptions[0];
            fltr_lfo = description.LfoDescriptions[1];
            amp_lfo  = description.LfoDescriptions[2];
            //read in the filter info
            fltr = description.FilterDescriptions[0];
        }
Ejemplo n.º 3
0
 public void QuickSetup(int sampleRate, LfoDescriptor lfoInfo)
 {
     _generator = lfoInfo.Generator;
     _delayTime = (int)(sampleRate * lfoInfo.DelayTime);
     Frequency  = lfoInfo.Frequency;
     _increment = _generator.Period * Frequency / sampleRate;
     Depth      = lfoInfo.Depth;
     Reset();
 }
Ejemplo n.º 4
0
 private void LoadLfos(Sf2Region region)
 {
     mod_lfo           = new LfoDescriptor();
     mod_lfo.DelayTime = (float)Math.Pow(2, region.Generators[(int)GeneratorEnum.DelayModulationLFO] / 1200.0);
     mod_lfo.Frequency = (float)(Math.Pow(2, region.Generators[(int)GeneratorEnum.FrequencyModulationLFO] / 1200.0) * 8.176);
     mod_lfo.Generator = AudioSynthesis.Bank.Components.Generators.Generator.DefaultSine;
     vib_lfo           = new LfoDescriptor();
     vib_lfo.DelayTime = (float)Math.Pow(2, region.Generators[(int)GeneratorEnum.DelayVibratoLFO] / 1200.0);
     vib_lfo.Frequency = (float)(Math.Pow(2, region.Generators[(int)GeneratorEnum.FrequencyVibratoLFO] / 1200.0) * 8.176);
     vib_lfo.Generator = AudioSynthesis.Bank.Components.Generators.Generator.DefaultSine;
 }
Ejemplo n.º 5
0
 private void LoadSfzLfos(SfzRegion region)
 {
     LfoDescriptions              = new LfoDescriptor[3];
     LfoDescriptions[0]           = new LfoDescriptor();
     LfoDescriptions[0].DelayTime = region.pitchLfoDelay; //make sure pitch lfo is enabled for midi mod event
     LfoDescriptions[0].Frequency = region.pitchLfoFrequency > 0 ? region.pitchLfoFrequency : (float)Synthesizer.DefaultLfoFrequency;
     LfoDescriptions[0].Depth     = region.pitchLfoDepth;
     LfoDescriptions[1]           = new LfoDescriptor();
     LfoDescriptions[1].DelayTime = region.filterLfoDelay;
     LfoDescriptions[1].Frequency = region.filterLfoFrequency;
     LfoDescriptions[1].Depth     = region.filterLfoDepth;
     LfoDescriptions[2]           = new LfoDescriptor();
     LfoDescriptions[2].DelayTime = region.ampLfoDelay;
     LfoDescriptions[2].Frequency = region.ampLfoFrequency;
     LfoDescriptions[2].Depth     = (float)SynthHelper.DBtoLinear(region.ampLfoDepth);
 }
Ejemplo n.º 6
0
        public override void Load(DescriptorList description, AssetManager assets)
        {
            CustomDescriptor fmConfig = description.FindCustomDescriptor("fm2c");

            cIndex   = (double)fmConfig.Objects[0];
            mIndex   = (double)fmConfig.Objects[1];
            feedBack = (double)fmConfig.Objects[2];
            sync     = GetSyncModeFromString((string)fmConfig.Objects[3]);
            if (description.GenDescriptions[0].LoopMethod != LoopModeEnum.Continuous || description.GenDescriptions[1].LoopMethod != LoopModeEnum.Continuous)
            {
                throw new Exception("Fm2 patches must have continuous generators with wrapping bounds.");
            }
            cGen = description.GenDescriptions[0].ToGenerator(assets);
            mGen = description.GenDescriptions[1].ToGenerator(assets);
            cEnv = description.EnvelopeDescriptions[0];
            mEnv = description.EnvelopeDescriptions[1];
            lfo  = description.LfoDescriptions[0];
        }
Ejemplo n.º 7
0
        public DescriptorList(StreamReader reader)
        {
            List <EnvelopeDescriptor>  envList  = new List <EnvelopeDescriptor>();
            List <FilterDescriptor>    fltrList = new List <FilterDescriptor>();
            List <LfoDescriptor>       lfoList  = new List <LfoDescriptor>();
            List <GeneratorDescriptor> genList  = new List <GeneratorDescriptor>();
            List <CustomDescriptor>    cList    = new List <CustomDescriptor>();
            List <string> descList = new List <string>();

            while (!reader.EndOfStream)
            {
                string tag = ReadNextTag(reader, descList);
                switch (tag)
                {
                case "envelope":
                {
                    EnvelopeDescriptor env = new EnvelopeDescriptor();
                    env.Read(descList.ToArray());
                    envList.Add(env);
                    break;
                }

                case "generator":
                {
                    GeneratorDescriptor gen = new GeneratorDescriptor();
                    gen.Read(descList.ToArray());
                    genList.Add(gen);
                    break;
                }

                case "filter":
                {
                    FilterDescriptor fltr = new FilterDescriptor();
                    fltr.Read(descList.ToArray());
                    fltrList.Add(fltr);
                    break;
                }

                case "lfo":
                {
                    LfoDescriptor lfo = new LfoDescriptor();
                    lfo.Read(descList.ToArray());
                    lfoList.Add(lfo);
                    break;
                }

                default:
                    if (!tag.Equals(string.Empty))
                    {
                        CustomDescriptor cus = new CustomDescriptor(tag, 0);
                        cus.Read(descList.ToArray());
                        cList.Add(cus);
                    }
                    break;
                }
                descList.Clear();
            }
            EnvelopeDescriptions = envList.ToArray();
            FilterDescriptions   = fltrList.ToArray();
            LfoDescriptions      = lfoList.ToArray();
            GenDescriptions      = genList.ToArray();
            CustomDescriptions   = cList.ToArray();
        }
Ejemplo n.º 8
0
        public DescriptorList(BinaryReader reader)
        {
            List <EnvelopeDescriptor>  envList  = new List <EnvelopeDescriptor>();
            List <FilterDescriptor>    fltrList = new List <FilterDescriptor>();
            List <LfoDescriptor>       lfoList  = new List <LfoDescriptor>();
            List <GeneratorDescriptor> genList  = new List <GeneratorDescriptor>();
            List <CustomDescriptor>    cList    = new List <CustomDescriptor>();
            int count = reader.ReadInt16();

            for (int x = 0; x < count; x++)
            {
                string id   = new string(IOHelper.Read8BitChars(reader, 4));
                int    size = reader.ReadInt32();
                switch (id.ToLower())
                {
                case EnvelopeDescriptor.ID:
                {
                    EnvelopeDescriptor env = new EnvelopeDescriptor();
                    env.Read(reader);
                    envList.Add(env);
                    break;
                }

                case GeneratorDescriptor.ID:
                {
                    GeneratorDescriptor gen = new GeneratorDescriptor();
                    gen.Read(reader);
                    genList.Add(gen);
                    break;
                }

                case FilterDescriptor.ID:
                {
                    FilterDescriptor fltr = new FilterDescriptor();
                    fltr.Read(reader);
                    fltrList.Add(fltr);
                    break;
                }

                case LfoDescriptor.ID:
                {
                    LfoDescriptor lfo = new LfoDescriptor();
                    lfo.Read(reader);
                    lfoList.Add(lfo);
                    break;
                }

                default:
                {
                    CustomDescriptor cus = new CustomDescriptor(id, size);
                    cus.Read(reader);
                    cList.Add(cus);
                    break;
                }
                }
            }
            EnvelopeDescriptions = envList.ToArray();
            FilterDescriptions   = fltrList.ToArray();
            LfoDescriptions      = lfoList.ToArray();
            GenDescriptions      = genList.ToArray();
            CustomDescriptions   = cList.ToArray();
        }
Ejemplo n.º 9
0
 public override void Load(DescriptorList description, AssetManager assets)
 {
     gen = description.GenDescriptions[0].ToGenerator(assets);
     env = description.EnvelopeDescriptions[0];
     lfo = description.LfoDescriptions[0];
 }