private void ConvertButton_Click(object sender, RoutedEventArgs e) { OpenFileDialog open = new OpenFileDialog(); open.Filter = "MP3 File (*.mp3)|*.mp3;"; if (open.ShowDialog() != true) { return; } SaveFileDialog save = new SaveFileDialog(); save.Filter = "WAV File (*.wav)|*.wav;"; if (save.ShowDialog() != true) { return; } using (Mp3FileReader mp3 = new Mp3FileReader(open.FileName)) { using (WaveStream pcm = WaveFormatConversionStream.CreatePcmStream(mp3)) { WaveFileWriter.CreateWaveFile(save.FileName, pcm); } } }
private int convertWav(string path) { int returnSampleRate = 0; using (WaveStream stream = new WaveFileReader(path)) { WaveFormat newFormat = null; int channels = stream.WaveFormat.Channels; int bps = stream.WaveFormat.BitsPerSample; int sr = stream.WaveFormat.SampleRate; int c = stream.WaveFormat.AverageBytesPerSecond; if (sr > 11025) { newFormat = new WaveFormat(sampleRate, bitsPerSample, mono); returnSampleRate = sampleRate; } else { newFormat = new WaveFormat(sr, bitsPerSample, mono); returnSampleRate = sampleRate; } using (var conversionStream = new WaveFormatConversionStream(newFormat, stream)) { WaveFileWriter.CreateWaveFile(firstPath, conversionStream); } } return(returnSampleRate); }
// auxiliars functions private static void Mp3ToWav(string mp3File, string outputFile) { using (Mp3FileReader reader = new Mp3FileReader(mp3File)) { WaveFileWriter.CreateWaveFile(outputFile, reader); } }
public static string finalLapMaker(string path, double factor) { int indexof = path.LastIndexOf('_'); string newpath = path.Substring(0, indexof) + "_f.wav"; if (Char.IsUpper(path[indexof + 1])) { newpath = path.Substring(0, indexof) + "_F.wav"; } string temppath = path.Substring(0, indexof) + "_ieeetemp.wav"; using (var reader = new WaveFileReader(path)) { var outFormat = WaveFormat.CreateIeeeFloatWaveFormat(reader.WaveFormat.SampleRate, reader.WaveFormat.Channels); using (var resampler = new MediaFoundationResampler(reader, outFormat)) { WaveFileWriter.CreateWaveFile(temppath, resampler); } } using (var input = new WaveFileReader(temppath)) { var stwp = new SoundTouchWaveProvider(input); stwp.Tempo = factor; WaveFileWriter.CreateWaveFile(newpath, stwp); } return(newpath); }
private string[] MixSixChannel(string fileName) { fileName = fileName.Replace(".wav", ""); var fileNames = new string[2]; using (var input1 = new WaveFileReader($"{fileName}.CH01.wav")) { using var input2 = new WaveFileReader($"{fileName}.CH02.wav"); var waveProvider = new MultiplexingWaveProvider(new IWaveProvider[] { input1, input2 }, 2); waveProvider.ConnectInputToOutput(0, 0); waveProvider.ConnectInputToOutput(1, 1); WaveFileWriter.CreateWaveFile($"{fileName}.Dungeon.wav", waveProvider); fileNames[0] = $"{fileName}.Dungeon.wav"; } using (var input1 = new WaveFileReader($"{fileName}.CH03.wav")) { using var input2 = new WaveFileReader($"{fileName}.CH04.wav"); var waveProvider = new MultiplexingWaveProvider(new IWaveProvider[] { input1, input2 }, 2); waveProvider.ConnectInputToOutput(0, 0); waveProvider.ConnectInputToOutput(1, 1); WaveFileWriter.CreateWaveFile($"{fileName}.Battle.wav", waveProvider); fileNames[1] = $"{fileName}.Battle.wav"; } return(fileNames); /* TO PLAY IT OUTRIGHT: * WasapiOut outDevice = new WasapiOut(); * outDevice.Init(waveProvider); * outDevice.Play(); */ }
public static void Mptowav(String mppath, String wavpath) { using (var reader = new Mp3FileReader(mppath)) { WaveFileWriter.CreateWaveFile(wavpath, reader); } }
public ActionResult Reverse(string name) { var a = name.Split('.'); string newName = a[a.Length - 2]; if (a[a.Length - 1] == "mp3") { using (Mp3FileReader reader = new Mp3FileReader(HttpContext.Server.MapPath("~/Content/" + name))) { WaveFileWriter.CreateWaveFile(HttpContext.Server.MapPath("~/Content/" + newName + ".wav"), reader); } } using (WaveFileReader reader = new WaveFileReader(HttpContext.Server.MapPath("~/Content/" + newName + ".wav"))) { int blockAlign = reader.WaveFormat.BlockAlign; using (WaveFileWriter writer = new WaveFileWriter(HttpContext.Server.MapPath("~/Content/" + newName + "_rev.wav"), reader.WaveFormat)) { byte[] buffer = new byte[blockAlign]; long samples = reader.Length / blockAlign; for (long sample = samples - 1; sample >= 0; sample--) { reader.Position = sample * blockAlign; reader.Read(buffer, 0, blockAlign); writer.WriteData(buffer, 0, blockAlign); } } } return(Json(new { name1 = newName + "_rev.wav" }, JsonRequestBehavior.AllowGet)); }
private IEnumerator IELoadExternalAudioWebRequest2(string _url, AudioType _audioType) { string _tempURL = _url.Replace(".mp3", ".wav"); Debug.print(_tempURL); if (!File.Exists(_tempURL)) { FileStream _fileStream = File.Open(_url, FileMode.Open); Mp3FileReader _mp3FileReader = new Mp3FileReader(_fileStream); WaveFileWriter.CreateWaveFile(_tempURL, _mp3FileReader); } yield return(null); UnityWebRequest _unityWebRequest = UnityWebRequestMultimedia.GetAudioClip(_tempURL, _audioType); yield return(_unityWebRequest.SendWebRequest()); if (_unityWebRequest.isHttpError || _unityWebRequest.isNetworkError) { Debug.print(_unityWebRequest.error.ToString()); } else { AudioClip _audioClip = DownloadHandlerAudioClip.GetContent(_unityWebRequest); } }
public static string Resemple(string inPath, string outPath) { int outRate = 44100; var outFile = outPath; using (var reader = new WaveFileReader(inPath)) { if (reader.WaveFormat.Equals(new WaveFormat(outRate, 2))) { return(inPath); } else { var outFormat = new WaveFormat(outRate, reader.WaveFormat.Channels); using (var resampler = new MediaFoundationResampler(reader, outFormat)) { // resampler.ResamplerQuality = 60; WaveFileWriter.CreateWaveFile(outFile, resampler); } } } File.Delete(inPath); File.Move(outFile, inPath); return(inPath); }
/// <summary> /// Applies changes based on the state of this instance, and saves to the specified path. /// </summary> /// <param name="path">The file path.</param> public void Save(string path) { // applies peak normalization to the reader if (this.Settings.NormalizeVolume) { this.NormalizationProvider.ApplyPeakNormalization(this.Reader); } // determine the output type if (this.Settings.EncodeToMP3 && this.Reader.Length > 0) { using (var writer = new LameMP3FileWriter(path, this.Reader.WaveFormat, MP3_BIT_RATE)) { var buffer = new byte[1024 * 4]; var read = 0; while ((read = this.Reader.Read(buffer, 0, buffer.Length)) > 0) { writer.Write(buffer, 0, read); } } } else { WaveFileWriter.CreateWaveFile(path, this.Reader); } }
/// <summary> /// to add or set a new Sound to system /// </summary> /// <param name="number">number to key new Sound set to</param> /// <param name="path">path to Sound </param> public void setNewSound(byte number, string path) { try { string assemblyPath = path; string _outPath_ = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\HotKey\\sounder\\Sound" + number + ".wav"; // string _outPath_ = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + @"\Resource\sounder\Sound" + number + ".wav"; //if (!File.Exists(_outPath_)) //{ using (Mp3FileReader mp3 = new Mp3FileReader(assemblyPath)) { using (WaveStream pcm = WaveFormatConversionStream.CreatePcmStream(mp3)) { WaveFileWriter.CreateWaveFile(_outPath_, pcm); } } //} } catch { MessageBox.Show("error", "error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <summary> /// 将mp3转为wav /// </summary> /// <param name="sourceFile">in mp3文件</param> /// <param name="desFile">out wav文件</param> public static void ConvertMP3toWAV(string sourceFile, string desFile) { using (var reader = new Mp3FileReader(sourceFile)) { WaveFileWriter.CreateWaveFile(desFile, reader); } }
private void Mp3ToWav(string mp3file, string wavfile) { using (Mp3FileReader reader = new Mp3FileReader(mp3file)) { WaveFileWriter.CreateWaveFile(wavfile, reader); } }
protected static void ConvertToWav(PhraseItem item, string folder, bool play, string [] details) { //Engine Name, SelectedVoice.Name, SelectedDiscreteSpeed, SelectedDiscreteVolume try { TagLib.File file = TagLib.File.Create(String.Format("{0}\\mp3\\{1}\\{2}.mp3", folder, item.Folder, item.FileName)); file.Tag.Title = item.Phrase; file.Tag.Comment = String.Format("{0}, {1}, {2}, {3}", details[0], details[1], details[2], details[3]); file.Save(); } catch { } if (Properties.Settings.Default.EncodeToWav == true) { using (Mp3FileReader mp3 = new Mp3FileReader(String.Format("{0}\\mp3\\{1}\\{2}.mp3", folder, item.Folder, item.FileName))) { using (var resampler = new MediaFoundationResampler(mp3, new NAudio.Wave.WaveFormat(Properties.Settings.Default.WavSampleRate, Properties.Settings.Default.WavBitsPerSample, 1))) { resampler.ResamplerQuality = 60; WaveFileWriter.CreateWaveFile(String.Format("{0}\\wav\\{1}\\{2}.wav", folder, item.Folder, item.FileName), resampler); } } } if (play) { MainWindow.PlayAudioFullPath(String.Format("{0}\\{3}\\{1}\\{2}.{3}", folder, item.Folder, item.FileName, Properties.Settings.Default.EncodeToWav? "wav":"mp3")); } item.DownloadComplete = true; }
private void button2_Click(object sender, EventArgs e) { save.Filter = "WAV File (*.wav)|*.wav"; if (save.ShowDialog() != DialogResult.OK) { return; } textBox2.Text = save.FileName; try { using (Mp3FileReader mp3 = new Mp3FileReader(open.FileName)) { using (WaveStream pcm = WaveFormatConversionStream.CreatePcmStream(mp3)) { WaveFileWriter.CreateWaveFile(save.FileName, pcm); progressBar1.Value = 100; label1.Text = "Mp3 File Successfully Converted to Wav File"; } } } catch { progressBar1.Value = 0; } }
public static void ConvertMp3ToWav(string mp3, string wav) { using (var reader = new Mp3FileReader(mp3)) { WaveFileWriter.CreateWaveFile(wav, reader); } }
private static void ConvertMp3ToWav(string mp3) { string tempPath = @"C:\Users\Trevor\Desktop\capstone\Capstone\test\wwwroot\temp\"; //get the filename without its extension string tempFilename = Path.GetFileNameWithoutExtension(mp3);// = "001066.mp3" try { string predictionsFilePath = ""; //create a new mp3 reader using (Mp3FileReader reader = new Mp3FileReader(mp3)) { //create a new wav reader using (WaveStream pcmStream = WaveFormatConversionStream.CreatePcmStream(reader)) { predictionsFilePath = predictionsPath + tempFilename + ".wav"; tempPath += tempFilename + ".wav"; //create a new .wav //WaveFileWriter.CreateWaveFile(predictionsPath + tempFilename + ".wav", pcmStream); //WaveFileWriter.CreateWaveFile(tempPath + tempFilename + ".wav", pcmStream); WaveFileWriter.CreateWaveFile(tempPath, pcmStream); } } TrimWavFile(tempPath, predictionsFilePath, TimeSpan.Zero, TimeSpan.FromSeconds(30)); } catch (Exception e) { Console.WriteLine("*** 3RR0R ***" + tempFilename + " *** 3RROR *** " + e.Message + "*** 3RROR ***"); } //return true; }
private void DecodeFile() { string inputFileName = GetInputFileName("Select a compressed WAV File to decode"); if (inputFileName == null) { return; } using (var reader = new WaveFileReader(inputFileName)) { if (reader.WaveFormat.Encoding == WaveFormatEncoding.Pcm) { MessageBox.Show("Please select a compressed WAV file to decode"); return; } string outputFileName = GetOutputFileName("Select Output File Name"); if (outputFileName == null) { return; } using (var convertedStream = WaveFormatConversionStream.CreatePcmStream(reader)) { WaveFileWriter.CreateWaveFile(outputFileName, convertedStream); } if (checkBoxAutoLaunchConvertedFile.Checked) { ProcessHelper.ShellExecute(outputFileName); } } }
private void EncodeFile() { string inputFileName = GetInputFileName("Select PCM WAV File to Encode"); if (inputFileName == null) { return; } using (WaveFileReader reader = new WaveFileReader(inputFileName)) { if (reader.WaveFormat.Encoding != WaveFormatEncoding.Pcm) { MessageBox.Show("Please select a PCM WAV file to encode"); return; } WaveFormat targetFormat = GetTargetFormat(reader.WaveFormat); if (targetFormat == null) { return; } string outputFileName = GetOutputFileName("Select Ouput File Name"); if (outputFileName == null) { return; } using (WaveStream convertedStream = new WaveFormatConversionStream(targetFormat, reader)) { WaveFileWriter.CreateWaveFile(outputFileName, convertedStream); } if (checkBoxAutoLaunchConvertedFile.Checked) { System.Diagnostics.Process.Start(outputFileName); } } }
static void Main(string[] args) { string sLang = "zh-CN"; string sText = ""; Uri uriMp3; string sMp3Path; string sWavPath; //Read text from text.txt if (args.Count() > 0) { sText = File.ReadAllText(args[0], Encoding.UTF8); } else { sText = File.ReadAllText(Environment.CurrentDirectory + @"\text.txt", Encoding.UTF8); } //Detect Language using (WebClient wcLang = new WebClient()) { wcLang.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/4.0 (compatible; MSIE 9.0; Windows;)"); Uri uriLang = new Uri("http://translate.google.cn/translate_a/t?client=t&sl=auto&text=" + sText); wcLang.DownloadFile(uriLang, "lang.txt"); string parseResult = Utils.GetLang(File.ReadAllText("lang.txt")); if (parseResult == "") { parseResult = "zh-CN"; } sLang = parseResult; } uriMp3 = new Uri("http://translate.google.cn/translate_tts?tl=" + sLang + "&q=" + sText); sMp3Path = Environment.CurrentDirectory + @"tmp.mp3"; sWavPath = Environment.CurrentDirectory + @"\..\res\sound\" + sText + ".wav"; //Get MP3 from Google using (WebClient wcMp3Speech = new WebClient()) { wcMp3Speech.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/4.0 (compatible; MSIE 9.0; Windows;)"); wcMp3Speech.DownloadFile(uriMp3, sMp3Path); } //Now convert the MP3 to WAV using (Mp3FileReader reader = new Mp3FileReader(new FileStream(sMp3Path, FileMode.OpenOrCreate))) { WaveFileWriter.CreateWaveFile(sWavPath, reader); } //Now copy the WAV to speech.wav if (File.Exists(Environment.CurrentDirectory + @"\..\res\sound\speech.wav")) { File.Delete(Environment.CurrentDirectory + @"\..\res\sound\speech.wav"); } File.Copy(sWavPath, Environment.CurrentDirectory + @"\..\res\sound\speech.wav"); }
public static void TrimAndMix(WaveFileReader[] input, String output, TimeSpan startTime, TimeSpan endTime, bool syncPattern) { //if syncPattern = false, trim the input files based on the TimeSpan for (int i = 0; i < input.Length - 1; i++) //no need to trim the last file aka record.wav { TrimWavFile(input[i], $@"auto_generate/temp{i + 1}_trim.wav", startTime, endTime); input[i] = new WaveFileReader(String.Format($@"auto_generate/temp{i + 1}_trim.wav")); } // choose the sample rate we will mix at var maxSampleRate = input.Max(r => r.WaveFormat.SampleRate); int minBitRate = input.Min(r => r.WaveFormat.BitsPerSample); // create the mixer sample providers, resampling if necessary var mixerSampleProviders = input.Select(r => r.WaveFormat.SampleRate == maxSampleRate ? r.ToSampleProvider() : new MediaFoundationResampler(r, new WaveFormat(maxSampleRate, minBitRate, r.WaveFormat.Channels)).ToSampleProvider()); // create the mixer wave providers var mixerwaveProviders = mixerSampleProviders.Select(r => r.ToWaveProvider()); var waveProvider = new MultiplexingWaveProvider(mixerwaveProviders, input.Count() * 2); WaveFileWriter.CreateWaveFile(output, waveProvider); foreach (var i in input) { i.Dispose(); } }
private string GenEditedFiles(string[] files, List <Note> notes) { string tempdir = FluidSys.FluidSys.CreateTempDir(); string tempfile = ""; string tempfile2 = ""; int run = 0; // Trim each note foreach (string file in files) { tempfile = tempdir + "\\" + run.ToString() + ".wav"; tempfile2 = tempdir + "\\" + run.ToString() + "0.wav"; //WavFileUtils.TrimWavFile(file, tempfile2, TimeSpan.FromMilliseconds(notes[run].VoiceProperties.Start), // TimeSpan.FromMilliseconds(notes[run].VoiceProperties.End)); var afr = new AudioFileReader(file); var fade = new DelayFadeOutSampleProvider(afr); fade.BeginFadeIn(100); //fade.BeginFadeOut(afr.TotalTime.TotalMilliseconds , afr.TotalTime.TotalMilliseconds * 2); //fade.BeginFadeIn(35); var stwp = new NAudio.Wave.SampleProviders.SampleToWaveProvider(fade); WaveFileWriter.CreateWaveFile(tempfile, stwp); new System.Media.SoundPlayer(tempfile).Play(); //File.Delete(tempfile2); run++; } return(tempdir); }
private static string GetWaveFromMp3(string filename) { if (!File.Exists(filename)) { throw new FileNotFoundException(filename + " not found"); } var waveFilename = GetWaveFilenameFromMp3(filename); if (!File.Exists(waveFilename)) { var fileInfo = new FileInfo(waveFilename); fileInfo.Directory.Create(); // If the directory already exists, this method does nothing. try { using (var reader = new Mp3FileReader(filename)) { WaveFileWriter.CreateWaveFile(waveFilename, reader); } } catch (Exception e) { var error = $"Failed to load {Path.GetFileName(filename)}: {e.Message}"; Console.WriteLine($"[CustomTunes] {error}"); return(null); } } return(waveFilename); }
public void OutputWaveToFile( string textToSpeak, string waveFile) { if (string.IsNullOrWhiteSpace(textToSpeak)) { return; } this.StartSasara(); var tempWave = Path.GetTempFileName(); talker.OutputWaveToFile( textToSpeak, tempWave); // ささらは音量が小さめなので増幅する using (var reader = new WaveFileReader(tempWave)) { var prov = new VolumeWaveProvider16(reader); prov.Volume = Settings.Default.SasaraGain; WaveFileWriter.CreateWaveFile( waveFile, prov); } if (File.Exists(tempWave)) { File.Delete(tempWave); } }
private void HandleFile(string filename) { try { FileInfo file = new FileInfo(filename); string path = System.IO.Path.Combine(file.Directory.FullName, "output"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } AudioFileReader waveFileReader = new AudioFileReader(filename); int bytesPerMillisecond = waveFileReader.WaveFormat.AverageBytesPerSecond / 1000; int startPos = GetSilenceTime(waveFileReader, SilenceLocation.Start, config.Config.SilenceThreshold); int endPos2 = GetSilenceTime(waveFileReader, SilenceLocation.End, config.Config.SilenceThreshold); endPos2 -= endPos2 % 4; WaveFileWriter waveFileWriter = new WaveFileWriter(filename + ".temp.wav", waveFileReader.WaveFormat); TrimSound(waveFileReader, waveFileWriter, startPos, endPos2); byte[] temp = new byte[bytesPerMillisecond * 500]; waveFileWriter.Write(temp, 0, temp.Length); waveFileWriter.Close(); waveFileReader.Close(); WaveFileReader filereader = new WaveFileReader(filename + ".temp.wav"); WaveFormat format = new WaveFormat(8000, 16, 1); MediaFoundationResampler resample = new MediaFoundationResampler(filereader, format); WaveFileWriter.CreateWaveFile(System.IO.Path.Combine(path, file.Name.Replace(file.Extension, ".wav")), resample); resample.Dispose(); filereader.Close(); File.Delete(filename + ".temp.wav"); } catch (Exception) { } }
public static void WriteSong(string waveFileName, string mp3FileName, SongInfo info) { using (AudioFileReader reader = new AudioFileReader(waveFileName)) { //Console.WriteLine(reader.WaveFormat.BitsPerSample); WaveFormat format = WaveFormat.CreateIeeeFloatWaveFormat(reader.WaveFormat.SampleRate, reader.WaveFormat.Channels); //new WaveFormat(reader.WaveFormat.SampleRate, 16, 2) using (var resampler = new MediaFoundationResampler(reader, format)) { // resampler.ResamplerQuality = 60; WaveFileWriter.CreateWaveFile(Path.GetFileNameWithoutExtension(mp3FileName) + ".wav", resampler); } } using (WaveFileReader reader = new WaveFileReader(Path.GetFileNameWithoutExtension(mp3FileName) + ".wav")) { using (LameMP3FileWriter writer = new LameMP3FileWriter(mp3FileName, reader.WaveFormat, 705)) { //Console.WriteLine(reader.WaveFormat.BitsPerSample); reader.CopyTo(writer); } } File.Delete(Path.GetFileNameWithoutExtension(mp3FileName) + ".wav"); TagLib.File f = TagLib.File.Create(mp3FileName); f.Tag.Album = info.Album; f.Tag.Artists = new string[] { info.Artist }; f.Tag.AlbumArtists = new string[] { info.Artist }; f.Tag.Title = info.Title; f.Tag.Genres = new string[] { "Soundtrack" }; f.Tag.Track = (uint)info.TrackNumber; f.Save(); }
/// <summary> /// Validate video file: [0 = sound video] // [1 = silent video] // [-1 = system error] /// </summary> /// <param name="file_path"></param> /// <param name="file_name"></param> /// <returns></returns> public static int IsSoundVideoFile(string file_path, string file_name) { string code = "0xc00d36b3"; string error = ""; string videofile = System.IO.Path.Combine(file_path, file_name); string audiofile = System.IO.Path.Combine(file_path, "unknown.wav"); int kq = int.MinValue; try { using (var video = new MediaFoundationReader(videofile)) { WaveFileWriter.CreateWaveFile(audiofile, video); } kq = 0; } catch (Exception ex) { error = ex.ToString(); } if (kq == int.MinValue) { kq = error.ToLower().Contains(code) ? 1 : -1; // } else { System.IO.File.Delete(audiofile); //delete file audio } return(kq); }
private void MixTwoSamples() { while (writer == null && RecordedAudioWriter == null) { } Thread.Sleep(1000); MicFileReader = new AudioFileReader(saveDirectory.SelectedPath + "\\" + micRecordFIleName); SpeakerFileReader = new AudioFileReader(saveDirectory.SelectedPath + "\\" + playBackRecordFileName); WaveMixerStream32 mixer = new WaveMixerStream32(); mixer.AddInputStream(MicFileReader); mixer.AddInputStream(SpeakerFileReader); WaveFileWriter.CreateWaveFile(saveDirectory.SelectedPath + "\\" + "result.wav", mixer); MicFileReader.Close(); MicFileReader.Dispose(); MicFileReader = null; SpeakerFileReader.Close(); SpeakerFileReader.Dispose(); SpeakerFileReader = null; }
private void Window_Loaded(object sender, RoutedEventArgs e) { string fileDir = AppContext.BaseDirectory; var inPath = SPath.Combine(fileDir, "了解真相快三退.wav"); var semitone = Math.Pow(2, 1.0 / 12); var upOneTone = semitone * semitone * semitone * semitone * semitone; var downOneTone = 1.0 / (upOneTone); var tfile = TagLib.File.Create(inPath); using (var reader = new MediaFoundationReader(inPath)) { var pitch = new SmbPitchShiftingSampleProvider(reader.ToSampleProvider()); pitch.PitchFactor = (float)(((double)new Random().Next(60, 115)) / 100); string tempFileNameGuid = Guid.NewGuid().ToString(); string tempFilePath = SPath.Combine(fileDir, tempFileNameGuid + ".wav"); string outputFileNameGuid = Guid.NewGuid().ToString(); string outWavFilePath = SPath.Combine(fileDir, outputFileNameGuid + ".wav"); string outMp3FilePath = SPath.Combine(fileDir, outputFileNameGuid + ".mp3"); WaveFileWriter.CreateWaveFile(tempFilePath, pitch.ToWaveProvider()); ConvertWavToMp3(tempFilePath, outMp3FilePath, tfile.Properties.AudioBitrate); //playSampleProvider(pitch); using (var mp3Reader = new Mp3FileReader(outMp3FilePath)) using (var conversionStream = new WaveFormatConversionStream(reader.WaveFormat, mp3Reader)) WaveFileWriter.CreateWaveFile(outWavFilePath, conversionStream); if (File.Exists(tempFilePath)) { File.Delete(tempFilePath); } } }
/// <summary> /// MP3ファイルをWAVファイルへコンバート /// </summary> private void button_Convert_Click(object sender, EventArgs e) { // 1. Open MP3 File OpenFileDialog open = new OpenFileDialog(); open.Filter = "Mp3 File (*.mp3)|*.mp3;"; if (open.ShowDialog() != DialogResult.OK) { return; } // 2. Select Save WAV File SaveFileDialog save = new SaveFileDialog(); save.Filter = "WAV File (*.wav)|*.wav;"; if (save.ShowDialog() != DialogResult.OK) { return; } // 3. Convert mp3 -> wav using (Mp3FileReader mp3 = new Mp3FileReader(open.FileName)) { using (WaveStream pcm = WaveFormatConversionStream.CreatePcmStream(mp3)) { WaveFileWriter.CreateWaveFile(save.FileName, pcm); } } }