public void WriteTrack(string path, string password = null) { using (BinaryWriter writer = new BinaryWriter(File.Open(path, FileMode.Create))) { // TRACK INFO writer.Write(TrackInfo.Name); writer.Write(TrackInfo.Author); writer.Write(TrackInfo.ImageLen); if (TrackInfo.Image != null) { writer.Write(TrackInfo.Image); } writer.Write(TrackInfo.SliderValue); writer.Write(password != null); // write TRUE if password is not null // ASSETS writer.Write(Assets.Count); foreach (var asset in Assets) { var basset = AssetConverter.ConvertToBinaryAsset(asset); if (password != null) { basset.EncryptBytes(password); } basset.WriteBinaryAsset(writer); } } }