Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
            }
        }