예제 #1
0
        public Acorde CriarAcorde(TipoNota tonica, TipoAcordeFormula tipoAcorde)
        {
            switch (tipoAcorde)
            {
            case TipoAcordeFormula.Maior:
                return(Acorde.CriarAcordeMaior(tonica));

            case TipoAcordeFormula.Menor:
                return(Acorde.CriarAcordeMenor(tonica));

            case TipoAcordeFormula.MaiorSetima:
                return(Acorde.CriarAcordePelosIntervalos(tonica, new List <TipoIntervalo>()
                {
                    TipoIntervalo.TERCA_MAIOR, TipoIntervalo.QUINTA_JUSTA, TipoIntervalo.SETIMA_MENOR
                }));

            case TipoAcordeFormula.MenorSetima:
                return(Acorde.CriarAcordePelosIntervalos(tonica, new List <TipoIntervalo>()
                {
                    TipoIntervalo.TERCA_MENOR, TipoIntervalo.QUINTA_JUSTA, TipoIntervalo.SETIMA_MENOR
                }));

            case TipoAcordeFormula.Diminuto:
                return(Acorde.CriarAcordeDiminuto(tonica));

            case TipoAcordeFormula.MeioDiminuto:
                return(Acorde.CriarAcordeMeioDiminuto(tonica));

            default:
                return(Acorde.CriarAcordeMaior(tonica));
            }
        }
예제 #2
0
        public void Acorde_Deve_Criar_Acorde_Menor()
        {
            Acorde acorde = Acorde.CriarAcordeMenor(TipoNota.DO);

            Assert.Equal(new List <TipoIntervalo>()
            {
                TipoIntervalo.TONICA, TipoIntervalo.TERCA_MENOR, TipoIntervalo.QUINTA_JUSTA
            },
                         acorde.GetIntervalos());
        }
예제 #3
0
 public void Interpret(Acorde acorde)
 {
     if (acorde.TriadeFormadora == ModoDoAcorde.PerfeitoMaior)
     {
         acorde.Relativa = Acorde.CriarAcordeMenor(acorde.Tonica.Add(9));
     }
     else if (acorde.TriadeFormadora == ModoDoAcorde.PerfeitoMenor)
     {
         acorde.Relativa = Acorde.CriarAcordeMaior(acorde.Tonica.Add(3));
     }
 }