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)); } }
/// <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)); } }
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)); } }
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)); } }
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)); } }
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)); } }
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)); } }
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)); } }