Example #1
0
        public static bool ApplyATransformation(Triad triad, int[] transformation, int transpose = 0)
        {
            triad.TriadType = Triad.DetermineTriadType(triad);
            var mode = TriadTypes.TriadModeFormula[triad.Mode];

            triad.ChordNotes[0] = JustNote.moveNoteBySemitones(triad.ChordNotes[0], transformation[0] + transpose);
            triad.ChordNotes[1] = JustNote.moveNoteBySemitones(triad.ChordNotes[1], transformation[1] + transpose);
            triad.ChordNotes[2] = JustNote.moveNoteBySemitones(triad.ChordNotes[2], transformation[2] + transpose);

            triad.TriadType = Triad.DetermineTriadType(triad);
            if (triad.TriadType == "undefined")
            {
                return(false);
            }

            try
            {
                Triad.ResetTriadRootStepsModeAndInversion(triad);
                if (triad.ChordNotes.All(cn => cn.unboundOctave > 19 || cn.unboundOctave < -10))
                {
                    return(false);
                }
                else
                {
                    return(true);
                }
            }
            catch (Exception) { return(false); }
        }