public TestSpeed() { //WaveStream str1 = new Mp3FileReader("C:\\Users\\mtemkine\\Desktop\\snd\\guitar1.mp3"); //WaveStream str2 = new Mp3FileReader("C:\\Users\\mtemkine\\Desktop\\snd\\molecules.mp3"); //WaveMixerStream32 mix = new WaveMixerStream32(new [] {str1, str2}, false); var mp3Filename = @"C:\WS\jmerde\trunk\_VisualStudio\AudioBooker\IlyaFranker\Content\snd\ilyafrank_open.mp3"; WavComposite writer = new WavComposite("../../wawa.wav"); writer.AppendAllOfFile(mp3Filename, null); writer.AppendAllOfFile(mp3Filename, 2); writer.AppendAllOfFile(mp3Filename, 0.5); writer.Close(); //format = readerWave.WaveFormat; //writer = new WaveFileWriter(destFilename, format); //var wave = new Mp3FileReader(mp3Filename); using (var reader = new Mp3FileReader(mp3Filename)) using (var pcmStream = WaveFormatConversionStream.CreatePcmStream(reader)) using (var downsampledStream = new WaveFormatConversionStream(new WaveFormat( (int)(pcmStream.WaveFormat.SampleRate * 1.5), reader.WaveFormat.BitsPerSample, reader.WaveFormat.Channels), pcmStream)) { WaveFileWriter.CreateWaveFile("../../xello.wav", downsampledStream); } }
public TestSpeed() { //WaveStream str1 = new Mp3FileReader("C:\\Users\\mtemkine\\Desktop\\snd\\guitar1.mp3"); //WaveStream str2 = new Mp3FileReader("C:\\Users\\mtemkine\\Desktop\\snd\\molecules.mp3"); //WaveMixerStream32 mix = new WaveMixerStream32(new [] {str1, str2}, false); var mp3Filename = @"C:\WS\jmerde\trunk\_VisualStudio\AudioBooker\IlyaFranker\Content\snd\ilyafrank_open.mp3"; WavComposite writer = new WavComposite("../../wawa.wav"); writer.AppendAllOfFile(mp3Filename, null); writer.AppendAllOfFile(mp3Filename, 2); writer.AppendAllOfFile(mp3Filename, 0.5); writer.Close(); //format = readerWave.WaveFormat; //writer = new WaveFileWriter(destFilename, format); //var wave = new Mp3FileReader(mp3Filename); using (var reader = new Mp3FileReader(mp3Filename)) using (var pcmStream = WaveFormatConversionStream.CreatePcmStream(reader)) using (var downsampledStream = new WaveFormatConversionStream(new WaveFormat( (int)(pcmStream.WaveFormat.SampleRate * 1.5), reader.WaveFormat.BitsPerSample, reader.WaveFormat.Channels), pcmStream)) { WaveFileWriter.CreateWaveFile("../../xello.wav", downsampledStream); } }
private void DoStitch(string outFile, string[] files) { SimpleLog.Reset(); SimpleLog.LogIntro(); SimpleLog.Log("Generating {0}", outFile); var result = new WavComposite(outFile); foreach (var fff in files) { SimpleLog.Log(fff); result.AppendAllOfFile(fff); } result.Close(); }
//public const double CutSecondsBefore = 0.1; //public const double CutSecondsAfter = 0.1; // TODO: introduce a pause between phrases for watermark public static void SaveMusicMp3ToSegmentedFile(string filename, XmlAudiobook meta) { // save mp3 var result = new WavComposite(filename); foreach (var seg in meta.Segments) { var segFilename = UtilsCore.GetFullPathWithoutExtension(filename) + "/" + seg.Filename; var lengthSec = ((double)WavUtils.TotalLengthMillis(segFilename)) / 1000; result.WritePieceOfSomeFileWav( segFilename, Settings.Default.CutSecondsBefore, lengthSec - Settings.Default.CutSecondsAfter); } result.Close(); }
public static void oldTests() { //var fnameMp3 = "../../../AudioBooker/bin/Debug/pars_vite.mp3"; var fnameMp3 = @"C:\Users\mtemkine\Desktop\snd\test.mp3"; var fnameXml = fnameMp3 + ".xml"; var xml = XmlFactory.LoadFromFile<XmlAudiobook>(fnameXml); const double CutSecondsBefore = 0.1; const double CutSecondsAfter = 0.1; var firstOffset = 0; // 0.79; // xml.Segments.First().TimeIn.TotalSeconds; var result = new WavComposite(@"C:\Users\mtemkine\Desktop\snd\test_cut.wav"); foreach (var seg in xml.Segments) { //result.WritePieceOfSomeFileWav(fnameMp3, seg.TimeIn.TotalSeconds + CutSecondsBefore - firstOffset, seg.TimeOut.TotalSeconds - CutSecondsAfter - firstOffset); //result.AppendAllOfFile("C:\\Users\\mtemkine\\Desktop\\snd\\guitar1.mp3"); result.AppendAllOfFileWav("C:\\Users\\mtemkine\\Desktop\\snd\\ilyafrank_inter.mp3"); //result.AppendAllOfFile("C:\\Users\\mtemkine\\Desktop\\snd\\ilyafrank_res_open.mp3"); //result.AppendAllOfFile("C:\\Users\\mtemkine\\Desktop\\snd\\ilyafrank_res_close.mp3"); } result.Close(); }
public static void WriteXmlWavEvent( this WavComposite writeTo, XmlWavEvent segment, string prefixLang1, string prefixLang2, double?speedChange) { switch (segment.Type) { case WavEventType.WavRecording1: writeTo.AppendAllOfFile(prefixLang1 + "/" + segment.Filename, speedChange); break; case WavEventType.WavRecording2: writeTo.AppendAllOfFile(prefixLang2 + "/" + segment.Filename, speedChange); break; case WavEventType.Mp3Segment: writeTo.WritePieceOfSomeFileMp3(prefixLang1 + "/" + segment.Filename, segment.TimeIn.TotalSeconds, segment.TimeOut.TotalSeconds, speedChange); writeTo.AppendAllOfFile(prefixLang1 + "/" + segment.Filename, speedChange); break; } }
public static void oldTests() { //var fnameMp3 = "../../../AudioBooker/bin/Debug/pars_vite.mp3"; var fnameMp3 = @"C:\Users\mtemkine\Desktop\snd\test.mp3"; var fnameXml = fnameMp3 + ".xml"; var xml = XmlFactory.LoadFromFile <XmlAudiobook>(fnameXml); const double CutSecondsBefore = 0.1; const double CutSecondsAfter = 0.1; var firstOffset = 0; // 0.79; // xml.Segments.First().TimeIn.TotalSeconds; var result = new WavComposite(@"C:\Users\mtemkine\Desktop\snd\test_cut.wav"); foreach (var seg in xml.Segments) { //result.WritePieceOfSomeFileWav(fnameMp3, seg.TimeIn.TotalSeconds + CutSecondsBefore - firstOffset, seg.TimeOut.TotalSeconds - CutSecondsAfter - firstOffset); //result.AppendAllOfFile("C:\\Users\\mtemkine\\Desktop\\snd\\guitar1.mp3"); result.AppendAllOfFileWav("C:\\Users\\mtemkine\\Desktop\\snd\\ilyafrank_inter.mp3"); //result.AppendAllOfFile("C:\\Users\\mtemkine\\Desktop\\snd\\ilyafrank_res_open.mp3"); //result.AppendAllOfFile("C:\\Users\\mtemkine\\Desktop\\snd\\ilyafrank_res_close.mp3"); } result.Close(); }
public static void InterleaveAndSaveIlyaFrankerMp3( string filenameOut, XmlIlyaFrankAbook xmlIlyaFrankAbook, double?speedChange1 = null, double?speedChange2 = null, bool reverseLanguages = false, Action <double> updateProgress = null) { // save mp3 var filenameWav = UtilsCore.GetFullPathWithoutExtension(filenameOut) + ".wav"; //force .wav extension var result = new WavComposite(filenameWav); int totalSentences = xmlIlyaFrankAbook.Paragraphs.SelectMany(x => x.Sentences).Count(); int i = 0; var sndInter = Settings.Default.SoundEffectInter.Replace("{ExePath}", Application.StartupPath); var sndOpen = Settings.Default.SoundEffectOpen.Replace("{ExePath}", Application.StartupPath); var sndClose = Settings.Default.SoundEffectClose.Replace("{ExePath}", Application.StartupPath); if (updateProgress != null) { updateProgress(0); } foreach (var para in xmlIlyaFrankAbook.Paragraphs) { if (!para.Sentences.Any()) { continue; } foreach (var sen in para.Sentences) { // A-B-A-ding var segA = sen.Lang1Segments; var segB = sen.Lang2Segments; //var prefixA = xmlIlyaFrankAbook.Lang1Prefix; //var prefixB = xmlIlyaFrankAbook.Lang2Prefix; var speedChangeA = speedChange1; var speedChangeB = speedChange2; if (reverseLanguages) { segB = sen.Lang1Segments; segA = sen.Lang2Segments; //prefixB = xmlIlyaFrankAbook.Lang1Prefix; //prefixA = xmlIlyaFrankAbook.Lang2Prefix; speedChangeB = speedChange1; speedChangeA = speedChange2; } foreach (var seg in segA) { //result.WritePieceOfSomeFile(mp3A, seg.TimeIn.TotalSeconds, seg.TimeOut.TotalSeconds); result.WriteXmlWavEvent(seg, xmlIlyaFrankAbook.Lang1Prefix, xmlIlyaFrankAbook.Lang2Prefix, speedChangeA); } foreach (var seg in segB) { //result.WritePieceOfSomeFile(mp3B, seg.TimeIn.TotalSeconds, seg.TimeOut.TotalSeconds); result.WriteXmlWavEvent(seg, xmlIlyaFrankAbook.Lang1Prefix, xmlIlyaFrankAbook.Lang2Prefix, speedChangeB); } foreach (var seg in segA) { //result.WritePieceOfSomeFile(mp3A, seg.TimeIn.TotalSeconds, seg.TimeOut.TotalSeconds); result.WriteXmlWavEvent(seg, xmlIlyaFrankAbook.Lang1Prefix, xmlIlyaFrankAbook.Lang2Prefix, speedChangeA); } result.AppendAllOfFile( sndInter, (Settings.Default.SoundEffectFactor != 0) ? (double?)Settings.Default.SoundEffectFactor : null ); i++; } // ding-AAA-ding result.AppendAllOfFile( sndOpen, (Settings.Default.SoundEffectFactor != 0) ? (double?)Settings.Default.SoundEffectFactor : null ); foreach (var sen in para.Sentences) { var segA1 = sen.Lang1Segments; //var prefixA = xmlIlyaFrankAbook.Lang1Prefix; //var prefixB = xmlIlyaFrankAbook.Lang2Prefix; var speedChangeA = speedChange1; if (reverseLanguages) { segA1 = sen.Lang2Segments; //prefixB = xmlIlyaFrankAbook.Lang1Prefix; //prefixA = xmlIlyaFrankAbook.Lang2Prefix; speedChangeA = speedChange2; } foreach (var seg in segA1) { //result.WritePieceOfSomeFile(mp3A, seg.TimeIn.TotalSeconds, seg.TimeOut.TotalSeconds); result.WriteXmlWavEvent(seg, xmlIlyaFrankAbook.Lang1Prefix, xmlIlyaFrankAbook.Lang2Prefix, speedChangeA); } } result.AppendAllOfFile( sndClose, (Settings.Default.SoundEffectFactor != 0) ? (double?)Settings.Default.SoundEffectFactor : null ); } result.Close(); }