void ExtractAudio(ArcFile arc, Entry entry) { using (var file = arc.OpenBinaryEntry(entry)) using (var sound = AudioFormat.Read(file)) { if (sound == null) { throw new InvalidFormatException("Unable to interpret audio format"); } ConvertAudio(entry.Name, sound); } }
void ExtractAudio(ArcFile arc, Entry entry) { using (var file = arc.OpenBinaryEntry(entry)) using (var sound = AudioFormat.Read(file)) { if (null == sound) { throw new InvalidFormatException(guiStrings.MsgUnableInterpretAudio); } ConvertAudio(entry.Name, sound); } }
static void ExtractAudio(ArcFile arc, Entry entry) { using (var file = arc.OpenEntry(entry)) using (var sound = AudioFormat.Read(file)) { if (null == sound) { throw new InvalidFormatException(string.Format("{1}: {0}", guiStrings.MsgUnableInterpretAudio, entry.Name)); } ConvertAudio(entry.Name, sound); } }
private void PlayFile(Entry entry) { SoundInput sound = null; try { SetBusyState(); using (var input = VFS.OpenStream(entry)) { FormatCatalog.Instance.LastError = null; sound = AudioFormat.Read(input); if (null == sound) { if (null != FormatCatalog.Instance.LastError) { throw FormatCatalog.Instance.LastError; } return; } if (AudioDevice != null) { AudioDevice.PlaybackStopped -= OnPlaybackStopped; AudioDevice = null; } CurrentAudio = new WaveStreamImpl(sound); AudioDevice = new WaveOutEvent(); AudioDevice.Init(CurrentAudio); AudioDevice.PlaybackStopped += OnPlaybackStopped; AudioDevice.Play(); var fmt = CurrentAudio.WaveFormat; SetResourceText(string.Format("Playing {0} / {3} / {2}bps / {1}Hz", entry.Name, fmt.SampleRate, sound.SourceBitrate / 1000, CurrentAudio.TotalTime.ToString("m':'ss"))); } } catch (Exception X) { SetStatusText(X.Message); if (null != sound) { sound.Dispose(); } } }
void ConvertAudio(string filename) { using (var file = BinaryStream.FromFile(filename)) using (var input = AudioFormat.Read(file)) { if (null == input) { return; } string output_name = Path.GetFileName(filename); var source_ext = Path.GetExtension(filename).TrimStart('.').ToLowerInvariant(); string source_format = input.SourceFormat; if (CommonAudioFormats.Contains(source_format)) { if (source_ext == source_format) { return; } output_name = Path.ChangeExtension(output_name, source_format); using (var output = CreateNewFile(output_name)) { input.Source.Position = 0; input.Source.CopyTo(output); } } else { if (source_ext == "wav") { return; } output_name = Path.ChangeExtension(output_name, "wav"); using (var output = CreateNewFile(output_name)) AudioFormat.Wav.Write(input, output); } } }