示例#1
0
        public void Update(EqualizerParams eqParams)
        {
            updated = true;

            leftBands  = eqParams.LeftChannel.ToArray();
            rightBands = eqParams.RightChannel.ToArray();
        }
        public ISampleProvider SampleProvider(ISampleProvider sourceProvider)
        {
            EqualizerParams eqParams = GetEqParams();

            float adjustVolume = CalcAdjustVolumeFromEq(eqParams);

            adjustedSampleProvider = new ChannelsVolumeSampleProvider(sourceProvider)
            {
                LeftChannelVolumeInDB  = adjustVolume,
                RightChannelVolumeInDB = adjustVolume
            };

            return(equalizerSampleProvider = new EqualizerSampleProvider(adjustedSampleProvider, eqParams));
        }
        private float CalcAdjustVolumeFromEq(EqualizerParams eqParams)
        {
            float maxEqGain = 0;

            foreach (EqualizerBand eb in eqParams.LeftChannel)
            {
                if (eb.Gain > 0)
                {
                    maxEqGain = Math.Max(eb.Gain, maxEqGain);
                }
            }
            foreach (EqualizerBand eb in eqParams.RightChannel)
            {
                if (eb.Gain > 0)
                {
                    maxEqGain = Math.Max(eb.Gain, maxEqGain);
                }
            }

            return(-maxEqGain);
        }
示例#4
0
 public EqualizerSampleProvider(ISampleProvider sourceProvider, EqualizerParams eqParams) :
     this(sourceProvider, eqParams.LeftChannel.ToArray(), eqParams.RightChannel.ToArray())
 {
 }