public void Simplification4works()
        {
            var paton = new Pattern
            {
                AsString      = "1,1,1,1,1",
                PatternTypeId = PatternType.Pitch
            };
            var simplito = PatternUtilities.Simpl4(paton);

            Assert.AreEqual(simplito.Length, 1);

            var patin = new Pattern
            {
                AsString      = "2,1,2,1,2,1",
                PatternTypeId = PatternType.Pitch
            };
            var simplote = PatternUtilities.Simpl4(patin);

            Assert.AreEqual(simplote.Length, 2);

            var pate = new Pattern
            {
                AsString      = "2,1,5,4,3,7,3,1,2,6,7,8,9",
                PatternTypeId = PatternType.Pitch
            };
            var simplin = PatternUtilities.Simpl4(pate);

            Assert.AreEqual(simplin.Length, 13);
        }
        public void FindPatternsInListOfIntegers_FindsLongestPatternsOnly()
        {
            var listita = new List <int> {
                3, 3, 4, 5, 7, 8, 3, 5, 4, 3, 3, 5, 3, 3, 4, 5, 2, 1, 3, 4
            };
            var patterns = PatternUtilities.FindPatternsInListOfIntegers(listita, 3, 10).ToList();

            Assert.AreEqual(patterns.Count, 1);
        }
示例#3
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);
        }