Пример #1
0
 public CopiedTrack(ACB_Waveform waveform, AFS2_Entry awbEntry)
 {
     TrackBytes = awbEntry?.bytes;
     Streaming  = (bool)waveform?.Streaming;
     Loop       = (waveform?.LoopFlag == 0) ? false : true;
     encodeType = waveform.EncodeType;
 }
Пример #2
0
 /// <summary>
 /// Add a AWB entry.
 /// </summary>
 /// <param name="afs2Entry">The afs2Entry to add. (ID will be automatically generated and returned)</param>
 /// <param name="useExisting">If an identical afs2Entry exists, then reuse that.</param>
 /// <returns>The Awb ID assigned to the entry.</returns>
 public ushort AddAwbEntry(AFS2_Entry afs2Entry, bool useExisting = true)
 {
     return(AcbFile.AudioTracks.AddEntry(afs2Entry, useExisting));
 }
Пример #3
0
        public void ExtractTrack(AFS2_Entry entry, string name, FileType format)
        {
            SaveFileDialog saveDialog = new SaveFileDialog();

            saveDialog.Title = "Extract track...";

            if (format != FileType.Hca && format != FileType.Adx && format != FileType.Wave && format != FileType.Dsp)
            {
                saveDialog.Filter = "Binary file |*.bin;";
            }
            else
            {
                saveDialog.Filter = "WAV |*.wav; |HCA |*.hca; |ADX |*.adx; |Nintendo DSP |*.dsp;";
            }

            saveDialog.AddExtension = true;
            saveDialog.FileName     = name;

            if (saveDialog.ShowDialog() == true)
            {
                if (string.IsNullOrWhiteSpace(saveDialog.FileName))
                {
                    return;
                }
                FileType outputType = FileType.NotSet;

                switch (System.IO.Path.GetExtension(saveDialog.FileName).ToLower())
                {
                case ".hca":
                    outputType = FileType.Hca;
                    break;

                case ".adx":
                    outputType = FileType.Adx;
                    break;

                case ".atrac9":
                    outputType = FileType.Atrac9;
                    break;

                case ".dsp":
                    outputType = FileType.Dsp;
                    break;

                case ".wav":
                    outputType = FileType.Wave;
                    break;
                }

                if (outputType == FileType.NotSet)
                {
                    File.WriteAllBytes(saveDialog.FileName, entry.bytes);
                }
                else
                {
                    using (MemoryStream stream = new MemoryStream(entry.bytes))
                    {
                        byte[] bytes = ConvertStream.ConvertFile(new Options(), stream, format, outputType);
                        File.WriteAllBytes(saveDialog.FileName, bytes);
                    }
                }
            }
        }