public Triad(JustNote baseNote, int[] theFormula, TriadMode mode = TriadMode.I, TriadInversion inv = TriadInversion.I)
        {
            TriadType = TriadTypes.TriadsTypes.First(f => f.Value[0] == theFormula[0] && f.Value[1] == theFormula[1] && f.Value[2] == theFormula[2]).Key.ToString();

            ChordNotes[0] = baseNote;

            var tempNote = baseNote;

            for (int i = 1; i < 3; i++)
            {
                tempNote      = JustNote.moveNoteBySemitones(tempNote, theFormula[i - 1]);
                ChordNotes[i] = tempNote;
            }

            Mode = mode;

            switch (Mode)
            {
            case TriadMode.I:
                break;

            case TriadMode.II:
                ChordNotes[1] = JustNote.moveNoteBySemitones(ChordNotes[1], 12);
                break;

            default:
                break;
            }

            this.InverseForward(inv);
            Inversion = inv;
        }
        public Triad(JustNote baseNote, JustNote thirdNote, JustNote fifthNote, TriadMode mode, TriadInversion inv)
        {
            ChordNotes[0] = baseNote;
            ChordNotes[1] = thirdNote;
            ChordNotes[2] = fifthNote;

            Mode      = mode;
            Inversion = inv;
        }
 public void ChangeTheChordMode(TriadMode mode)
 {
     // TODO :: Make it changable from any mode to any mode
 }