public IAudioStream Generate() { _stream.Clear(); if (_tone != null) { GenerateToneToStream(_tone); } return(_stream); }
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); }