/// <summary>
        /// WARNING: This method may not detect the Arrangment Tuning correctly
        /// <para>Use the Write(Arrangement arr, string outputFile, Platform platform) method to detect tuning correctly ...</para>
        /// </summary>
        // [Obsolete("Deprecated, please use Write(Arrangement arr, string outputFile, Platform platform) method.", false)]
        public static void Write(string inputFile, string outputFile, ArrangementType arrangementType, Platform platform)
        {
            using (var reader = new StreamReader(inputFile))
            {
                var bitConverter = platform.GetBitConverter;
                if (arrangementType == ArrangementType.Vocal)
                {
                    var serializer = new XmlSerializer(typeof(Vocals));
                    var vocals     = (Vocals)serializer.Deserialize(reader);
                    WriteVocalsFile(vocals, outputFile, bitConverter);
                }
                else
                {
                    var serializer = new XmlSerializer(typeof(Song));
                    var song       = (Song)serializer.Deserialize(reader);

                    // HACK: apply Standard E tuning
                    var tuning = new Int16[] { 0, 0, 0, 0, 0, 0 };
                    if (song.Tuning != null)
                    {
                        tuning = song.Tuning.ToArray();
                    }
                    else
                    {
                        var diaMsg = "<WARNING> Arrangement XML contains no tuning element ..." + Environment.NewLine +
                                     "The arrangment will be defaulted to Standard E tuning.";
                        MessageBox.Show(diaMsg, "SngFileWriter Null Tuning ...");
                    }

                    WriteSngFile(song, InstrumentTuningExtensions.GetTuningByOffsets(tuning), arrangementType, outputFile, bitConverter);
                }
            }
        }
        /// <summary>
        /// Preferred Write method
        /// <para>Detects the Arrangment Tuning correctly</para>
        /// </summary>
        /// <param name="arr"></param>
        /// <param name="outputFile"></param>
        /// <param name="platform"></param>
        public static void Write(Arrangement arr, string outputFile, Platform platform)
        {
            using (var reader = new StreamReader(arr.SongXml.File))
            {
                var bitConverter = platform.GetBitConverter;
                if (arr.ArrangementType == ArrangementType.Vocal)
                {
                    var serializer = new XmlSerializer(typeof(Vocals));
                    var vocals     = (Vocals)serializer.Deserialize(reader);
                    WriteVocalsFile(vocals, outputFile, bitConverter);
                }
                else
                {
                    var serializer = new XmlSerializer(typeof(Song));
                    var song       = (Song)serializer.Deserialize(reader);

                    // apply proper fix for null tuning
                    var tuning = new Int16[] { 0, 0, 0, 0, 0, 0 };
                    if (arr.TuningStrings != null)
                    {
                        tuning = arr.TuningStrings.ToArray();
                    }

                    WriteSngFile(song, InstrumentTuningExtensions.GetTuningByOffsets(tuning), arr.ArrangementType, outputFile, bitConverter);
                }
            }
        }
        public static void Write(string inputFile, string outputFile, ArrangementType arrangementType, Platform platform)
        {
            using (var reader = new StreamReader(inputFile))
            {
                var bitConverter = platform.GetBitConverter;
                if (arrangementType == ArrangementType.Vocal)
                {
                    var serializer = new XmlSerializer(typeof(Vocals));
                    var vocals     = (Vocals)serializer.Deserialize(reader);
                    WriteRocksmithVocalsFile(vocals, outputFile, bitConverter);
                }
                else
                {
                    var serializer = new XmlSerializer(typeof(Song));
                    var song       = (Song)serializer.Deserialize(reader);

                    // TODO: song.Tuning is null in toolkit generated RS1 Xml files
                    // HACK: this is only a quick fix of the root problem
                    var tuning = new Int16[] { 0, 0, 0, 0, 0, 0 };
                    if (song.Tuning != null)
                    {
                        tuning = song.Tuning.ToArray();
                    }

                    WriteRocksmithSngFile(song, InstrumentTuningExtensions.GetTuningByOffsets(tuning), arrangementType, outputFile, bitConverter);
                }
            }
        }
Ejemplo n.º 4
0
        public static void Write(string inputFile, string outputFile, ArrangementType arrangementType, Platform platform)
        {
            using (var reader = new StreamReader(inputFile))
            {
                var bitConverter = platform.GetBitConverter;
                if (arrangementType == ArrangementType.Vocal)
                {
                    var serializer = new XmlSerializer(typeof(Vocals));
                    var vocals     = (Vocals)serializer.Deserialize(reader);
                    WriteVocalsFile(vocals, outputFile, bitConverter);
                }
                else
                {
                    var serializer = new XmlSerializer(typeof(Song));
                    var song       = (Song)serializer.Deserialize(reader);

                    // TODO: song.Tuning is null (does not exist in the XML Arrangement)
                    // HACK: apply Standard E tuning
                    var tuning = new Int16[] { 0, 0, 0, 0, 0, 0 };
                    if (song.Tuning != null)
                    {
                        tuning = song.Tuning.ToArray();
                    }
                    else
                    {
                        throw new DataException("<ERROR> Arrangement XML contains no tuning element" + Environment.NewLine +
                                                "The arrangment will be defaulted to Standard E tuning" + Environment.NewLine);
                    }

                    WriteSngFile(song, InstrumentTuningExtensions.GetTuningByOffsets(tuning), arrangementType, outputFile, bitConverter);
                }
            }
        }
Ejemplo n.º 5
0
        public static void Write(string inputFile, string outputFile, ArrangementType arrangementType, Platform platform)
        {
            using (var reader = new StreamReader(inputFile))
            {
                var bitConverter = platform.platform == GamePlatform.Pc
                    ? (EndianBitConverter)EndianBitConverter.Little
                    : (EndianBitConverter)EndianBitConverter.Big;

                if (arrangementType == ArrangementType.Vocal)
                {
                    var serializer = new XmlSerializer(typeof(Vocals));
                    var vocals     = (Vocals)serializer.Deserialize(reader);
                    WriteRocksmithVocalsFile(vocals, outputFile, bitConverter);
                }
                else
                {
                    var serializer = new XmlSerializer(typeof(Song));
                    var song       = (Song)serializer.Deserialize(reader);
                    WriteRocksmithSngFile(song, InstrumentTuningExtensions.GetTuningByOffsets(song.Tuning.ToArray()), arrangementType, outputFile, bitConverter);
                }
            }
        }