private void FadeOutDurationButton_Click(object sender, EventArgs e) { string outputFileName = fileName.Substring(0, fileName.Length - 4); var outPath = outputFileName + "FadeOutDuration.wav"; var reader = new AudioFileReader(open.FileName); var fader = new DelayFadeOutSampleProvider(reader); double totalTime = Int32.Parse(FadeOutDurationTextBox.Text); double startingTime = Int32.Parse(FadeOutStartingPointTextBox.Text); fader.BeginFadeOut(startingTime, totalTime); var stwp = new SampleToWaveProvider(fader); WaveFileWriter.CreateWaveFile(outPath, stwp); }
public static int TrimAudioFile(string inPath, string outPath, TimeSpan cutFromStart, TimeSpan cutFromEnd) { TimeSpan fadeSpan = new TimeSpan(0, 0, 0, 2, 470); if (Path.GetExtension(inPath) != ".mp3" && Path.GetExtension(inPath) != ".wav") { return(-1); } WaveStream ws; if (Path.GetExtension(inPath) == ".mp3") { ws = new Mp3FileReader(inPath); } else if (Path.GetExtension(inPath) == ".wav") { ws = new WaveFileReader(inPath); } else { return(-1); } try { //using (AudioFileReader audioReader = new AudioFileReader(inPath)) using (WaveStream audioReader = ws) { string temp_file = Path.GetTempFileName(); var sampleProvider = audioReader.ToSampleProvider(); var SampleRate = audioReader.WaveFormat.SampleRate; var startPosition = (cutFromStart.TotalMilliseconds * SampleRate) / 1000; var takeSpan = audioReader.TotalTime - cutFromStart - cutFromEnd; var skipBeforeFade = takeSpan - fadeSpan; sampleProvider = sampleProvider.Skip(cutFromStart); sampleProvider = sampleProvider.Take(takeSpan); //var fader = new FadeInOutSampleProvider(sampleProvider); var fader = new DelayFadeOutSampleProvider(sampleProvider); fader.BeginFadeOut(skipBeforeFade.TotalMilliseconds, fadeSpan.TotalMilliseconds); //fader.BeginFadeOut(fadeSpan.TotalMilliseconds); var wave = new SampleToWaveProvider(fader); //WaveFileWriter.CreateWaveFile(outPath, wave); using (WaveFileWriter writer = new WaveFileWriter(temp_file, audioReader.WaveFormat)) { int read = 0; float[] fBuffer = new float[64 * 1024]; do { read = fader.Read(fBuffer, 0, 64 * 1024); if (read > 0) { writer.WriteSamples(fBuffer, 0, read); } //read = wave.Read(fBuffer, 0, 1024); //if (read > 0) //{ // writer.Write(fBuffer, 0, read); //} } while (read > 0); } Console.Write($"Writing file: {Path.GetFileName(outPath)}....."); File.Copy(temp_file, outPath); Console.WriteLine($"Done."); File.Delete(temp_file); } } catch (Exception e) { Console.WriteLine(); Console.WriteLine($"Error: {e.Message}"); return(-1); } return(1); }
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(175); fade.BeginFadeOut(afr.TotalTime.TotalMilliseconds , afr.TotalTime.TotalMilliseconds * 2); var stwp = new NAudio.Wave.SampleProviders.SampleToWaveProvider(fade); WaveFileWriter.CreateWaveFile(tempfile, stwp); new System.Media.SoundPlayer(tempfile).Play(); //File.Delete(tempfile2); run++; } return tempdir; }