Ejemplo n.º 1
0
        public Image Render(WaveStream sampleProvider, IPeakProvider peakProvider, WaveFormRendererSettings settings)
        {
            int bytesPerSample  = (sampleProvider.WaveFormat.BitsPerSample / 8);
            var samples         = sampleProvider.Length / (bytesPerSample);
            var samplesPerPixel = (int)(samples / settings.Width);
            var stepSize        = settings.PixelsPerPeak + settings.SpacerPixels;

            peakProvider.Init((ISampleProvider)sampleProvider, samplesPerPixel * stepSize);
            return(Render(peakProvider, settings));
        }
 public ICanvasImage Render(string selectedFile, IPeakProvider peakProvider, WaveFormRendererSettings settings)
 {
     using (var reader = new MediaFoundationReader(selectedFile))
     {
         int bytesPerSample  = (reader.WaveFormat.BitsPerSample / 8);
         var samples         = reader.Length / (bytesPerSample);
         var samplesPerPixel = (int)(samples / settings.Width);
         var stepSize        = settings.PixelsPerPeak + settings.SpacerPixels;
         peakProvider.Init(reader.ToSampleProvider(), samplesPerPixel * stepSize);
         return(Render(peakProvider, settings));
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="selectedFile"></param>
 /// <param name="peakProvider"></param>
 /// <param name="settings"></param>
 /// <param name="audioFileReader">Like AudioFileReader, it has to inherit both WaveStream and ISampleProvider</param>
 /// <returns></returns>
 public Image Render(string selectedFile, IPeakProvider peakProvider, WaveFormRendererSettings settings, Func <string, WaveStream> audioFileReader)
 {
     using (WaveStream reader = audioFileReader.Invoke(selectedFile))
     {
         int bytesPerSample  = (reader.WaveFormat.BitsPerSample / 8);
         var samples         = reader.Length / (bytesPerSample);
         var samplesPerPixel = (int)(samples / settings.Width);
         var stepSize        = settings.PixelsPerPeak + settings.SpacerPixels;
         peakProvider.Init((ISampleProvider)reader, samplesPerPixel * stepSize);
         return(Render(peakProvider, settings));
     }
 }
Ejemplo n.º 4
0
 public Image Render(string selectedFile, IPeakProvider peakProvider, WaveFormRendererSettings settings)
 {
     using (var reader = new AudioFileReader(selectedFile))
     {
         var bytesPerSample  = reader.WaveFormat.BitsPerSample / 8;
         var samples         = reader.Length / bytesPerSample;
         var samplesPerPixel = (int)(samples / settings.Width);
         var stepSize        = settings.PixelsPerPeak + settings.SpacerPixels;
         peakProvider.Init(reader, samplesPerPixel * stepSize);
         return(Render(peakProvider, settings));
     }
 }
Ejemplo n.º 5
0
 private static Image Render(string selectedFile, IPeakProvider peakProvider, WaveRendererSettings settings)
 {
     using (var reader = new AudioFileReader(selectedFile))
     {
         settings.Width = settings.Width ?? (int)reader.TotalTime.TotalMilliseconds / 2;
         int bytesPerSample  = (reader.WaveFormat.BitsPerSample / 8);
         var samples         = reader.Length / (bytesPerSample);
         var samplesPerPixel = (int)(samples / settings.Width);
         var stepSize        = settings.PixelsPerPeak + settings.SpacerPixels;
         peakProvider.Init(reader, samplesPerPixel * stepSize);
         return(Render(peakProvider, settings));
     }
 }
        public async Task <ICanvasImage> RenderAsync(StorageFile selectedFile, IPeakProvider peakProvider, WaveFormRendererSettings settings)
        {
            var randomAcessStream = await selectedFile.OpenReadAsync();

            using (var reader = new StreamMediaFoundationReader(randomAcessStream.AsStream()))
            {
                int bytesPerSample  = (reader.WaveFormat.BitsPerSample / 8);
                var samples         = reader.Length / (bytesPerSample);
                var samplesPerPixel = (int)(samples / settings.Width);
                var stepSize        = settings.PixelsPerPeak + settings.SpacerPixels;
                peakProvider.Init(reader.ToSampleProvider(), samplesPerPixel * stepSize);
                return(Render(peakProvider, settings));
            }
        }
Ejemplo n.º 7
0
 public Image Render(string selectedFile, IPeakProvider peakProvider, WaveFormRendererSettings settings, CancellationToken?ct = null)
 {
     ct?.ThrowIfCancellationRequested();
     using (var reader = new AudioFileReader(selectedFile))
     {
         int bytesPerSample  = (reader.WaveFormat.BitsPerSample / 8);
         var samples         = reader.Length / (bytesPerSample);
         var samplesPerPixel = (int)(samples / settings.Width);
         var stepSize        = settings.PixelsPerPeak + settings.SpacerPixels;
         ct?.ThrowIfCancellationRequested();
         peakProvider.Init(reader, samplesPerPixel * stepSize);
         return(Render(peakProvider, settings, ct));
     }
 }
Ejemplo n.º 8
0
        private static IList <PeakInfo> GetInfo(IPeakProvider peakProvider, string selectedFile, int pointOnXAccess)
        {
            var settings = new PeakProviderSettings();

            using (var reader = new AudioFileReader(selectedFile))
            {
                int bytesPerSample = (reader.WaveFormat.BitsPerSample / 8);
                settings.Width = pointOnXAccess;
                var samples         = reader.Length / (bytesPerSample);
                var samplesPerPixel = (int)(samples / settings.Width);
                var stepSize        = settings.PixelsPerPeak + settings.SpacerPixels;
                peakProvider.Init(reader, samplesPerPixel * stepSize);
                return(GetInfo(peakProvider, settings));
            }
        }
Ejemplo n.º 9
0
        public Image Render(string selectedFile, IPeakProvider peakProvider, WaveFormRendererSettings settings)
        {
            using (var reader = new AudioFileReader(selectedFile))
            {
                int bytesPerSample = (reader.WaveFormat.BitsPerSample / 8);
                var samples        = reader.Length / (bytesPerSample);

                var values = read(selectedFile, samples);
                var frames = splitToFrames(values);

                var samplesPerPixel = (int)(samples / settings.Width);
                var stepSize        = settings.PixelsPerPeak + settings.SpacerPixels;
                peakProvider.Init(reader, samplesPerPixel * stepSize);
                this.OnReadHandler?.Invoke(reader.WaveFormat, frames);
                return(Render(peakProvider, settings));
            }
        }
Ejemplo n.º 10
0
 public Image Render(string selectedFile, IPeakProvider peakProvider, WaveFormRendererSettings settings, ILogger log)
 {
     Log.Logger = log;
     using (reader = new AudioFileReader(selectedFile))
     {
         int bytesPerSample = (reader.WaveFormat.BitsPerSample / 8);
         Log.Information(rrender + "Bytes Per Sample: {0}", bytesPerSample);
         var samples = reader.Length / (bytesPerSample);
         Log.Information(rrender + "Samples: {0}", samples);
         var samplesPerPixel = (int)(samples / settings.Width);
         Log.Information(rrender + "Samples Per Pixel: {0}", samplesPerPixel);
         var stepSize = settings.PixelsPerPeak + settings.SpacerPixels;
         Log.Information(rrender + "Step Size: {0}", stepSize);
         peakProvider.Init(reader, samplesPerPixel * stepSize);
         return(Render(peakProvider, settings));
     }
 }
        public float[] ArrangeWF(string selectedFile, IPeakProvider peakProvider)
        {
            using (var reader = new AudioFileReader(selectedFile))
            {
                sampleRate     = (reader.WaveFormat.SampleRate);
                samplePerBlock = sampleRate * BLOCKTIMEms / 1000;
                int bytesPerSample = (reader.WaveFormat.BitsPerSample / 8);
                samples           = reader.Length / reader.WaveFormat.BlockAlign;
                waveValuePerBlock = new float[(samples / samplePerBlock) + 1];
                blockAlign        = reader.WaveFormat.BlockAlign;
                //// デバッグ用
                //Console.WriteLine("BlockAlign=             {0}", reader.WaveFormat.BlockAlign);
                //Console.WriteLine("AverageBytesPerSecond = {0}", reader.WaveFormat.AverageBytesPerSecond);
                //Console.WriteLine("SampleRate              {0}", reader.WaveFormat.SampleRate);
                //Console.WriteLine("Channels                {0}", reader.WaveFormat.Channels);
                //Console.WriteLine("ExtraSize               {0}", reader.WaveFormat.ExtraSize);
                //Console.WriteLine("BitsPerSample           {0}", reader.WaveFormat.BitsPerSample);
                //Console.WriteLine("Length                  {0}", reader.Length);

                peakProvider.Init(reader, samplePerBlock * reader.WaveFormat.Channels);
                return(ArrangeWF(peakProvider));
            }
        }