Exemple #1
0
 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);
         }
 }
Exemple #2
0
 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);
         }
 }
Exemple #3
0
 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);
         }
 }
Exemple #4
0
        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();
                }
            }
        }
Exemple #5
0
 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);
             }
         }
 }