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()); }
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); }