Ejemplo n.º 1
0
        public void ChordFactoryTest_getChordRecomendationsTriads()
        {
            Note         key            = NoteFactory.getNoteByName("C");
            Mode         mode           = ModeFactory.getModeByName("Ionian");
            List <Chord> recomendations = ChordFactory.getChordRecomendationsTriads(key, mode);

            Assert.AreEqual("C", recomendations.ElementAt(0).getName());
            Assert.AreEqual("Dm", recomendations.ElementAt(1).getName());
            Assert.AreEqual("Em", recomendations.ElementAt(2).getName());
            Assert.AreEqual("F", recomendations.ElementAt(3).getName());
            Assert.AreEqual("G", recomendations.ElementAt(4).getName());
            Assert.AreEqual("Am", recomendations.ElementAt(5).getName());
            Assert.AreEqual("Bdim", recomendations.ElementAt(6).getName());

            key            = NoteFactory.getNoteByName("F");
            mode           = ModeFactory.getModeByName("Lydian");
            recomendations = ChordFactory.getChordRecomendationsTriads(key, mode);
            Assert.AreEqual("F", recomendations.ElementAt(0).getName());
            Assert.AreEqual("G", recomendations.ElementAt(1).getName());
            Assert.AreEqual("Am", recomendations.ElementAt(2).getName());
            Assert.AreEqual("Bdim", recomendations.ElementAt(3).getName());
            Assert.AreEqual("C", recomendations.ElementAt(4).getName());
            Assert.AreEqual("Dm", recomendations.ElementAt(5).getName());
            Assert.AreEqual("Em", recomendations.ElementAt(6).getName());

            key            = NoteFactory.getNoteByName("G");
            mode           = ModeFactory.getModeByName("Mixolydian");
            recomendations = ChordFactory.getChordRecomendationsTriads(key, mode);
            Assert.AreEqual("G", recomendations.ElementAt(0).getName());
            Assert.AreEqual("Am", recomendations.ElementAt(1).getName());
            Assert.AreEqual("Bdim", recomendations.ElementAt(2).getName());
            Assert.AreEqual("C", recomendations.ElementAt(3).getName());
            Assert.AreEqual("Dm", recomendations.ElementAt(4).getName());
            Assert.AreEqual("Em", recomendations.ElementAt(5).getName());
            Assert.AreEqual("F", recomendations.ElementAt(6).getName());

            key            = NoteFactory.getNoteByName("D");
            mode           = ModeFactory.getModeByName("Dorian");
            recomendations = ChordFactory.getChordRecomendationsTriads(key, mode);
            Assert.AreEqual("Dm", recomendations.ElementAt(0).getName());
            Assert.AreEqual("Em", recomendations.ElementAt(1).getName());
            Assert.AreEqual("F", recomendations.ElementAt(2).getName());
            Assert.AreEqual("G", recomendations.ElementAt(3).getName());
            Assert.AreEqual("Am", recomendations.ElementAt(4).getName());
            Assert.AreEqual("Bdim", recomendations.ElementAt(5).getName());
            Assert.AreEqual("C", recomendations.ElementAt(6).getName());

            key            = NoteFactory.getNoteByName("A");
            mode           = ModeFactory.getModeByName("Aeolian");
            recomendations = ChordFactory.getChordRecomendationsTriads(key, mode);
            Assert.AreEqual("Am", recomendations.ElementAt(0).getName());
            Assert.AreEqual("Bdim", recomendations.ElementAt(1).getName());
            Assert.AreEqual("C", recomendations.ElementAt(2).getName());
            Assert.AreEqual("Dm", recomendations.ElementAt(3).getName());
            Assert.AreEqual("Em", recomendations.ElementAt(4).getName());
            Assert.AreEqual("F", recomendations.ElementAt(5).getName());
            Assert.AreEqual("G", recomendations.ElementAt(6).getName());

            key            = NoteFactory.getNoteByName("E");
            mode           = ModeFactory.getModeByName("Phrygian");
            recomendations = ChordFactory.getChordRecomendationsTriads(key, mode);
            Assert.AreEqual("Em", recomendations.ElementAt(0).getName());
            Assert.AreEqual("F", recomendations.ElementAt(1).getName());
            Assert.AreEqual("G", recomendations.ElementAt(2).getName());
            Assert.AreEqual("Am", recomendations.ElementAt(3).getName());
            Assert.AreEqual("Bdim", recomendations.ElementAt(4).getName());
            Assert.AreEqual("C", recomendations.ElementAt(5).getName());
            Assert.AreEqual("Dm", recomendations.ElementAt(6).getName());

            key            = NoteFactory.getNoteByName("B");
            mode           = ModeFactory.getModeByName("Locrian");
            recomendations = ChordFactory.getChordRecomendationsTriads(key, mode);
            Assert.AreEqual("Bdim", recomendations.ElementAt(0).getName());
            Assert.AreEqual("C", recomendations.ElementAt(1).getName());
            Assert.AreEqual("Dm", recomendations.ElementAt(2).getName());
            Assert.AreEqual("Em", recomendations.ElementAt(3).getName());
            Assert.AreEqual("F", recomendations.ElementAt(4).getName());
            Assert.AreEqual("G", recomendations.ElementAt(5).getName());
            Assert.AreEqual("Am", recomendations.ElementAt(6).getName());
        }
Ejemplo n.º 2
0
        public static Progression addRecomendedChord(Progression progression)
        {
            string inputError = "\nI'm sorry that was not a valid coice." +
                                "\nPlease try again.";
            int          i;
            string       choice;
            bool         validChoice    = false;
            Note         degree         = NoteFactory.getNoteByValue(progression.getKey().getValue(), progression.getKey());
            List <Chord> recomendations = new List <Chord>();

            if (progression.getSize() == 0)
            {
                recomendations = ChordFactory.getChordRecomendationsTriads(progression.getKey(), progression.getMode());
                while (validChoice == false)
                {
                    for (i = 0; i < recomendations.Count(); i++)
                    {
                        System.Console.WriteLine((i + 1).ToString() + ") " + recomendations.ElementAt(i).getName());
                        if (i + 1 == recomendations.Count())
                        {
                            System.Console.WriteLine((i + 2).ToString() + ") See more recomendations");
                        }
                    }
                    System.Console.WriteLine((i + 2).ToString() + ") Back to chord menu");
                    choice = System.Console.ReadLine();

                    for (i = 1; i <= recomendations.Count(); i++)
                    {
                        if (i.ToString() == choice)
                        {
                            validChoice = true;
                            progression.addChord(recomendations.ElementAt(i - 1));
                            System.Console.WriteLine("\n" + progression.getChord(progression.getSize() - 1).getName() + " has been added to the progression.");
                        }
                    }
                    if ((i).ToString() == choice)
                    {
                        validChoice = true;
                        progression = moreRecomendations(progression);
                    }
                    else if ((i + 1).ToString() == choice)
                    {
                        validChoice = true;
                    }
                    if (validChoice == false)
                    {
                        System.Console.WriteLine(inputError);
                    }
                }
            }
            else
            {
                recomendations = ChordFactory.getChordRecomendationsByLast(progression.getKey(), progression.getChord(progression.getSize() - 1), progression.getMode());
                while (validChoice == false)
                {
                    for (i = 0; i < recomendations.Count(); i++)
                    {
                        System.Console.WriteLine((i + 1).ToString() + ") " + recomendations.ElementAt(i).getName());
                        if (i + 1 == recomendations.Count())
                        {
                            System.Console.WriteLine((i + 2).ToString() + ") See more recomendations");
                        }
                    }
                    System.Console.WriteLine((i + 2).ToString() + ") Back to chord menu");
                    choice = System.Console.ReadLine();

                    for (i = 1; i <= recomendations.Count(); i++)
                    {
                        if (i.ToString() == choice)
                        {
                            validChoice = true;
                            progression.addChord(recomendations.ElementAt(i - 1));
                            System.Console.WriteLine("\n" + progression.getChord(progression.getSize() - 1).getName() + " has been added to the progression.");
                        }
                    }
                    if ((i).ToString() == choice)
                    {
                        validChoice = true;
                        progression = moreRecomendations(progression);
                    }
                    else if ((i + 1).ToString() == choice)
                    {
                        validChoice = true;
                    }
                    if (validChoice == false)
                    {
                        System.Console.WriteLine(inputError);
                    }
                }
            }
            return(progression);
        }