示例#1
0
 public MonoToStereoSource(IWaveStream source)
     : base(source)
 {
     if (source.WaveFormat.Channels != 1)
         throw new ArgumentException("format of source has to be stereo(1 channel)", "source");
     _waveFormat = new WaveFormat(source.WaveFormat.SampleRate, 32, 2, AudioEncoding.IeeeFloat);
 }
示例#2
0
 public static Equalizer Create10BandEqualizer(IWaveStream source)
 {
     return(new Equalizer(source)
     {
         SampleFilters = Create10BandEqFilter(source.WaveFormat.SampleRate, source.WaveFormat.Channels)
     });
 }
示例#3
0
 public PanSource(IWaveStream source)
     : base(source)
 {
     if (source.WaveFormat.Channels != 2)
     {
         throw new ArgumentException("Source has to be stereo.", "source");
     }
 }
示例#4
0
 public MonoToStereoSource(IWaveStream source)
     : base(source)
 {
     if (source.WaveFormat.Channels != 1)
     {
         throw new ArgumentException("format of source has to be stereo(1 channel)", "source");
     }
     _waveFormat = new WaveFormat(source.WaveFormat.SampleRate, 32, 2, AudioEncoding.IeeeFloat);
 }
示例#5
0
        public StereoToMonoSource(IWaveStream source)
            : base(source)
        {
            if (source == null)
                throw new ArgumentNullException("source");
            if (source.WaveFormat.Channels != 2)
                throw new ArgumentException("source has to have 2 channels", "source");

            _waveFormat = new WaveFormat(source.WaveFormat.SampleRate, 32, 1, AudioEncoding.IeeeFloat);
        }
示例#6
0
        protected override void Dispose(bool disposing)
        {
            if (playing)
            {
                Stop();
            }

            (waveStream as IDisposable)?.Dispose();
            waveStream = null;
        }
示例#7
0
        public SampleSourceBase(IWaveStream source)
        {
            if (source == null) throw new ArgumentNullException("source");

            if (source is ISampleSource)
                _source = (source as ISampleSource);
            else
            {
                _source = WaveToSampleBase.CreateConverter(source as IWaveSource);
            }
        }
示例#8
0
 public static TimeSpan GetTime(this IWaveStream source, long bytes)
 {
     if (source == null)
     {
         throw new ArgumentNullException("source");
     }
     if (bytes < 0)
     {
         throw new ArgumentNullException("bytes");
     }
     return(TimeSpan.FromMilliseconds(GetMilliseconds(source, bytes)));
 }
示例#9
0
        public StereoToMonoSource(IWaveStream source)
            : base(source)
        {
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }
            if (source.WaveFormat.Channels != 2)
            {
                throw new ArgumentException("source has to have 2 channels", "source");
            }

            _waveFormat = new WaveFormat(source.WaveFormat.SampleRate, 32, 1, AudioEncoding.IeeeFloat);
        }
示例#10
0
        /// <summary>
        /// Sets the position of a WaveStream as a TimeSpan.
        /// </summary>
        public static void SetPosition(this IWaveStream source, TimeSpan position)
        {
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }
            if (position.TotalMilliseconds < 0)
            {
                throw new ArgumentOutOfRangeException("position");
            }

            var bytes = GetBytes(source, (long)position.TotalMilliseconds);

            source.Position = bytes;
        }
示例#11
0
        public SampleSourceBase(IWaveStream source)
        {
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }

            if (source is ISampleSource)
            {
                _source = (source as ISampleSource);
            }
            else
            {
                _source = WaveToSampleBase.CreateConverter(source as IWaveSource);
            }
        }
示例#12
0
        public SampleDataProvider(IWaveStream source)
        {
            if (!(source is ISampleSource) && source is IWaveSource)
            {
                source = WaveToSampleBase.CreateConverter(source as IWaveSource);
            }
            else if (source is ISampleSource)
            {
            }
            else
            {
                throw new ArgumentException("source has to of type IWaveSource or ISampleSource");
            }

            _source = source as ISampleSource;
            BlockSize = (int)(source.WaveFormat.SampleRate * (40.0 / 1000.0));
            _sampleBuffer = new Queue<float>();
            _sampleBuffer1 = new Queue<float>();
        }
示例#13
0
        public SampleDataProvider(IWaveStream source)
        {
            if (!(source is ISampleSource) && source is IWaveSource)
            {
                source = WaveToSampleBase.CreateConverter(source as IWaveSource);
            }
            else if (source is ISampleSource)
            {
            }
            else
            {
                throw new ArgumentException("source has to of type IWaveSource or ISampleSource");
            }

            _source        = source as ISampleSource;
            BlockSize      = (int)(source.WaveFormat.SampleRate * (40.0 / 1000.0));
            _sampleBuffer  = new Queue <float>();
            _sampleBuffer1 = new Queue <float>();
        }
示例#14
0
        public void Initialize(IWaveStream waveStream)
        {
            this.waveStream = waveStream;
            var format = WaveFormatExtensible.Make(waveStream.Format);

            wasapi.Initialize(waveStream.Format);
            if (!format.Equals(OutFormat))
            {
                var e = new ResampleEventArgs(waveStream, OutFormat);
                NotifyResample(e);
                this.waveStream = e.Source;
            }

            renderClient = wasapi.AudioClient.AudioRenderClient;
            if (wasapi.EventSync)
            {
                wasapi.AudioClient.SetEventHandle(eventObject.SafeWaitHandle.DangerousGetHandle());
            }
            bufferFrames = wasapi.AudioClient.BufferSize;
        }
示例#15
0
        public static long GetBytes(this IWaveStream source, long milliseconds)
        {
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }
            if (milliseconds < 0)
            {
                throw new ArgumentOutOfRangeException("milliseconds");
            }

            if (source is IWaveSource)
            {
                return(source.WaveFormat.MillisecondsToBytes(milliseconds));
            }
            else if (source is ISampleSource)
            {
                return(source.WaveFormat.MillisecondsToBytes(milliseconds / 4));
            }
            else
            {
                throw new NotSupportedException("IWaveStream-Subtype is not supported");
            }
        }
示例#16
0
 public FadeInOut(IWaveStream source, float initialVolume)
     : base(source)
 {
     base.Volume = initialVolume;
 }
示例#17
0
 public GainSource(IWaveStream source)
     : base(source)
 {
     Gain = 1;
 }
 public SingleBlockNotificationStream(IWaveStream source)
     : base(source)
 {
 }
示例#19
0
 public NotificationSource(IWaveStream source)
     : base(source)
 {
     BlockCount = (int)(source.WaveFormat.SampleRate * (40.0 / 1000.0));
     _buffer    = new Queue <float>(BlockCount * source.WaveFormat.Channels);
 }
示例#20
0
 public AutoGain(IWaveStream source)
     : base(source)
 {
     Gain = 1f;
 }
示例#21
0
 public PanSource(IWaveStream source)
     : base(source)
 {
     if (source.WaveFormat.Channels != 2)
         throw new ArgumentException("Source has to be stereo.", "source");
 }
示例#22
0
 public SimpleNotificationSource(IWaveStream source)
     : base(source)
 {
 }
示例#23
0
 public NotificationSource(IWaveStream source)
     : base(source)
 {
     BlockCount = (int)(source.WaveFormat.SampleRate * (40.0 / 1000.0));
     _buffer = new Queue<float>(BlockCount * source.WaveFormat.Channels);
 }
示例#24
0
 public static Equalizer Create10BandEqualizer(IWaveStream source)
 {
     return new Equalizer(source) { SampleFilters = Create10BandEqFilter(source.WaveFormat.SampleRate, source.WaveFormat.Channels) };
 }
示例#25
0
 public FadeInOut(IWaveStream source, float initialVolume)
     : base(source)
 {
     base.Volume = initialVolume;
 }
示例#26
0
 public static long GetBytes(this IWaveStream source, TimeSpan timespan)
 {
     return(GetBytes(source, (long)timespan.TotalMilliseconds));
 }
 public SingleBlockNotificationStream(IWaveStream source)
     : base(source)
 {
 }
示例#28
0
 public ResampleEventArgs(IWaveStream Source, WaveFormat OutFormat)
 {
     this.Source    = Source;
     this.OutFormat = OutFormat;
 }
示例#29
0
 public AutoGain(IWaveStream source)
     : base(source)
 {
     Gain = 1f;
 }
 public PlaybackStoppedEventArgs(IWaveStream waveStream, Exception exception = null) : base(exception)
 {
     WaveStream = waveStream;
 }
示例#31
0
 public Equalizer(IWaveStream source)
     : base(source)
 {
     _sampleFilters = new EqFilterCollection(source.WaveFormat.Channels);
 }
 public SimpleNotificationSource(IWaveStream source)
     : base(source)
 {
 }
示例#33
0
 public VolumeSource(IWaveStream source)
     : base(source)
 {
 }
示例#34
0
 public Equalizer(IWaveStream source)
     : base(source)
 {
     _sampleFilters = new EqFilterCollection(source.WaveFormat.Channels);
 }
示例#35
0
 /// <summary>
 /// Gets the length of a WaveStream as a TimeSpan.
 /// </summary>
 public static TimeSpan GetLength(this IWaveStream source)
 {
     return(GetTime(source, source.Length));
 }
示例#36
0
 public VolumeSource(IWaveStream source)
     : base(source)
 {
 }
示例#37
0
 /// <summary>
 /// Gets the position of a WaveStream as a TimeSpan.
 /// </summary>
 public static TimeSpan GetPosition(this IWaveStream source)
 {
     return(GetTime(source, source.Position));
 }
示例#38
0
 /// <summary>
 /// Creates a new instance of the <see cref="PeakMeter"/> class.
 /// </summary>
 /// <param name="source"></param>
 public PeakMeter(IWaveStream source)
     : base(source)
 {
     ChannelPeakValues = new float[WaveFormat.Channels];
     BlocksToProcess   = source.WaveFormat.SampleRate / 4;
 }
示例#39
0
 public Mp3Stream(IWaveStream waveStream, IProgressReporter progressReporter, IOutputDirectoryProvider outputDirectoryProvider)
 {
     this.waveStream              = waveStream;
     this.progressReporter        = progressReporter;
     this.outputDirectoryProvider = outputDirectoryProvider;
 }
示例#40
0
 /// <summary>
 /// Creates a new instance of the <see cref="PeakMeter"/> class.
 /// </summary>
 /// <param name="source"></param>
 public PeakMeter(IWaveStream source)
     : base(source)
 {
     ChannelPeakValues = new float[WaveFormat.Channels];
     BlocksToProcess = source.WaveFormat.SampleRate / 4;
 }
示例#41
0
 public GainSource(IWaveStream source)
     : base(source)
 {
     Gain = 1;
 }