IMix FromJsonMix(JsonMix jsonMix, string filename) { IEnumerable<Tuple<Track, double>> tracks = jsonMix .Items.Select(i => Tuple.Create(GetOrCreateTrack(i), i.PlaybackSpeed)); return mixFactory.Create(tracks, filename); }
public async Task WriteAsync(IMix mix, string filename) { if (mix == null) throw new ArgumentNullException("mix"); if (String.IsNullOrWhiteSpace(filename)) throw new ArgumentException("Invalid filename.", "filename"); var jsonMix = new JsonMix { Items = mix.Select(ToJsonItem).ToList(), Comment = FormatComment() }; try { Log.DebugFormat("Saving mix {0} ({1} tracks)...", filename, mix.Count); long numberOfBytesWritten; using (FileStream file = File.Open(filename, FileMode.Create, FileAccess.Write)) using (var writer = new StreamWriter(file)) { string json = await JsonConvert.SerializeObjectAsync( jsonMix, GlobalJsonSettings.Formatting, GlobalJsonSettings.Settings); await writer.WriteAsync(json); numberOfBytesWritten = file.Position; } Log.DebugFormat("Mix saved successfully ({0} bytes).", numberOfBytesWritten); } catch (Exception e) { Log.Error(String.Format("Error saving mix {0}.", filename), e); } }