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);
        }
예제 #2
0
        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);
        }
예제 #3
0
 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));
 }