public CopiedTrack(ACB_Waveform waveform, AFS2_Entry awbEntry) { TrackBytes = awbEntry?.bytes; Streaming = (bool)waveform?.Streaming; Loop = (waveform?.LoopFlag == 0) ? false : true; encodeType = waveform.EncodeType; }
/// <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)); }
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); } } } }