Ejemplo n.º 1
0
        public void PlayNode()
        {
            if (currentStep == endStep)
            {
                currentStep = 0;
            }

            AdsrSampleProvider sample = sequencer.GenerateSampleProvider(currentStep);

            mainMixer.AddMixerInput(sample);

            Timer timer2 = new Timer(sequencer.sequencerNode[currentStep].GateTime)
            {
                AutoReset = false,
                Enabled   = true
            };

            timer2.Elapsed += (a, b) =>
            {
                StopNode(sample);
                timer2.Dispose();
            };

            currentStep++;
        }
Ejemplo n.º 2
0
        public void PlayNode()
        {
            if (CurrentStep == endStep)
            {
                CurrentStep = 0;
            }
            // Loop thru each sequencer and play the node at the current step.
            for (int i = 0; i < _sequencers.Count(); i++)
            {
                if (_sequencers[i].Active == true && _sequencers[i].GetSequencerNode(CurrentStep).Active == true) // Check if sequencer or node is active.
                {
                    AdsrSampleProvider sample = _sequencers[i].GenerateSampleProvider(CurrentStep);
                    mainMixer.AddMixerInput(sample);
                    Timer timer2 = new Timer(_sequencers[i].sequencerNode[CurrentStep].GateTime)
                    {
                        AutoReset = false,
                        Enabled   = true
                    };
                    timer2.Elapsed += (a, b) =>
                    {
                        StopNode(sample);
                        timer2.Dispose();
                    };
                }
            }

            CurrentStep++;
        }
Ejemplo n.º 3
0
        public AdsrSampleProvider GenerateSampleProvider(int i)
        {
            SequencerNode   node   = sequencerNode[i];
            SignalGenerator signal = new SignalGenerator(GlobalDef.SampleRate, GlobalDef.Channels);

            signal.Frequency = node.Frequency;
            signal.Gain      = node.Gain * Gain;
            signal.Type      = SignalGeneratorType;
            AdsrSampleProvider adsr = new AdsrSampleProvider(signal);

            adsr.AttackSeconds  = _attack;
            adsr.ReleaseSeconds = _release;
            return(adsr);
        }
Ejemplo n.º 4
0
 public void StopNode(AdsrSampleProvider sample)
 {
     sample.Stop();
     //mainMixer.RemoveMixerInput(sample);
 }