Example #1
0
        public IAudioStream Generate()
        {
            _stream.Clear();

            if (_tone != null)
            {
                GenerateToneToStream(_tone);
            }

            return(_stream);
        }
Example #2
0
        public void Process(IAudioStream stream)
        {
            if (Power.Value == EPowerStatus.Off)
            {
                stream.Clear();
            }
            else
            {
                // создаем звук на осциляторе А
                var oscAStream = Processor.OscillatorA.Generate();

                // огибающая A
                Processor.EnvelopeA.Process(oscAStream);

                // создаем звук на осциляторе B
                var oscBStream = Processor.OscillatorB.Generate();

                // огибающая B
                Processor.EnvelopeB.Process(oscBStream);

                // смешиваем звук с осциллятора А и B
                MixOscillators(stream, oscAStream, oscBStream);

                // фильтр
                Processor.Filter.Process(stream);

                // эффект дисторшн
                Processor.Distortion.Process(stream);

                // дилэй
                Processor.Delay.Process(stream);

                // клиппинг перед мастером
                Processor.Clip.Process(stream);

                // мастер-обработка
                Processor.Master.Process(stream);

                // скажем лфо что был обработан блок
                Processor.LFOModifier.Process(stream);
            }

            // отправляем результат в осциллограф
            Processor.Oscillograph.Process(stream);
        }