예제 #1
0
        /// <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();
        }
예제 #2
0
        /// <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;
        }