public void FindSongPatterns() { Versions[0].Occurrences = new List <Occurrence>(); var pitchPatterns = PatternUtilities.FindPatternsOfTypeInSong(this, 0, PatternType.Pitch); foreach (var p in pitchPatterns.Keys) { Versions[0].Occurrences = Versions[0].Occurrences.Concat(pitchPatterns[p]).ToList(); } var rythmPatterns = PatternUtilities.FindPatternsOfTypeInSong(this, 0, PatternType.Rythm); foreach (var p in rythmPatterns.Keys) { Versions[0].Occurrences = Versions[0].Occurrences.Concat(rythmPatterns[p]).ToList(); } var melodyPatterns = PatternUtilities.FindPatternsOfTypeInSong(this, 0, PatternType.Melody); foreach (var p in melodyPatterns.Keys) { Versions[0].Occurrences = Versions[0].Occurrences.Concat(melodyPatterns[p]).ToList(); } }
private async Task ProcesameLosPatterns(Song song) { var allOccurrences = PatternUtilities.FindPatternsOfTypeInSong(song, 0, PatternType.Pitch).Values .Concat(PatternUtilities.FindPatternsOfTypeInSong(song, 0, PatternType.Rythm).Values) .Concat(PatternUtilities.FindPatternsOfTypeInSong(song, 0, PatternType.Melody).Values) .ToList().SelectMany(x => x).ToList(); foreach (var oc in allOccurrences) { var pattern = oc.Pattern; var patito = Repository.GetPatternByStringAndType(pattern.AsString, pattern.PatternTypeId); if (patito == null) { patito = Repository.AddPattern(pattern); } oc.Pattern = patito; oc.PatternId = patito.Id; oc.SongSimplificationId = song.SongSimplifications[0].Id; } song.SongSimplifications[0].Occurrences = allOccurrences; await Repository.UpdateSongAsync(song); }
private List <Occurrence> ProcesameLosPatterns(Song song) { if (!Repository.AreOccurrencesForSongSimplificationAlreadyProcessed(song.SongSimplifications[0].Id)) { var allOccurrences = PatternUtilities.FindPatternsOfTypeInSong(song, 0, PatternType.Pitch).Values .Concat(PatternUtilities.FindPatternsOfTypeInSong(song, 0, PatternType.Rythm).Values) .Concat(PatternUtilities.FindPatternsOfTypeInSong(song, 0, PatternType.Melody).Values) .ToList().SelectMany(x => x).ToList(); var patitos = allOccurrences.Select(x => x.Pattern).Distinct().ToList(); foreach (var pat in patitos) { try { var patito = Repository.GetPatternByStringAndType(pat.AsString, pat.PatternTypeId); if (patito == null) { patito = Repository.AddPattern(pat); } foreach (var oc in allOccurrences.Where(x => x.Pattern.AsString == patito.AsString)) { oc.Pattern = patito; oc.PatternId = patito.Id; oc.SongSimplificationId = song.SongSimplifications[0].Id; Repository.AddOccurrence(oc); } } catch (Exception sacamela) { } } } return(song.SongSimplifications[0].Occurrences); }