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 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.º 3
0
 public VoiceParameters()
 {
     blockBuffer = new float[Synthesizer.DefaultBlockSize];
     //create default number of each component
     pData           = new UnionData[Synthesizer.MaxVoiceComponents];
     generatorParams = new GeneratorParameters[Synthesizer.MaxVoiceComponents];
     envelopes       = new Envelope[Synthesizer.MaxVoiceComponents];
     filters         = new Filter[Synthesizer.MaxVoiceComponents];
     lfos            = new Lfo[Synthesizer.MaxVoiceComponents];
     //initialize each component
     for (int x = 0; x < Synthesizer.MaxVoiceComponents; x++)
     {
         generatorParams[x] = new GeneratorParameters();
         envelopes[x]       = new Envelope();
         filters[x]         = new Filter();
         lfos[x]            = new Lfo();
     }
 }
Ejemplo n.º 4
0
 public VoiceParameters()
 {
     BlockBuffer = new SampleArray(SynthConstants.DefaultBlockSize);
     //create default number of each component
     PData           = new UnionData[SynthConstants.MaxVoiceComponents];
     GeneratorParams = new GeneratorParameters[SynthConstants.MaxVoiceComponents];
     Envelopes       = new Envelope[SynthConstants.MaxVoiceComponents];
     Filters         = new Filter[SynthConstants.MaxVoiceComponents];
     Lfos            = new Lfo[SynthConstants.MaxVoiceComponents];
     //initialize each component
     for (int x = 0; x < SynthConstants.MaxVoiceComponents; x++)
     {
         GeneratorParams[x] = new GeneratorParameters();
         Envelopes[x]       = new Envelope();
         Filters[x]         = new Filter();
         Lfos[x]            = new Lfo();
     }
 }
Ejemplo n.º 5
0
 public Lfo[] lfos;             //set by parameters (quicksetup)
 public VoiceParameters(Synthesizer synth)
 {
     this.synth  = synth;
     blockBuffer = new float[Synthesizer.DefaultBlockSize];
     //create default number of each component
     mixing          = new float[Synthesizer.MaxVoiceComponents];
     counters        = new double[Synthesizer.MaxVoiceComponents];
     generatorParams = new GeneratorParameters[Synthesizer.MaxVoiceComponents];
     generators      = null; //since this is set directly there is no need to initialize
     envelopes       = new Envelope[Synthesizer.MaxVoiceComponents];
     filters         = new Filter[Synthesizer.MaxVoiceComponents];
     lfos            = new Lfo[Synthesizer.MaxVoiceComponents];
     //initialize each component
     for (int x = 0; x < Synthesizer.MaxVoiceComponents; x++)
     {
         generatorParams[x] = new GeneratorParameters();
         envelopes[x]       = new Envelope();
         filters[x]         = new Filter();
         lfos[x]            = new Lfo();
     }
 }
Ejemplo n.º 6
0
        public OscFMProgrammer(string name, Oscillator osc, EmptyMonoComponent emptyFMSource, AdsrEnvelope env1, AdsrEnvelope env2, Lfo lfo1, Lfo lfo2)
        {
            #region Require

            if (osc == null)
            {
                throw new ArgumentNullException("osc");
            }
            else if (emptyFMSource == null)
            {
                throw new ArgumentNullException("emptyFMSource");
            }
            else if (env1 == null)
            {
                throw new ArgumentNullException("env1");
            }
            else if (env2 == null)
            {
                throw new ArgumentNullException("env2");
            }
            else if (lfo1 == null)
            {
                throw new ArgumentNullException("lfo1");
            }
            else if (lfo2 == null)
            {
                throw new ArgumentNullException("lfo2");
            }

            #endregion

            this.name = name;
            this.osc = osc;
            this.emptyFMSource = emptyFMSource;
            this.env1 = env1;
            this.env2 = env2;
            this.lfo1 = lfo1;
            this.lfo2 = lfo2;
        }
Ejemplo n.º 7
0
        private void Initialize(SampleRate sampleRate, StereoBuffer buffer)
        {
            emptyFMModulator = new EmptyMonoComponent(sampleRate, new MonoBuffer(0));

            slewLimiter = new SlewLimiter(sampleRate, new MonoBuffer(0), "Portamento");
            slewLimiter.SynthesizeReplaceEnabled = true;

            envelope1 = new AdsrEnvelope(sampleRate, new MonoBuffer(0), "Envelope 1");
            envelope1.SynthesizeReplaceEnabled = true;

            envelope2 = new AdsrEnvelope(sampleRate, new MonoBuffer(0), "Envelope 2");
            envelope2.SynthesizeReplaceEnabled = true;

            lfo1 = new Lfo(sampleRate, new MonoBuffer(0), "LFO 1");
            lfo1.SynthesizeReplaceEnabled = true;

            lfo2 = new Lfo(sampleRate, new MonoBuffer(0), "LFO 2");
            lfo2.SynthesizeReplaceEnabled = true;

            Wavetable wave = Wavetable.Load("Sawtooth");

            osc1 = new Oscillator(sampleRate, new MonoBuffer(0), "Oscillator 1", wave, emptyFMModulator, slewLimiter);
            osc1.SynthesizeReplaceEnabled = true;

            osc2 = new Oscillator(sampleRate, new MonoBuffer(0), "Oscillator 2", wave, emptyFMModulator, slewLimiter);
            osc2.SynthesizeReplaceEnabled = true;

            filter = new StateVariableFilter(sampleRate, new MonoBuffer(0), "State Variable Filter", osc1, osc2, envelope2, lfo2, envelope1);
            filter.SynthesizeReplaceEnabled = true;

            converter = new MonoToStereoConverter(sampleRate, buffer, filter);
            converter.SynthesizeReplaceEnabled = false;

            oscWaveProgrammer1 = new OscWaveProgrammer("Oscillator 1", osc1);
            oscWaveProgrammer2 = new OscWaveProgrammer("Oscillator 2", osc2);

            oscFMProgrammer1 = new OscFMProgrammer("Oscillator 1", osc1, emptyFMModulator, envelope1, envelope2, lfo1, lfo2);
            oscFMProgrammer2 = new OscFMProgrammer("Oscillator 2", osc2, emptyFMModulator, envelope1, envelope2, lfo1, lfo2);

            AddComponent(emptyFMModulator);
            AddComponent(slewLimiter);
            AddComponent(osc1);
            AddComponent(osc2);
            AddComponent(envelope1);
            AddComponent(envelope2);
            AddComponent(lfo1);
            AddComponent(lfo2);
            AddComponent(filter);
            AddComponent(converter);

            AddParameters(slewLimiter);
            AddParameters(osc1);
            AddParameters(oscWaveProgrammer1);
            AddParameters(oscFMProgrammer1);
            AddParameters(osc2);
            AddParameters(oscWaveProgrammer2);
            AddParameters(oscFMProgrammer2);
            AddParameters(envelope1);
            AddParameters(envelope2);
            AddParameters(lfo1);
            AddParameters(lfo2);
            AddParameters(filter);

            AddBendable(osc1);
            AddBendable(osc2);

            AddControllable(lfo1);
            AddControllable(lfo2);
        }