/// <summary> /// Инициализирует новый объект класса Routing, принадлежащий переданному плагину /// и имеющий переданный префикс названия параметров. /// </summary> /// <param name="plugin">Плагин, которому принадлежит создаваемый объект.</param> /// <param name="parameterPrefix">Префикс названия параметров.</param> public Routing(Plugin plugin, string parameterPrefix = "M_") : base(plugin, parameterPrefix) { VoicesManager = new VoicesManager(plugin, "M_"); Downsampler = new Downsampler(); DistortionManager = new DistortionManager(plugin, "DS_"); DelayManager = new DelayManager(plugin, "DL_"); plugin.MidiProcessor.NoteOn += MidiProcessor_NoteOn; plugin.MidiProcessor.NoteOff += MidiProcessor_NoteOff; InitializeParameters(); }
/// <summary> /// Генерация новых выходных данных. /// </summary> /// <param name="left">Левый канал выходного сигнала.</param> /// <param name="right">Правый канал выходного сигнала.</param> public void Process(out float left, out float right) { // Сглаживание значений параметров. masterVolumeFilter.Process(); for (int i = 0; i < Downsampler.Order; ++i) { var voicesOutput = VoicesManager.Process(); var saturationOutput = DistortionManager.Process(voicesOutput); samplesForOversampling[i] = saturationOutput; } var output = (float)Downsampler.Process(samplesForOversampling); DelayManager.Process(output, output, out left, out right); left *= masterVolume; right *= masterVolume; }