public void swapChords(int locationOne, int locationTwo) { Chord tempOne = chords.ElementAt(locationOne); Chord tempTwo = chords.ElementAt(locationTwo); chords.RemoveAt(locationOne); chords.Insert(locationOne, tempTwo); chords.RemoveAt(locationTwo); chords.Insert(locationTwo, tempOne); TabChord tempTabOne = tablature.ElementAt(locationOne); TabChord tempTabTwo = tablature.ElementAt(locationTwo); tablature.RemoveAt(locationOne); tablature.Insert(locationOne, tempTabTwo); tablature.RemoveAt(locationTwo); tablature.Insert(locationTwo, tempTabOne); }
public static TabChord getTabByChord(Chord chord, int pitchPosition, Guitar guitar) { int index = 0; int bassString = 0; string buildDirection = ""; int currentPitchPosition = 0; TabChord tabChord = new TabChord(); tabChord.setPitch(pitchPosition); while (currentPitchPosition < pitchPosition) { if (guitar.getNote(6, index, chord.getNoteAt(0)).getValue() == chord.getNoteAt(0).getValue()) { bassString = 6; tabChord.setFretNumber(6, index.ToString()); currentPitchPosition = currentPitchPosition + 1; buildDirection = "right"; if (index >= 3) { buildDirection = "left"; if (currentPitchPosition < pitchPosition) { currentPitchPosition = currentPitchPosition + 1; buildDirection = "right"; } } if (currentPitchPosition < pitchPosition) { index = index + 1; } } else if (guitar.getNote(5, index, chord.getNoteAt(0)).getValue() == chord.getNoteAt(0).getValue()) { bassString = 5; tabChord.setFretNumber(6, "X"); tabChord.setFretNumber(5, index.ToString()); currentPitchPosition = currentPitchPosition + 1; buildDirection = "right"; if (index >= 3) { buildDirection = "left"; if (currentPitchPosition < pitchPosition) { currentPitchPosition = currentPitchPosition + 1; buildDirection = "right"; } } if (currentPitchPosition < pitchPosition) { index = index + 1; } } else if (guitar.getNote(4, index, chord.getNoteAt(0)).getValue() == chord.getNoteAt(0).getValue()) { bassString = 4; tabChord.setFretNumber(6, "X"); tabChord.setFretNumber(5, "X"); tabChord.setFretNumber(4, index.ToString()); currentPitchPosition = currentPitchPosition + 1; buildDirection = "right"; if (index >= 3) { buildDirection = "left"; if (currentPitchPosition < pitchPosition) { currentPitchPosition = currentPitchPosition + 1; buildDirection = "right"; } } if (currentPitchPosition < pitchPosition) { index = index + 1; } } else { index = index + 1; } } int nextString = bassString - 1; bool found; if (buildDirection == "right") { while (nextString > 0) { found = false; for (int i = index + 3; i >= index; i--) { for (int j = 0; j < chord.getSize(); j++) { if (chord.getNoteAt(j).getValue() == guitar.getNote(nextString, i, chord.getNoteAt(0)).getValue()) { found = true; tabChord.setFretNumber(nextString, i.ToString()); } } } if (found == false) { tabChord.setFretNumber(nextString, "X"); } nextString = nextString - 1; } } else if (buildDirection == "left") { while (nextString > 0) { found = false; for (int i = index; i >= index - 3; i--) { for (int j = 0; j < chord.getSize(); j++) { if (chord.getNoteAt(j).getValue() == guitar.getNote(nextString, i, chord.getNoteAt(0)).getValue()) { found = true; tabChord.setFretNumber(nextString, i.ToString()); } } } if (found == false) { tabChord.setFretNumber(nextString, "X"); } nextString = nextString - 1; } } else { throw new System.ArgumentException("Tablature building for chord " + chord.getName() + " failed", "tabChordFactory"); } return(tabChord); }
public void TabChordFactory_getNoteByChord() { tabChord = TabChordFactory.getTabByChord(ChordFactory.getChordByName("E"), 1, guitar); Assert.AreEqual("0", tabChord.getFretNumber(6)); Assert.AreEqual("2", tabChord.getFretNumber(5)); Assert.AreEqual("2", tabChord.getFretNumber(4)); Assert.AreEqual("1", tabChord.getFretNumber(3)); Assert.AreEqual("0", tabChord.getFretNumber(2)); Assert.AreEqual("0", tabChord.getFretNumber(1)); tabChord = TabChordFactory.getTabByChord(ChordFactory.getChordByName("Am"), 1, guitar); Assert.AreEqual("X", tabChord.getFretNumber(6)); Assert.AreEqual("0", tabChord.getFretNumber(5)); Assert.AreEqual("2", tabChord.getFretNumber(4)); Assert.AreEqual("2", tabChord.getFretNumber(3)); Assert.AreEqual("1", tabChord.getFretNumber(2)); Assert.AreEqual("0", tabChord.getFretNumber(1)); tabChord = TabChordFactory.getTabByChord(ChordFactory.getChordByName("C"), 1, guitar); Assert.AreEqual("X", tabChord.getFretNumber(6)); Assert.AreEqual("3", tabChord.getFretNumber(5)); Assert.AreEqual("2", tabChord.getFretNumber(4)); Assert.AreEqual("0", tabChord.getFretNumber(3)); Assert.AreEqual("1", tabChord.getFretNumber(2)); Assert.AreEqual("0", tabChord.getFretNumber(1)); tabChord = TabChordFactory.getTabByChord(ChordFactory.getChordByName("G"), 1, guitar); Assert.AreEqual("3", tabChord.getFretNumber(6)); Assert.AreEqual("2", tabChord.getFretNumber(5)); Assert.AreEqual("0", tabChord.getFretNumber(4)); Assert.AreEqual("0", tabChord.getFretNumber(3)); Assert.AreEqual("0", tabChord.getFretNumber(2)); Assert.AreEqual("3", tabChord.getFretNumber(1)); tabChord = TabChordFactory.getTabByChord(ChordFactory.getChordByName("G"), 2, guitar); Assert.AreEqual("3", tabChord.getFretNumber(6)); Assert.AreEqual("5", tabChord.getFretNumber(5)); Assert.AreEqual("5", tabChord.getFretNumber(4)); Assert.AreEqual("4", tabChord.getFretNumber(3)); Assert.AreEqual("3", tabChord.getFretNumber(2)); Assert.AreEqual("3", tabChord.getFretNumber(1)); tabChord = TabChordFactory.getTabByChord(ChordFactory.getChordByName("E"), 2, guitar); Assert.AreEqual("X", tabChord.getFretNumber(6)); Assert.AreEqual("X", tabChord.getFretNumber(5)); Assert.AreEqual("2", tabChord.getFretNumber(4)); Assert.AreEqual("4", tabChord.getFretNumber(3)); Assert.AreEqual("5", tabChord.getFretNumber(2)); Assert.AreEqual("4", tabChord.getFretNumber(1)); tabChord = TabChordFactory.getTabByChord(ChordFactory.getChordByName("E"), 3, guitar); Assert.AreEqual("X", tabChord.getFretNumber(6)); Assert.AreEqual("7", tabChord.getFretNumber(5)); Assert.AreEqual("6", tabChord.getFretNumber(4)); Assert.AreEqual("4", tabChord.getFretNumber(3)); Assert.AreEqual("5", tabChord.getFretNumber(2)); Assert.AreEqual("4", tabChord.getFretNumber(1)); tabChord = TabChordFactory.getTabByChord(ChordFactory.getChordByName("C"), 1, guitar); Assert.AreEqual("X", tabChord.getFretNumber(6)); Assert.AreEqual("3", tabChord.getFretNumber(5)); Assert.AreEqual("2", tabChord.getFretNumber(4)); Assert.AreEqual("0", tabChord.getFretNumber(3)); Assert.AreEqual("1", tabChord.getFretNumber(2)); Assert.AreEqual("0", tabChord.getFretNumber(1)); tabChord = TabChordFactory.getTabByChord(ChordFactory.getChordByName("Dmaj9"), 1, guitar); Assert.AreEqual("X", tabChord.getFretNumber(6)); Assert.AreEqual("X", tabChord.getFretNumber(5)); Assert.AreEqual("0", tabChord.getFretNumber(4)); Assert.AreEqual("2", tabChord.getFretNumber(3)); Assert.AreEqual("2", tabChord.getFretNumber(2)); Assert.AreEqual("0", tabChord.getFretNumber(1)); tabChord = TabChordFactory.getTabByChord(ChordFactory.getChordByName("F7+"), 1, guitar); Assert.AreEqual("1", tabChord.getFretNumber(6)); Assert.AreEqual("4", tabChord.getFretNumber(5)); Assert.AreEqual("1", tabChord.getFretNumber(4)); Assert.AreEqual("2", tabChord.getFretNumber(3)); Assert.AreEqual("2", tabChord.getFretNumber(2)); Assert.AreEqual("1", tabChord.getFretNumber(1)); tabChord = TabChordFactory.getTabByChord(ChordFactory.getChordByName("Fm7(b5)"), 3, guitar); Assert.AreEqual("X", tabChord.getFretNumber(6)); Assert.AreEqual("X", tabChord.getFretNumber(5)); Assert.AreEqual("3", tabChord.getFretNumber(4)); Assert.AreEqual("4", tabChord.getFretNumber(3)); Assert.AreEqual("4", tabChord.getFretNumber(2)); Assert.AreEqual("4", tabChord.getFretNumber(1)); }