Ejemplo n.º 1
0
 /// <summary>
 /// Creates a chord
 /// </summary>
 /// <param name="chordflags">Flags for the chord</param>
 /// <param name="chordFamily">Chord family</param>
 /// <param name="chordType">Chord type</param>
 /// <returns>Generated chord</returns>
 public Chord PlayChord(ChordFlags chordflags, ChordFamily chordFamily, ChordType chordType)
 {
     return new Chord(chordflags, _nStrings, chordFamily, chordType);
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Creates a chord
        /// </summary>
        /// <param name="flags">Flags for the chord</param>
        /// <param name="strings">Number of strings in the chord</param>
        /// <param name="family">Chord family of the chord</param>
        /// <param name="type">Chord type of the chord</param>
        public Chord(ChordFlags flags, int strings, ChordFamily family, ChordType type)
        {
            _strings = new int[strings];
            InitializeStringsToValue(0);
            _nStrings = strings;
            _flags = flags;

            #region Template for any chord type
            //this[-6] = 0; this[-5] = 0; this[-4] = 0; this[-3] = 0; this[-2] = 0; this[-1] = 0;
            //switch (family)
            //{
            //    case ChordFamily.C:
            //        InitializeStringsToValue(-1);
            //        this[-6] = -1; this[-5] = -1; this[-4] = -1; this[-3] = -1; this[-2] = -1; this[-1] = -1;
            //        break;
            //    case ChordFamily.D:
            //        InitializeStringsToValue(-1);
            //        this[-6] = -1; this[-5] = -1; this[-4] = -1; this[-3] = -1; this[-2] = -1; this[-1] = -1;
            //        break;
            //    case ChordFamily.E:
            //        InitializeStringsToValue(-1);
            //        this[-6] = -1; this[-5] = -1; this[-4] = -1; this[-3] = -1; this[-2] = -1; this[-1] = -1;
            //        break;
            //    case ChordFamily.F:
            //        InitializeStringsToValue(-1);
            //        this[-6] = -1; this[-5] = -1; this[-4] = -1; this[-3] = -1; this[-2] = -1; this[-1] = -1;
            //        break;
            //    case ChordFamily.G:
            //        InitializeStringsToValue(-1);
            //        this[-6] = -1; this[-5] = -1; this[-4] = -1; this[-3] = -1; this[-2] = -1; this[-1] = -1;
            //        break;
            //    case ChordFamily.A:
            //        InitializeStringsToValue(-1);
            //        this[-6] = -1; this[-5] = -1; this[-4] = -1; this[-3] = -1; this[-2] = -1; this[-1] = -1;
            //        break;
            //    case ChordFamily.B:
            //        InitializeStringsToValue(-1);
            //        this[-6] = -1; this[-5] = -1; this[-4] = -1; this[-3] = -1; this[-2] = -1; this[-1] = -1;
            //        break;
            //    case ChordFamily.CSharp:
            //    case ChordFamily.DFlat:
            //        InitializeStringsToValue(-1);
            //        this[-6] = -1; this[-5] = -1; this[-4] = -1; this[-3] = -1; this[-2] = -1; this[-1] = -1;
            //        break;
            //    case ChordFamily.DSharp:
            //    case ChordFamily.EFlat:
            //        InitializeStringsToValue(-1);
            //        this[-6] = -1; this[-5] = -1; this[-4] = -1; this[-3] = -1; this[-2] = -1; this[-1] = -1;
            //        break;
            //    case ChordFamily.FSharp:
            //    case ChordFamily.GFlat:
            //        InitializeStringsToValue(-1);
            //        this[-6] = -1; this[-5] = -1; this[-4] = -1; this[-3] = -1; this[-2] = -1; this[-1] = -1;
            //        break;
            //    case ChordFamily.GSharp:
            //    case ChordFamily.AFlat:
            //        InitializeStringsToValue(-1);
            //        this[-6] = -1; this[-5] = -1; this[-4] = -1; this[-3] = -1; this[-2] = -1; this[-1] = -1;
            //        break;
            //    case ChordFamily.ASharp:
            //    case ChordFamily.BFlat:
            //        InitializeStringsToValue(-1);
            //        this[-6] = -1; this[-5] = -1; this[-4] = -1; this[-3] = -1; this[-2] = -1; this[-1] = -1;
            //        break;
            //}
            #endregion

            switch (type)
            {
                case ChordType.Major:
                    #region Major chords
                    switch (family)
                    {
                        case ChordFamily.C:
                            this[-6] = 3; this[-5] = 3; this[-4] = 2; this[-3] = 0; this[-2] = 1; this[-1] = 0;
                            break;
                        case ChordFamily.D:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 0; this[-4] = 0; this[-3] = 2; this[-2] = 3; this[-1] = 2;
                            break;
                        case ChordFamily.E:
                            this[-6] = 0; this[-5] = 2; this[-4] = 2; this[-3] = 1; this[-2] = 0; this[-1] = 0;
                            break;
                        case ChordFamily.F:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 3; this[-4] = 3; this[-3] = 2; this[-2] = 1; this[-1] = 1;
                            break;
                        case ChordFamily.G:
                            this[-6] = 3; this[-5] = 2; this[-4] = 0; this[-3] = 0; this[-2] = 0; this[-1] = 3;
                            break;
                        case ChordFamily.A:
                            this[-6] = 0; this[-5] = 0; this[-4] = 2; this[-3] = 2; this[-2] = 2; this[-1] = 0;
                            break;
                        case ChordFamily.B:
                            InitializeStringsToValue(2);
                            this[-6] = 2; this[-5] = 2; this[-4] = 4; this[-3] = 4; this[-2] = 4; this[-1] = 2;
                            break;
                        case ChordFamily.CSharp:
                        case ChordFamily.DFlat:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 4; this[-4] = 3; this[-3] = 1; this[-2] = 2; this[-1] = 1;
                            break;
                        case ChordFamily.DSharp:
                        case ChordFamily.EFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 1; this[-4] = 1; this[-3] = 3; this[-2] = 4; this[-1] = 3;
                            break;
                        case ChordFamily.FSharp:
                        case ChordFamily.GFlat:
                            InitializeStringsToValue(2);
                            this[-6] = 2; this[-5] = 4; this[-4] = 4; this[-3] = 3; this[-2] = 2; this[-1] = 2;
                            break;
                        case ChordFamily.GSharp:
                        case ChordFamily.AFlat:
                            this[-6] = 4; this[-5] = 3; this[-4] = 1; this[-3] = 1; this[-2] = 1; this[-1] = 4;
                            break;
                        case ChordFamily.ASharp:
                        case ChordFamily.BFlat:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 1; this[-4] = 3; this[-3] = 3; this[-2] = 3; this[-1] = 1;
                            break;
                    }
                    break;
                    #endregion
                case ChordType.Minor:
                    #region Minor chords
                    switch (family)
                    {
                        case ChordFamily.C:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 3; this[-4] = 1; this[-3] = 0; this[-2] = 4; this[-1] = 3;
                            break;
                        case ChordFamily.D:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 0; this[-4] = 0; this[-3] = 2; this[-2] = 3; this[-1] = 1;
                            break;
                        case ChordFamily.E:
                            this[-6] = 0; this[-5] = 2; this[-4] = 2; this[-3] = 0; this[-2] = 0; this[-1] = 0;
                            break;
                        case ChordFamily.F:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 3; this[-4] = 3; this[-3] = 1; this[-2] = 1; this[-1] = 1;
                            break;
                        case ChordFamily.G:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 1; this[-4] = 0; this[-3] = 3; this[-2] = 3; this[-1] = 3;
                            break;
                        case ChordFamily.A:
                            this[-6] = 0; this[-5] = 0; this[-4] = 2; this[-3] = 2; this[-2] = 1; this[-1] = 0;
                            break;
                        case ChordFamily.B:
                            InitializeStringsToValue(2);
                            this[-6] = 2; this[-5] = 2; this[-4] = 4; this[-3] = 4; this[-2] = 3; this[-1] = 2;
                            break;
                        case ChordFamily.CSharp:
                        case ChordFamily.DFlat:
                            this[-6] = 0; this[-5] = -1; this[-4] = 2; this[-3] = 1; this[-2] = 2; this[-1] = 4;
                            break;
                        case ChordFamily.DSharp:
                        case ChordFamily.EFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 1; this[-4] = 1; this[-3] = 3; this[-2] = 4; this[-1] = 2;
                            break;
                        case ChordFamily.FSharp:
                        case ChordFamily.GFlat:
                            InitializeStringsToValue(2);
                            this[-6] = 2; this[-5] = 4; this[-4] = 4; this[-3] = 2; this[-2] = 2; this[-1] = 2;
                            break;
                        case ChordFamily.GSharp:
                        case ChordFamily.AFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 2; this[-4] = 1; this[-3] = 4; this[-2] = 4; this[-1] = 4;
                            break;
                        case ChordFamily.ASharp:
                        case ChordFamily.BFlat:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 1; this[-4] = 3; this[-3] = 3; this[-2] = 3; this[-1] = 1;
                            break;
                    }
                    break;
                    #endregion
                case ChordType.Suspended_4th:
                    #region Suspended 4th chords
                    switch (family)
                    {
                        case ChordFamily.C:
                            this[-6] = 3; this[-5] = 3; this[-4] = 3; this[-3] = 0; this[-2] = 1; this[-1] = 1;
                            break;
                        case ChordFamily.D:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 0; this[-4] = 0; this[-3] = 2; this[-2] = 2; this[-1] = 3;
                            break;
                        case ChordFamily.E:
                            this[-6] = 0; this[-5] = 2; this[-4] = 2; this[-3] = 2; this[-2] = 0; this[-1] = 0;
                            break;
                        case ChordFamily.F:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 1; this[-4] = 3; this[-3] = 3; this[-2] = 1; this[-1] = 1;
                            break;
                        case ChordFamily.G:
                            this[-6] = 3; this[-5] = 3; this[-4] = 0; this[-3] = 0; this[-2] = 1; this[-1] = 3;
                            break;
                        case ChordFamily.A:
                            this[-6] = 0; this[-5] = 0; this[-4] = 2; this[-3] = 2; this[-2] = 3; this[-1] = 0;
                            break;
                        case ChordFamily.B:
                            InitializeStringsToValue(2);
                            this[-6] = 2; this[-5] = 2; this[-4] = 4; this[-3] = 4; this[-2] = 5; this[-1] = 2;
                            break;
                        case ChordFamily.CSharp:
                        case ChordFamily.DFlat:
                            InitializeStringsToValue(4);
                            this[-6] = 4; this[-5] = 4; this[-4] = 6; this[-3] = 6; this[-2] = 7; this[-1] = 4;
                            break;
                        case ChordFamily.DSharp:
                        case ChordFamily.EFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 1; this[-4] = 1; this[-3] = 1; this[-2] = 4; this[-1] = 4;
                            break;
                        case ChordFamily.FSharp:
                        case ChordFamily.GFlat:
                            InitializeStringsToValue(2);
                            this[-6] = 2; this[-5] = 2; this[-4] = 4; this[-3] = 4; this[-2] = 2; this[-1] = 2;
                            break;
                        case ChordFamily.GSharp:
                        case ChordFamily.AFlat:
                            InitializeStringsToValue(4);
                            this[-6] = 4; this[-5] = 4; this[-4] = 6; this[-3] = 6; this[-2] = 4; this[-1] = 4;
                            break;
                        case ChordFamily.ASharp:
                        case ChordFamily.BFlat:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 1; this[-4] = 1; this[-3] = 3; this[-2] = 4; this[-1] = 1;
                            break;
                    }
                    break;
                    #endregion
                case ChordType.Augmented_5th:
                    #region Augmented 5th chords
                    switch (family)
                    {
                        case ChordFamily.C:
                            this[-6] = 0; this[-5] = 3; this[-4] = 2; this[-3] = 1; this[-2] = 1; this[-1] = 0;
                            break;
                        case ChordFamily.D:
                            InitializeStringsToValue(-1);
                            this[-6] = 2; this[-5] = -1; this[-4] = 4; this[-3] = 3; this[-2] = 3; this[-1] = 2;
                            break;
                        case ChordFamily.E:
                            this[-6] = 0; this[-5] = -1; this[-4] = 2; this[-3] = 1; this[-2] = 1; this[-1] = 0;
                            break;
                        case ChordFamily.F:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = -1; this[-4] = 3; this[-3] = 2; this[-2] = 2; this[-1] = 1;
                            break;
                        case ChordFamily.G:
                            this[-6] = 3; this[-5] = 2; this[-4] = 1; this[-3] = 0; this[-2] = 0; this[-1] = 3;
                            break;
                        case ChordFamily.A:
                            this[-6] = 1; this[-5] = 0; this[-4] = 3; this[-3] = 2; this[-2] = 2; this[-1] = 1;
                            break;
                        case ChordFamily.B:
                            InitializeStringsToValue(3);
                            this[-6] = 3; this[-5] = -1; this[-4] = 5; this[-3] = 4; this[-2] = 4; this[-1] = 3;
                            break;
                        case ChordFamily.CSharp:
                        case ChordFamily.DFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 0; this[-4] = 3; this[-3] = 2; this[-2] = 2; this[-1] = 1;
                            break;
                        case ChordFamily.DSharp:
                        case ChordFamily.EFlat:
                            this[-6] = 3; this[-5] = 2; this[-4] = 1; this[-3] = 0; this[-2] = 0; this[-1] = 3;
                            break;
                        case ChordFamily.FSharp:
                        case ChordFamily.GFlat:
                            InitializeStringsToValue(2);
                            this[-6] = 2; this[-5] = -1; this[-4] = 4; this[-3] = 3; this[-2] = 3; this[-1] = 2;
                            break;
                        case ChordFamily.GSharp:
                        case ChordFamily.AFlat:
                            this[-6] = 0; this[-5] = 3; this[-4] = 2; this[-3] = 1; this[-2] = 1; this[-1] = 4;
                            break;
                        case ChordFamily.ASharp:
                        case ChordFamily.BFlat:
                            InitializeStringsToValue(2);
                            this[-6] = 2; this[-5] = -1; this[-4] = 4; this[-3] = 3; this[-2] = 3; this[-1] = 2;
                            break;
                    }
                    break;
                    #endregion
                case ChordType.Diminished_5th:
                    #region Diminished 5th chords
                    switch (family)
                    {
                        case ChordFamily.C:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = -1; this[-4] = 4; this[-3] = 5; this[-2] = 4; this[-1] = 2;
                            break;
                        case ChordFamily.D:
                            InitializeStringsToValue(-1);
                            this[-6] = 1; this[-5] = -1; this[-4] = 3; this[-3] = 1; this[-2] = 3; this[-1] = 1;
                            break;
                        case ChordFamily.E:
                            InitializeStringsToValue(-1);
                            this[-6] = 3; this[-5] = -1; this[-4] = 5; this[-3] = 3; this[-2] = 5; this[-1] = 3;
                            break;
                        case ChordFamily.F:
                            this[-6] = 1; this[-5] = 2; this[-4] = 3; this[-3] = 1; this[-2] = 0; this[-1] = 1;
                            break;
                        case ChordFamily.G:
                            this[-6] = 3; this[-5] = 4; this[-4] = 0; this[-3] = 3; this[-2] = 2; this[-1] = 3;
                            break;
                        case ChordFamily.A:
                            this[-6] = 5; this[-5] = 6; this[-4] = 7; this[-3] = 5; this[-2] = 4; this[-1] = 5;
                            break;
                        case ChordFamily.B:
                            InitializeStringsToValue(-1);
                            this[-6] = 1; this[-5] = -1; this[-4] = 3; this[-3] = 4; this[-2] = 3; this[-1] = 1;
                            break;
                        case ChordFamily.CSharp:
                        case ChordFamily.DFlat:
                            this[-6] = 0; this[-5] = -1; this[-4] = 2; this[-3] = 0; this[-2] = 2; this[-1] = 3;
                            break;
                        case ChordFamily.DSharp:
                        case ChordFamily.EFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = 2; this[-5] = -1; this[-4] = 4; this[-3] = 2; this[-2] = 4; this[-1] = 2;
                            break;
                        case ChordFamily.FSharp:
                        case ChordFamily.GFlat:
                            this[-6] = 2; this[-5] = 0; this[-4] = 4; this[-3] = 2; this[-2] = 1; this[-1] = 2;
                            break;
                        case ChordFamily.GSharp:
                        case ChordFamily.AFlat:
                            this[-6] = 4; this[-5] = 5; this[-4] = 0; this[-3] = 4; this[-2] = 3; this[-1] = 4;
                            break;
                        case ChordFamily.ASharp:
                        case ChordFamily.BFlat:
                            this[-6] = 0; this[-5] = 1; this[-4] = 2; this[-3] = 3; this[-2] = 2; this[-1] = 0;
                            break;
                    }
                    break;
                    #endregion
                case ChordType.Major_6th:
                    #region Major 6th chords
                    switch (family)
                    {
                        case ChordFamily.C:
                            this[-6] = 0; this[-5] = 3; this[-4] = 2; this[-3] = 2; this[-2] = 1; this[-1] = 0;
                            break;
                        case ChordFamily.D:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 0; this[-4] = 0; this[-3] = 2; this[-2] = 0; this[-1] = 2;
                            break;
                        case ChordFamily.E:
                            this[-6] = 0; this[-5] = 2; this[-4] = 2; this[-3] = 1; this[-2] = 2; this[-1] = 0;
                            break;
                        case ChordFamily.F:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 3; this[-4] = 3; this[-3] = 5; this[-2] = 3; this[-1] = 5;
                            break;
                        case ChordFamily.G:
                            this[-6] = 3; this[-5] = 2; this[-4] = 0; this[-3] = 0; this[-2] = 0; this[-1] = 0;
                            break;
                        case ChordFamily.A:
                            this[-6] = 0; this[-5] = 0; this[-4] = 2; this[-3] = 2; this[-2] = 2; this[-1] = 2;
                            break;
                        case ChordFamily.B:
                            InitializeStringsToValue(2);
                            this[-6] = 2; this[-5] = 2; this[-4] = 4; this[-3] = 4; this[-2] = 4; this[-1] = 4;
                            break;
                        case ChordFamily.CSharp:
                        case ChordFamily.DFlat:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 1; this[-4] = 3; this[-3] = 1; this[-2] = 2; this[-1] = 1;
                            break;
                        case ChordFamily.DSharp:
                        case ChordFamily.EFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 1; this[-4] = 1; this[-3] = 3; this[-2] = 1; this[-1] = 3;
                            break;
                        case ChordFamily.FSharp:
                        case ChordFamily.GFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 4; this[-4] = 4; this[-3] = 6; this[-2] = 4; this[-1] = 6;
                            break;
                        case ChordFamily.GSharp:
                        case ChordFamily.AFlat:
                            InitializeStringsToValue(1);
                            this[-6] = 4; this[-5] = 3; this[-4] = 1; this[-3] = 1; this[-2] = 1; this[-1] = 1;
                            break;
                        case ChordFamily.ASharp:
                        case ChordFamily.BFlat:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 1; this[-4] = 3; this[-3] = 3; this[-2] = 3; this[-1] = 3;
                            break;
                    }
                    break;
                    #endregion
                case ChordType.Minor_6th:
                    #region Minor 6th chords
                    switch (family)
                    {
                        case ChordFamily.C:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 3; this[-4] = 1; this[-3] = 2; this[-2] = 1; this[-1] = 3;
                            break;
                        case ChordFamily.D:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 0; this[-4] = 0; this[-3] = 2; this[-2] = 0; this[-1] = 1;
                            break;
                        case ChordFamily.E:
                            this[-6] = 0; this[-5] = 2; this[-4] = 2; this[-3] = 0; this[-2] = 2; this[-1] = 0;
                            break;
                        case ChordFamily.F:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 3; this[-4] = 3; this[-3] = 1; this[-2] = 3; this[-1] = 1;
                            break;
                        case ChordFamily.G:
                            this[-6] = 0; this[-5] = 1; this[-4] = 0; this[-3] = 0; this[-2] = 3; this[-1] = 0;
                            break;
                        case ChordFamily.A:
                            this[-6] = 2; this[-5] = 0; this[-4] = 2; this[-3] = 2; this[-2] = 1; this[-1] = 2;
                            break;
                        case ChordFamily.B:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 2; this[-4] = 0; this[-3] = 1; this[-2] = 3; this[-1] = 2;
                            break;
                        case ChordFamily.CSharp:
                        case ChordFamily.DFlat:
                            this[-6] = 0; this[-5] = 4; this[-4] = 2; this[-3] = 3; this[-2] = 2; this[-1] = 4;
                            break;
                        case ChordFamily.DSharp:
                        case ChordFamily.EFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 1; this[-4] = 1; this[-3] = 3; this[-2] = 1; this[-1] = 2;
                            break;
                        case ChordFamily.FSharp:
                        case ChordFamily.GFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 4; this[-4] = 4; this[-3] = 6; this[-2] = 4; this[-1] = 5;
                            break;
                        case ChordFamily.GSharp:
                        case ChordFamily.AFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = -1; this[-4] = 1; this[-3] = 1; this[-2] = 0; this[-1] = 1;
                            break;
                        case ChordFamily.ASharp:
                        case ChordFamily.BFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = 1; this[-5] = 1; this[-4] = 3; this[-3] = 3; this[-2] = 3; this[-1] = 3;
                            break;
                    }
                    break;
                    #endregion
                case ChordType.Suspended_7th:
                    #region Suspended 7th chords
                    switch (family)
                    {
                        case ChordFamily.C:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 1; this[-4] = 3; this[-3] = 3; this[-2] = 1; this[-1] = 1;
                            break;
                        case ChordFamily.D:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 0; this[-4] = 0; this[-3] = 2; this[-2] = 1; this[-1] = 3;
                            break;
                        case ChordFamily.E:
                            this[-6] = 0; this[-5] = 2; this[-4] = 0; this[-3] = 2; this[-2] = 0; this[-1] = 0;
                            break;
                        case ChordFamily.F:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 3; this[-4] = 1; this[-3] = 3; this[-2] = 1; this[-1] = 1;
                            break;
                        case ChordFamily.G:
                            this[-6] = 3; this[-5] = 3; this[-4] = 0; this[-3] = 0; this[-2] = 1; this[-1] = 1;
                            break;
                        case ChordFamily.A:
                            this[-6] = 0; this[-5] = 0; this[-4] = 2; this[-3] = 0; this[-2] = 3; this[-1] = 0;
                            break;
                        case ChordFamily.B:
                            InitializeStringsToValue(2);
                            this[-6] = 2; this[-5] = 2; this[-4] = 2; this[-3] = 2; this[-2] = 5; this[-1] = 2;
                            break;
                        case ChordFamily.CSharp:
                        case ChordFamily.DFlat:
                            this[-6] = 2; this[-5] = 2; this[-4] = 4; this[-3] = 4; this[-2] = 2; this[-1] = 2;
                            break;
                        case ChordFamily.DSharp:
                        case ChordFamily.EFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 1; this[-4] = 1; this[-3] = 1; this[-2] = 2; this[-1] = 4;
                            break;
                        case ChordFamily.FSharp:
                        case ChordFamily.GFlat:
                            InitializeStringsToValue(2);
                            this[-6] = 2; this[-5] = 4; this[-4] = 2; this[-3] = 4; this[-2] = 2; this[-1] = 2;
                            break;
                        case ChordFamily.GSharp:
                        case ChordFamily.AFlat:
                            InitializeStringsToValue(4);
                            this[-6] = 4; this[-5] = 4; this[-4] = 4; this[-3] = 6; this[-2] = 4; this[-1] = 4;
                            break;
                        case ChordFamily.ASharp:
                        case ChordFamily.BFlat:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 1; this[-4] = 1; this[-3] = 1; this[-2] = 3; this[-1] = 1;
                            break;
                    }
                    break;
                    #endregion
                case ChordType.Dominant_7th:
                    #region Dominant 7th chords
                    switch (family)
                    {
                        case ChordFamily.C:
                            this[-6] = 0; this[-5] = 3; this[-4] = 2; this[-3] = 3; this[-2] = 1; this[-1] = 0;
                            break;
                        case ChordFamily.D:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 0; this[-4] = 0; this[-3] = 2; this[-2] = 1; this[-1] = 2;
                            break;
                        case ChordFamily.E:
                            this[-6] = 0; this[-5] = 2; this[-4] = 2; this[-3] = 1; this[-2] = 3; this[-1] = 0;
                            break;
                        case ChordFamily.F:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 3; this[-4] = 1; this[-3] = 2; this[-2] = 1; this[-1] = 1;
                            break;
                        case ChordFamily.G:
                            this[-6] = 3; this[-5] = 2; this[-4] = 0; this[-3] = 0; this[-2] = 0; this[-1] = 1;
                            break;
                        case ChordFamily.A:
                            this[-6] = 0; this[-5] = 0; this[-4] = 2; this[-3] = 0; this[-2] = 2; this[-1] = 0;
                            break;
                        case ChordFamily.B:
                            InitializeStringsToValue(2);
                            this[-6] = 2; this[-5] = 2; this[-4] = 4; this[-3] = 2; this[-2] = 4; this[-1] = 2;
                            break;
                        case ChordFamily.CSharp:
                        case ChordFamily.DFlat:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 4; this[-4] = 3; this[-3] = 1; this[-2] = 2; this[-1] = 1;
                            break;
                        case ChordFamily.DSharp:
                        case ChordFamily.EFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 1; this[-4] = 1; this[-3] = 3; this[-2] = 2; this[-1] = 3;
                            break;
                        case ChordFamily.FSharp:
                        case ChordFamily.GFlat:
                            InitializeStringsToValue(2);
                            this[-6] = 2; this[-5] = 4; this[-4] = 2; this[-3] = 3; this[-2] = 2; this[-1] = 2;
                            break;
                        case ChordFamily.GSharp:
                        case ChordFamily.AFlat:
                            this[-6] = 4; this[-5] = 3; this[-4] = 1; this[-3] = 1; this[-2] = 1; this[-1] = 2;
                            break;
                        case ChordFamily.ASharp:
                        case ChordFamily.BFlat:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 1; this[-4] = 3; this[-3] = 1; this[-2] = 3; this[-1] = 1;
                            break;
                    }
                    break;
                    #endregion
                case ChordType.Augmented_7th:
                    #region Augmented 7th chords
                    switch (family)
                    {
                        case ChordFamily.C:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 1; this[-4] = 2; this[-3] = 3; this[-2] = 1; this[-1] = 4;
                            break;
                        case ChordFamily.D:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = -1; this[-4] = 0; this[-3] = 3; this[-2] = 1; this[-1] = 2;
                            break;
                        case ChordFamily.E:
                            this[-6] = 0; this[-5] = 2; this[-4] = 0; this[-3] = 1; this[-2] = 1; this[-1] = 0;
                            break;
                        case ChordFamily.F:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 3; this[-4] = 1; this[-3] = 2; this[-2] = 2; this[-1] = 1;
                            break;
                        case ChordFamily.G:
                            this[-6] = 3; this[-5] = 2; this[-4] = 1; this[-3] = 0; this[-2] = 0; this[-1] = 1;
                            break;
                        case ChordFamily.A:
                            this[-6] = 1; this[-5] = 4; this[-4] = 3; this[-3] = 0; this[-2] = 2; this[-1] = 1;
                            break;
                        case ChordFamily.B:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 2; this[-4] = 1; this[-3] = 2; this[-2] = 0; this[-1] = 3;
                            break;
                        case ChordFamily.CSharp:
                        case ChordFamily.DFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 2; this[-4] = 3; this[-3] = 4; this[-2] = 2; this[-1] = 5;
                            break;
                        case ChordFamily.DSharp:
                        case ChordFamily.EFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = -1; this[-4] = 1; this[-3] = 4; this[-2] = 2; this[-1] = 3;
                            break;
                        case ChordFamily.FSharp:
                        case ChordFamily.GFlat:
                            InitializeStringsToValue(2);
                            this[-6] = 2; this[-5] = 4; this[-4] = 2; this[-3] = 3; this[-2] = 3; this[-1] = 2;
                            break;
                        case ChordFamily.GSharp:
                        case ChordFamily.AFlat:
                            InitializeStringsToValue(4);
                            this[-6] = 4; this[-5] = 4; this[-4] = 4; this[-3] = 6; this[-2] = 4; this[-1] = 4;
                            break;
                        case ChordFamily.ASharp:
                        case ChordFamily.BFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 3; this[-4] = 2; this[-3] = 1; this[-2] = 1; this[-1] = 2;
                            break;
                    }
                    break;
                    #endregion
                case ChordType.Flat5_7th:
                    #region Flat-5 7th chords
                    switch (family)
                    {
                        case ChordFamily.C:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 1; this[-4] = 2; this[-3] = 3; this[-2] = 1; this[-1] = 2;
                            break;
                        case ChordFamily.D:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = -1; this[-4] = 0; this[-3] = 1; this[-2] = 1; this[-1] = 2;
                            break;
                        case ChordFamily.E:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = -1; this[-4] = 2; this[-3] = 3; this[-2] = 3; this[-1] = 4;
                            break;
                        case ChordFamily.F:
                            this[-6] = 1; this[-5] = 0; this[-4] = 1; this[-3] = 2; this[-2] = 0; this[-1] = 1;
                            break;
                        case ChordFamily.G:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = -1; this[-4] = 3; this[-3] = 4; this[-2] = 2; this[-1] = 3;
                            break;
                        case ChordFamily.A:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 0; this[-4] = 1; this[-3] = 0; this[-2] = 2; this[-1] = 3;
                            break;
                        case ChordFamily.B:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 2; this[-4] = 1; this[-3] = 2; this[-2] = 0; this[-1] = 1;
                            break;
                        case ChordFamily.CSharp:
                        case ChordFamily.DFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 2; this[-4] = 3; this[-3] = 4; this[-2] = 2; this[-1] = 3;
                            break;
                        case ChordFamily.DSharp:
                        case ChordFamily.EFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 0; this[-4] = 1; this[-3] = 2; this[-2] = 2; this[-1] = 3;
                            break;
                        case ChordFamily.FSharp:
                        case ChordFamily.GFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = -1; this[-4] = 2; this[-3] = 3; this[-2] = 1; this[-1] = 2;
                            break;
                        case ChordFamily.GSharp:
                        case ChordFamily.AFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = -1; this[-4] = 0; this[-3] = 1; this[-2] = 1; this[-1] = 2;
                            break;
                        case ChordFamily.ASharp:
                        case ChordFamily.BFlat:
                            this[-6] = 0; this[-5] = 1; this[-4] = 2; this[-3] = 1; this[-2] = 3; this[-1] = 4;
                            break;
                    }
                    break;
                    #endregion
                case ChordType.Major_7th:
                    #region Major 7th chords
                    switch (family)
                    {
                        case ChordFamily.C:
                            this[-6] = 0; this[-5] = 3; this[-4] = 2; this[-3] = 0; this[-2] = 0; this[-1] = 0;
                            break;
                        case ChordFamily.D:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 0; this[-4] = 0; this[-3] = 2; this[-2] = 2; this[-1] = 2;
                            break;
                        case ChordFamily.E:
                            this[-6] = 0; this[-5] = 2; this[-4] = 1; this[-3] = 1; this[-2] = 0; this[-1] = 0;
                            break;
                        case ChordFamily.F:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 3; this[-4] = 2; this[-3] = 2; this[-2] = 1; this[-1] = 1;
                            break;
                        case ChordFamily.G:
                            this[-6] = 3; this[-5] = 2; this[-4] = 0; this[-3] = 0; this[-2] = 0; this[-1] = 2;
                            break;
                        case ChordFamily.A:
                            this[-6] = 0; this[-5] = 0; this[-4] = 2; this[-3] = 1; this[-2] = 2; this[-1] = 0;
                            break;
                        case ChordFamily.B:
                            InitializeStringsToValue(2);
                            this[-6] = 2; this[-5] = 2; this[-4] = 4; this[-3] = 3; this[-2] = 4; this[-1] = 2;
                            break;
                        case ChordFamily.CSharp:
                        case ChordFamily.DFlat:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 4; this[-4] = 3; this[-3] = 1; this[-2] = 1; this[-1] = 1;
                            break;
                        case ChordFamily.DSharp:
                        case ChordFamily.EFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 1; this[-4] = 1; this[-3] = 3; this[-2] = 3; this[-1] = 3;
                            break;
                        case ChordFamily.FSharp:
                        case ChordFamily.GFlat:
                            InitializeStringsToValue(2);
                            this[-6] = 2; this[-5] = 4; this[-4] = 3; this[-3] = 3; this[-2] = 2; this[-1] = 2;
                            break;
                        case ChordFamily.GSharp:
                        case ChordFamily.AFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 3; this[-4] = 1; this[-3] = 1; this[-2] = 1; this[-1] = 3;
                            break;
                        case ChordFamily.ASharp:
                        case ChordFamily.BFlat:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 1; this[-4] = 3; this[-3] = 2; this[-2] = 3; this[-1] = 1;
                            break;
                    }
                    break;
                    #endregion
                case ChordType.MajorMinor_7th:
                    #region Major-minor 7th chords
                    switch (family)
                    {
                        case ChordFamily.C:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 2; this[-4] = 1; this[-3] = 0; this[-2] = 0; this[-1] = 3;
                            break;
                        case ChordFamily.D:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 0; this[-4] = 0; this[-3] = 2; this[-2] = 2; this[-1] = 2;
                            break;
                        case ChordFamily.E:
                            this[-6] = 0; this[-5] = 2; this[-4] = 1; this[-3] = 0; this[-2] = 0; this[-1] = 0;
                            break;
                        case ChordFamily.F:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 3; this[-4] = 2; this[-3] = 1; this[-2] = 1; this[-1] = 1;
                            break;
                        case ChordFamily.G:
                            InitializeStringsToValue(3);
                            this[-6] = 3; this[-5] = 5; this[-4] = 4; this[-3] = 3; this[-2] = 3; this[-1] = 3;
                            break;
                        case ChordFamily.A:
                            this[-6] = 0; this[-5] = 0; this[-4] = 2; this[-3] = 1; this[-2] = 1; this[-1] = 0;
                            break;
                        case ChordFamily.B:
                            InitializeStringsToValue(2);
                            this[-6] = 2; this[-5] = 2; this[-4] = 4; this[-3] = 3; this[-2] = 3; this[-1] = 2;
                            break;
                        case ChordFamily.CSharp:
                        case ChordFamily.DFlat:
                            this[-6] = 0; this[-5] = 3; this[-4] = 2; this[-3] = 1; this[-2] = 1; this[-1] = 4;
                            break;
                        case ChordFamily.DSharp:
                        case ChordFamily.EFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 1; this[-4] = 1; this[-3] = 3; this[-2] = 3; this[-1] = 2;
                            break;
                        case ChordFamily.FSharp:
                        case ChordFamily.GFlat:
                            InitializeStringsToValue(2);
                            this[-6] = 2; this[-5] = 4; this[-4] = 3; this[-3] = 2; this[-2] = 2; this[-1] = 2;
                            break;
                        case ChordFamily.GSharp:
                        case ChordFamily.AFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = -1; this[-4] = 1; this[-3] = 1; this[-2] = 0; this[-1] = 3;
                            break;
                        case ChordFamily.ASharp:
                        case ChordFamily.BFlat:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 1; this[-4] = 3; this[-3] = 2; this[-2] = 2; this[-1] = 1;
                            break;
                    }
                    break;
                    #endregion
                case ChordType.Minor_7th:
                    #region Minor 7th chords
                    switch (family)
                    {
                        case ChordFamily.C:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 1; this[-4] = 1; this[-3] = 3; this[-2] = 1; this[-1] = 3;
                            break;
                        case ChordFamily.D:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 0; this[-4] = 0; this[-3] = 2; this[-2] = 1; this[-1] = 1;
                            break;
                        case ChordFamily.E:
                            this[-6] = 0; this[-5] = 2; this[-4] = 0; this[-3] = 0; this[-2] = 0; this[-1] = 0;
                            break;
                        case ChordFamily.F:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 3; this[-4] = 1; this[-3] = 1; this[-2] = 1; this[-1] = 1;
                            break;
                        case ChordFamily.G:
                            InitializeStringsToValue(3);
                            this[-6] = 3; this[-5] = 5; this[-4] = 3; this[-3] = 3; this[-2] = 3; this[-1] = 3;
                            break;
                        case ChordFamily.A:
                            this[-6] = 0; this[-5] = 0; this[-4] = 2; this[-3] = 0; this[-2] = 1; this[-1] = 0;
                            break;
                        case ChordFamily.B:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 2; this[-4] = 0; this[-3] = 2; this[-2] = 0; this[-1] = 2;
                            break;
                        case ChordFamily.CSharp:
                        case ChordFamily.DFlat:
                            this[-6] = 0; this[-5] = 2; this[-4] = 2; this[-3] = 4; this[-2] = 2; this[-1] = 4;
                            break;
                        case ChordFamily.DSharp:
                        case ChordFamily.EFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 1; this[-4] = 1; this[-3] = 3; this[-2] = 2; this[-1] = 2;
                            break;
                        case ChordFamily.FSharp:
                        case ChordFamily.GFlat:
                            InitializeStringsToValue(2);
                            this[-6] = 2; this[-5] = 4; this[-4] = 2; this[-3] = 2; this[-2] = 2; this[-1] = 2;
                            break;
                        case ChordFamily.GSharp:
                        case ChordFamily.AFlat:
                            this[-6] = 0; this[-5] = 0; this[-4] = 2; this[-3] = 2; this[-2] = 1; this[-1] = 3;
                            break;
                        case ChordFamily.ASharp:
                        case ChordFamily.BFlat:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 1; this[-4] = 3; this[-3] = 1; this[-2] = 2; this[-1] = 1;
                            break;
                    }
                    break;
                    #endregion
                case ChordType.AugmentedMajor_7th:
                    #region Augmented major 7th chords
                    switch (family)
                    {
                        case ChordFamily.C:
                            this[-6] = 0; this[-5] = 3; this[-4] = 2; this[-3] = 1; this[-2] = 0; this[-1] = 0;
                            break;
                        case ChordFamily.D:
                            InitializeStringsToValue(2);
                            this[-6] = 2; this[-5] = 5; this[-4] = 4; this[-3] = 3; this[-2] = 2; this[-1] = 2;
                            break;
                        case ChordFamily.E:
                            this[-6] = 0; this[-5] = -1; this[-4] = 1; this[-3] = 1; this[-2] = 1; this[-1] = 0;
                            break;
                        case ChordFamily.F:
                            this[-6] = 0; this[-5] = 0; this[-4] = 2; this[-3] = 2; this[-2] = 2; this[-1] = 1;
                            break;
                        case ChordFamily.G:
                            this[-6] = 3; this[-5] = 2; this[-4] = 1; this[-3] = 0; this[-2] = 0; this[-1] = 3;
                            break;
                        case ChordFamily.A:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 0; this[-4] = -1; this[-3] = 1; this[-2] = 2; this[-1] = 1;
                            break;
                        case ChordFamily.B:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 2; this[-4] = -1; this[-3] = 3; this[-2] = 4; this[-1] = 3;
                            break;
                        case ChordFamily.CSharp:
                        case ChordFamily.DFlat:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 4; this[-4] = 3; this[-3] = 2; this[-2] = 1; this[-1] = 1;
                            break;
                        case ChordFamily.DSharp:
                        case ChordFamily.EFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 2; this[-4] = 1; this[-3] = 0; this[-2] = 3; this[-1] = 3;
                            break;
                        case ChordFamily.FSharp:
                        case ChordFamily.GFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = -1; this[-4] = 3; this[-3] = 3; this[-2] = 3; this[-1] = 2;
                            break;
                        case ChordFamily.GSharp:
                        case ChordFamily.AFlat:
                            this[-6] = 0; this[-5] = 3; this[-4] = 2; this[-3] = 1; this[-2] = 1; this[-1] = 3;
                            break;
                        case ChordFamily.ASharp:
                        case ChordFamily.BFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 1; this[-4] = 0; this[-3] = 2; this[-2] = 3; this[-1] = 2;
                            break;
                    }
                    break;
                    #endregion
                case ChordType.HalfDiminished_7th:
                    #region Half-diminished 7th chords
                    switch (family)
                    {
                        case ChordFamily.C:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 1; this[-4] = 1; this[-3] = 3; this[-2] = 1; this[-1] = 2;
                            break;
                        case ChordFamily.D:
                            this[-6] = 1; this[-5] = -1; this[-4] = 0; this[-3] = 1; this[-2] = 1; this[-1] = 1;
                            break;
                        case ChordFamily.E:
                            this[-6] = 0; this[-5] = 1; this[-4] = 0; this[-3] = 0; this[-2] = 3; this[-1] = 0;
                            break;
                        case ChordFamily.F:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 2; this[-4] = 1; this[-3] = 1; this[-2] = 4; this[-1] = 1;
                            break;
                        case ChordFamily.G:
                            InitializeStringsToValue(3);
                            this[-6] = 3; this[-5] = 4; this[-4] = 3; this[-3] = 3; this[-2] = 6; this[-1] = 3;
                            break;
                        case ChordFamily.A:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 0; this[-4] = 1; this[-3] = 0; this[-2] = 1; this[-1] = 3;
                            break;
                        case ChordFamily.B:
                            this[-6] = 1; this[-5] = 0; this[-4] = 0; this[-3] = 2; this[-2] = 0; this[-1] = 1;
                            break;
                        case ChordFamily.CSharp:
                        case ChordFamily.DFlat:
                            this[-6] = 0; this[-5] = 2; this[-4] = 2; this[-3] = 4; this[-2] = 2; this[-1] = 3;
                            break;
                        case ChordFamily.DSharp:
                        case ChordFamily.EFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = 2; this[-5] = -1; this[-4] = 1; this[-3] = 2; this[-2] = 2; this[-1] = 2;
                            break;
                        case ChordFamily.FSharp:
                        case ChordFamily.GFlat:
                            InitializeStringsToValue(2);
                            this[-6] = 2; this[-5] = 3; this[-4] = 2; this[-3] = 2; this[-2] = 5; this[-1] = 2;
                            break;
                        case ChordFamily.GSharp:
                        case ChordFamily.AFlat:
                            this[-6] = 2; this[-5] = 2; this[-4] = 0; this[-3] = 1; this[-2] = 0; this[-1] = 2;
                            break;
                        case ChordFamily.ASharp:
                        case ChordFamily.BFlat:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 1; this[-4] = 2; this[-3] = 1; this[-2] = 2; this[-1] = 4;
                            break;
                    }
                    break;
                    #endregion
                case ChordType.Diminished_7th:
                    #region Diminished 7th chords
                    switch (family)
                    {
                        case ChordFamily.C:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = -1; this[-4] = 1; this[-3] = 2; this[-2] = 1; this[-1] = 2;
                            break;
                        case ChordFamily.D:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = -1; this[-4] = 0; this[-3] = 1; this[-2] = 0; this[-1] = 1;
                            break;
                        case ChordFamily.E:
                            this[-6] = 0; this[-5] = 1; this[-4] = 2; this[-3] = 0; this[-2] = 2; this[-1] = 0;
                            break;
                        case ChordFamily.F:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 2; this[-4] = 3; this[-3] = 1; this[-2] = 3; this[-1] = 1;
                            break;
                        case ChordFamily.G:
                            this[-6] = 0; this[-5] = 1; this[-4] = 2; this[-3] = 0; this[-2] = 2; this[-1] = 0;
                            break;
                        case ChordFamily.A:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = -1; this[-4] = 1; this[-3] = 2; this[-2] = 1; this[-1] = 2;
                            break;
                        case ChordFamily.B:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = -1; this[-4] = 0; this[-3] = 1; this[-2] = 0; this[-1] = 1;
                            break;
                        case ChordFamily.CSharp:
                        case ChordFamily.DFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = -1; this[-4] = 2; this[-3] = 3; this[-2] = 2; this[-1] = 3;
                            break;
                        case ChordFamily.DSharp:
                        case ChordFamily.EFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 0; this[-4] = 1; this[-3] = 2; this[-2] = 1; this[-1] = 2;
                            break;
                        case ChordFamily.FSharp:
                        case ChordFamily.GFlat:
                            InitializeStringsToValue(2);
                            this[-6] = 2; this[-5] = 3; this[-4] = 4; this[-3] = 2; this[-2] = 4; this[-1] = 2;
                            break;
                        case ChordFamily.GSharp:
                        case ChordFamily.AFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = -1; this[-4] = 0; this[-3] = 1; this[-2] = 0; this[-1] = 1;
                            break;
                        case ChordFamily.ASharp:
                        case ChordFamily.BFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = -1; this[-4] = 2; this[-3] = 3; this[-2] = 2; this[-1] = 3;
                            break;
                    }
                    break;
                    #endregion
                case ChordType.Major_9th:
                    #region Major 9th chords
                    switch (family)
                    {
                        case ChordFamily.C:
                            this[-6] = 0; this[-5] = 3; this[-4] = 2; this[-3] = 3; this[-2] = 3; this[-1] = 0;
                            break;
                        case ChordFamily.D:
                            this[-6] = 0; this[-5] = 0; this[-4] = 0; this[-3] = 2; this[-2] = 1; this[-1] = 2;
                            break;
                        case ChordFamily.E:
                            this[-6] = 0; this[-5] = 2; this[-4] = 0; this[-3] = 1; this[-2] = 0; this[-1] = 2;
                            break;
                        case ChordFamily.F:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 3; this[-4] = 1; this[-3] = 2; this[-2] = 1; this[-1] = 3;
                            break;
                        case ChordFamily.G:
                            this[-6] = 0; this[-5] = 0; this[-4] = 0; this[-3] = 0; this[-2] = 0; this[-1] = 1;
                            break;
                        case ChordFamily.A:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 2; this[-4] = 2; this[-3] = 2; this[-2] = 2; this[-1] = 3;
                            break;
                        case ChordFamily.B:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 2; this[-4] = 1; this[-3] = 2; this[-2] = 2; this[-1] = 2;
                            break;
                        case ChordFamily.CSharp:
                        case ChordFamily.DFlat:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 2; this[-4] = 1; this[-3] = 1; this[-2] = 2; this[-1] = 1;
                            break;
                        case ChordFamily.DSharp:
                        case ChordFamily.EFlat:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 1; this[-4] = 1; this[-3] = 3; this[-2] = 2; this[-1] = 3;
                            break;
                        case ChordFamily.FSharp:
                        case ChordFamily.GFlat:
                            InitializeStringsToValue(2);
                            this[-6] = 2; this[-5] = 4; this[-4] = 2; this[-3] = 3; this[-2] = 2; this[-1] = 4;
                            break;
                        case ChordFamily.GSharp:
                        case ChordFamily.AFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 1; this[-4] = 1; this[-3] = 1; this[-2] = 1; this[-1] = 2;
                            break;
                        case ChordFamily.ASharp:
                        case ChordFamily.BFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 1; this[-4] = 0; this[-3] = 1; this[-2] = 1; this[-1] = 1;
                            break;
                    }
                    break;
                    #endregion
                case ChordType.Diminished_9th:
                    #region Diminished 9th chords
                    switch (family)
                    {
                        case ChordFamily.C:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 3; this[-4] = 2; this[-3] = 3; this[-2] = 2; this[-1] = 3;
                            break;
                        case ChordFamily.D:
                            this[-6] = 0; this[-5] = 0; this[-4] = 1; this[-3] = 2; this[-2] = 1; this[-1] = 2;
                            break;
                        case ChordFamily.E:
                            this[-6] = 0; this[-5] = 2; this[-4] = 0; this[-3] = 1; this[-2] = 0; this[-1] = 1;
                            break;
                        case ChordFamily.F:
                            InitializeStringsToValue(1);
                            this[-6] = 1; this[-5] = 3; this[-4] = 1; this[-3] = 2; this[-2] = 1; this[-1] = 2;
                            break;
                        case ChordFamily.G:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 2; this[-4] = 3; this[-3] = 1; this[-2] = 0; this[-1] = 3;
                            break;
                        case ChordFamily.A:
                            InitializeStringsToValue(-1);
                            this[-6] = 2; this[-5] = -1; this[-4] = 5; this[-3] = 3; this[-2] = 2; this[-1] = 5;
                            break;
                        case ChordFamily.B:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 2; this[-4] = 1; this[-3] = 2; this[-2] = 1; this[-1] = 2;
                            break;
                        case ChordFamily.CSharp:
                        case ChordFamily.DFlat:
                            InitializeStringsToValue(-1);
                            this[-6] = -1; this[-5] = 4; this[-4] = 3; this[-3] = 4; this[-2] = 3; this[-1] = 4;
                            break;
                        case ChordFamily.DSharp:
                        case ChordFamily.EFlat:
                            this[-6] = 0; this[-5] = 1; this[-4] = 1; this[-3] = 0; this[-2] = 2; this[-1] = 0;
                            break;
                        case ChordFamily.FSharp:
                        case ChordFamily.GFlat:
                            InitializeStringsToValue(2);
                            this[-6] = 2; this[-5] = 4; this[-4] = 2; this[-3] = 3; this[-2] = 2; this[-1] = 3;
                            break;
                        case ChordFamily.GSharp:
                        case ChordFamily.AFlat:
                            this[-6] = 2; this[-5] = 0; this[-4] = 1; this[-3] = 1; this[-2] = 1; this[-1] = 2;
                            break;
                        case ChordFamily.ASharp:
                        case ChordFamily.BFlat:
                            this[-6] = 1; this[-5] = 1; this[-4] = 0; this[-3] = 1; this[-2] = 0; this[-1] = 1;
                            break;
                    }
                    break;
                    #endregion
            }
        }