Beispiel #1
0
        public string CreateJsonProjectFromData()
        {
            var project = new ProjectDtoV1();

            project.SampleTracks = Tracks.Select(track =>
            {
                var fileDto = new SampleFileDtoV1();

                if (track.SoundBuilder.Input != null)
                {
                    fileDto.Checksum = track.SoundBuilder.Input.Checksum;
                    fileDto.FileType = track.SoundBuilder.Input.FileType;
                    fileDto.Path     = track.SoundBuilder.Input.Path;
                }

                var trackDto = new SampleTrackDtoV1();

                trackDto.File   = fileDto;
                trackDto.Pan    = track.SoundBuilder.Pan;
                trackDto.Volume = track.SoundBuilder.Volume;
                trackDto.Pitch  = track.SoundBuilder.Pitch;
                trackDto.PlayAt = track.PlayAtTick;

                return(trackDto);
            })
                                   .ToList();

            project.MasterTrack = new MasterTrackDtoV1();

            project.MasterTrack.Pan               = MasterTrackPan;
            project.MasterTrack.Pitch             = MasterTrackPitch;
            project.MasterTrack.Volume            = MasterTrackVolume;
            project.MasterTrack.TransportPosition = MasterTrackTransportPosition;
            project.MasterTrack.Playing           = MasterTrackPlaying;
            project.MasterTrack.BPM               = MasterTrackBpm;

            string projectAsJson = JsonConvert.SerializeObject(project);

            return(projectAsJson);
        }
Beispiel #2
0
        public static IStorageFileEx FromDto(SampleFileDtoV1 sampleFileDtoV1)
        {
            if (sampleFileDtoV1 == null)
            {
                return(null);
            }

            if (string.IsNullOrEmpty(sampleFileDtoV1.Path))
            {
                return(null);
            }

            try
            {
                if (sampleFileDtoV1.FileType == FileType.Extern)
                {
                    //IEnumerable<ExternalStorageDevice> storageAssets =
                    //    Task.Run(async () => await ExternalStorage.GetExternalStorageDevicesAsync())
                    //        .Result;

                    //ExternalStorageDevice storageDevice = storageAssets.FirstOrDefault();

                    //if (storageDevice != null)
                    //{
                    //    ExternalStorageFile file =
                    //        Task.Run(async () => await storageDevice.GetFileAsync(sampleFileDtoV1.Path))
                    //            .Result;

                    //    return new ExternalStorageFileEx(file);
                    //}
                }

                if (sampleFileDtoV1.FileType == FileType.Normal)
                {
                    StorageFile file = null;
                    try
                    {
                        file = Task.Run(async() => await StorageFile.GetFileFromPathAsync(sampleFileDtoV1.Path)).Result;
                    }
                    catch (Exception)
                    {
                        var splittedPath = sampleFileDtoV1.Path.Split('\\').ToList();

                        //special logic for new versions of app (assets folder may be corrupted)
                        if (splittedPath.Contains("Assets") && splittedPath.Contains("Samples"))
                        {
                            var list = new List <string> {
                                Package.Current.InstalledLocation.Path
                            };

                            list.AddRange(splittedPath.SkipWhile(s => s != "Assets").ToList());

                            var newPath = Path.Combine(list.ToArray());

                            file = Task.Run(async() => await StorageFile.GetFileFromPathAsync(newPath)).Result;
                        }
                    }


                    return(new StorageFileEx(file));
                }
            }
            catch
            {
            }

            return(null);
        }