/// <summary> /// /// </summary> /// <param name="fiAudio"></param> /// <param name="fiConfig"></param> /// <param name="fiImage"></param> /// <returns></returns> public static Image GetImageFromAudioSegment(FileInfo fiAudio, FileInfo fiConfig, FileInfo fiImage, IAnalyser2 analyser) { var config = new ConfigDictionary(fiConfig.FullName); //read in config file bool doAnnotate = config.GetBoolean(AnalysisKeys.AnnotateSonogram); //bool doNoiseReduction = config.GetBoolean(Keys.NOISE_DO_REDUCTION); //double bgNoiseThreshold = config.GetDouble(Keys.NOISE_BG_REDUCTION); var diOutputDir = new DirectoryInfo(Path.GetDirectoryName(fiImage.FullName)); //Image image = null; if (doAnnotate) { if (analyser == null) { string analyisName = config.GetString(AnalysisKeys.AnalysisName); LoggedConsole.WriteLine("\nWARNING: Could not construct annotated image because analysis name not recognized:"); LoggedConsole.WriteLine("\t " + analyisName); return(null); } throw new NotSupportedException("Code intentionally broken because it is out of date and not used"); /* * Image image = null; * var settings = new AnalysisSettings * { * ConfigDict = config.GetDictionary(), * SegmentAudioFile = fiAudio, * ConfigFile = fiConfig, * SegmentImageFile = fiImage, * SegmentOutputDirectory = diOutputDir * }; * * // want to pass SampleRate of the original file. * settings.SampleRateOfOriginalAudioFile = int.Parse(settings.ConfigDict[AnalysisKeys.ResampleRate]); * * analyser.BeforeAnalyze(settings); * * var results = analyser.Analyze(settings, new SegmentSettings<FileInfo>(se)); * * image = results.ImageFile == null ? null : Image.FromFile(results.ImageFile.FullName); * * analyser = null; * return image;*/ } else { analyser = null; var configDict = config.GetDictionary(); BaseSonogram sonogram = Audio2DecibelSonogram(fiAudio, configDict); var mti = Sonogram2MultiTrackImage(sonogram, configDict); var image = mti.GetImage(); if (image != null) { if (fiImage.Exists) { fiImage.Delete(); } image.Save(fiImage.FullName, ImageFormat.Png); } return(image); } }