コード例 #1
0
        internal void Process(MusicService job)
        {
            var xj = new XTempoJob();

            xj.SourceFileName        = job.SourceFile;
            xj.AlternativeOutputPath = job.DestinationFile;
            xj.TempoDelta            = job.TempoDelta;
            xj.PitchDelta            = job.PitchDelta;
            ProcessWav(xj);
        }
コード例 #2
0
        private void ProccessMp3(XConverter xConverter, XTempoProcessor xTempoProcessor, string mp3Path, string mainSourceFileName)
        {
            XJobResult res = xConverter.Convert(mp3Path, XFileType.Wav);

            SaveTempFile(res.TempFileName, res.OutputData);

            var wavTempoJob = new XTempoJob {
                SourceFileName = res.TempFileName, ReturnData = true
            };

            xTempoProcessor.Process(wavTempoJob);

            //var afterTempoWavToMp3Job = new XConvertJob { SourceData = wavTempoJob.OutputData, DestinationFileType = XFileType.Mp3 };
            SaveTempFile(mainSourceFileName.GenerateGuidPath(XFileType.Mp3), wavTempoJob.OutputData);
            //xConverter.Convert(mp3ToWavJob);

            //if (afterTempoWavToMp3Job.SourceData != null)
            //{
            //    File.WriteAllBytes(afterTempoWavToMp3Job.SourceFileName, afterTempoWavToMp3Job.SourceData);
            //}
        }
コード例 #3
0
        private void ProcessWav(XTempoJob param)
        {
            var outFileName = string.IsNullOrEmpty(param.AlternativeOutputPath) ? param.SourceFileName.GenerateOutPutPath() :
                              param.AlternativeOutputPath;
            var soundTouch = new SoundTouch <TSampleType, TLongSampleType>();

            if (param.SourceData != null)
            {
                File.WriteAllBytes(param.SourceFileName, param.SourceData);
            }

            using (var inFile = new WavInFile(param.SourceFileName))
                using (var outFile = new WavOutFile(outFileName, (inFile).GetSampleRate(), (inFile).GetNumBits(), (inFile).GetNumChannels()))
                {
                    Setup(soundTouch, inFile.GetSampleRate(), inFile.GetNumChannels(), param.TempoDelta, param.PitchDelta);
                    Process(soundTouch, inFile, outFile);
                }
            param.ResulFileName = outFileName;
            if (param.ReturnData)
            {
                param.OutputData = File.ReadAllBytes(outFileName);
                File.Delete(outFileName);
            }
        }
コード例 #4
0
 internal void Process(XTempoJob wavTempoJob)
 {
     ProcessWav(wavTempoJob);
 }