示例#1
0
        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);
        }