private static byte[] ReadWaveSamples( string file, float volume) { var samples = default(byte[]); var vol = volume > 1.0f ? 1.0f : volume; using (var audio = new AudioFileReader(file) { Volume = vol }) using (var resampler = new MediaFoundationResampler(audio, DefaultOutputFormat)) using (var output = new MemoryStream(51200)) using (var wrap = new WrappingStream(output)) { WaveFileWriter.WriteWavFileToStream(wrap, resampler); wrap.Flush(); wrap.Position = 0; // ヘッダをカットする var raw = wrap.ToArray(); var headerLength = 0; using (var wave = new WaveFileReader(wrap)) { headerLength = (int)(raw.Length - wave.Length); } // ヘッダをスキップした波形データを取得する samples = raw.Skip(headerLength).ToArray(); } return(samples); }
public async void Load() { var dir = DirectoryHelper.FindSubDirectory( @"resources\icon\job"); if (!Directory.Exists(dir)) { return; } await WPFHelper.InvokeAsync(() => { foreach (var job in (JobIDs[])Enum.GetValues(typeof(JobIDs))) { var png = Path.Combine(dir, $"{job}.png"); if (!File.Exists(png)) { continue; } var bmp = default(WriteableBitmap); using (var ms = new WrappingStream(new MemoryStream(File.ReadAllBytes(png)))) { bmp = new WriteableBitmap(BitmapFrame.Create(ms)); } bmp.Freeze(); this.Icons[job] = bmp; } }); this.isLoaded = true; }