Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
                    }
        }
Exemplo n.º 3
0
		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();
		}
Exemplo n.º 4
0
        //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();
        }
Exemplo n.º 5
0
        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();
        }
Exemplo n.º 6
0
        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;
            }
        }
Exemplo n.º 7
0
        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();
        }
Exemplo n.º 8
0
        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();
        }