BlottoBeats.Client.Generator.generateJazzChord C# (CSharp) Method

generateJazzChord() private static method

private static generateJazzChord ( int mode, String key, char chord, int length ) : Song.Chord
mode int
key String
chord char
length int
return BlottoBeats.Library.SongData.Song.Chord
        private static Song.Chord generateJazzChord(int mode, String key, char chord, int length)
        {
            String[] notes = { "A", "A#", "B", "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#" };
            String[] keySig = new String[7];
            String[] noteNames = new String[4];
            int chordNumIndex = int.Parse(new String(chord, 1)) - 1;
            int keynum = Array.IndexOf(notes, key);
            //generate chord in major mode
            if (mode == 0)
            {
                //TEST THESE
                keySig[0] = notes[keynum];
                keySig[1] = notes[(keynum + 2) % 12];
                keySig[2] = notes[(keynum + 4) % 12];
                keySig[3] = notes[(keynum + 5) % 12];
                keySig[4] = notes[(keynum + 7) % 12];
                keySig[5] = notes[(keynum + 9) % 12];
                keySig[6] = notes[(keynum + 11) % 12];

                noteNames[0] = keySig[chordNumIndex] + "2";
                noteNames[1] = keySig[chordNumIndex] + "4";
                noteNames[2] = keySig[(chordNumIndex + 2) % 7] + "4";
                noteNames[3] = keySig[(chordNumIndex + 6) % 7] + "4";
                Console.Out.WriteLine(chordNumIndex + 1 + " " + length);
                return new Song.Chord(noteNames, length, chordNumIndex + 1);
            }

            //generate chord in minor mode
            if (mode == 1)
            {
                //TEST THESE
                keySig[0] = notes[keynum];
                keySig[1] = notes[(keynum + 2) % 12];
                keySig[2] = notes[(keynum + 3) % 12];
                keySig[3] = notes[(keynum + 5) % 12];
                keySig[4] = notes[(keynum + 7) % 12];
                keySig[5] = notes[(keynum + 8) % 12];
                keySig[6] = notes[(keynum + 10) % 12];

                //if not a dominant function
                if (chordNumIndex != 4 && chordNumIndex != 6)
                {
                    noteNames[0] = keySig[chordNumIndex] + "2";
                    noteNames[1] = keySig[chordNumIndex] + "4";
                    noteNames[2] = keySig[(chordNumIndex + 2) % 7] + "4";
                    noteNames[3] = keySig[(chordNumIndex + 6) % 7] + "4";
                }
                //if dominant
                if (chordNumIndex == 4)
                {
                    noteNames[0] = keySig[chordNumIndex] + "2";
                    noteNames[1] = keySig[chordNumIndex] + "4";
                    noteNames[3] = keySig[(chordNumIndex + 6) % 7] + "4";
                    //2nd note of the triad is raised a half step
                    //noteNames[2] = notes[(Array.IndexOf(notes, keySig[(chordNumIndex + 2) % 7]) + 1) % 12] + "4";
                    noteNames[2] = notes[(Array.IndexOf(notes, keySig[(chordNumIndex + 2) % 7]) + 1) % 12] + "4";

                }
                //if leading tone
                if (chordNumIndex == 6)
                {
                    //root of the triad is raised a half step
                    noteNames[0] = notes[(Array.IndexOf(notes, keySig[(chordNumIndex)]) + 1) % 12] + "2";
                    noteNames[1] = notes[(Array.IndexOf(notes, keySig[(chordNumIndex)]) + 1) % 12] + "4";
                    noteNames[2] = keySig[(chordNumIndex + 2) % 7] + "4";
                    noteNames[3] = keySig[(chordNumIndex + 6) % 7] + "4";

                }

                Console.Out.WriteLine(chordNumIndex + 1 + " " + length);
                return new Song.Chord(noteNames, length, chordNumIndex + 1);
            }
            return null;
        }