public NoteContainer CreateNoteContainer(List <int> stringsToAnalyze, int tonesCount) { var noteContainer = new NoteContainer(); const int harmonicsCount = 3; foreach (var stringNumber in stringsToAnalyze) { var stringFrequencies = GuitarTuningNotesCreator.GetStringFrequenciesRange(stringNumber, tonesCount); var frequenciesToAnalyze = new List <float>(stringFrequencies); for (int i = 0; i < harmonicsCount; i++) { var multiplier = MathF.Pow(2, i + 1); frequenciesToAnalyze.AddRange(stringFrequencies.Select(v => v * multiplier)); } foreach (var frequency in stringFrequencies) { } } var frequencies = GuitarTuningNotesCreator.GetStringsFrequencies(6); var fft = new FastFourierTransformCPU(AudioContainer.Samples); var scalogramCreator = new ScalogramCreator(AudioContainer, fft); var scalogramContainer = scalogramCreator.CreateScalogram(frequencies); foreach (var scalogram in scalogramContainer.Scalograms) { var localMaximumIndexes = new List <int>(); if (scalogram.Value[0] > scalogram.Value[1]) { localMaximumIndexes.Add(0); } if (scalogram.Value[^ 1] > scalogram.Value[^ 2])
public WaveletTransformNumericalViewModel(SoundDataModel soundDataModel, ScalogramModel scalogramModel) { SoundDataModel = soundDataModel; ScalogramModel = scalogramModel; GenerateAnalysis = new DelegateCommand(() => { var fft = new FastFourierTransformCPU(SoundDataModel.AudioContainer.Samples); var scalogramCreator = new ScalogramCreator(SoundDataModel.AudioContainer, fft); var frequencies = new List <float> { FrequencyToAnalyze }; var scalogramContainer = scalogramCreator.CreateScalogram(frequencies, CyclesCount); var list = new List <DataPoint>(); var n = 1; foreach (var v in scalogramContainer.ScalogramValues) { list.Add(new DataPoint(n++, v)); } Points = list; }); AnalyzeNextFrequency = new DelegateCommand(() => { FrequencyToAnalyze++; GenerateAnalysis.Execute(); }); AnalyzePreviousFrequency = new DelegateCommand(() => { FrequencyToAnalyze--; GenerateAnalysis.Execute(); }); FrequencyToAnalyze = 1; CyclesCount = 3; }