private void button1_Click(object sender, EventArgs e) { try { if (cboAcordes.Text != "") { LimparTudo(); Acorde CRD = acrds.acordes.FirstOrDefault(r => r.acorde == cboAcordes.Text); foreach (CordaBracos CrdBra in CRD.corda_braco) { string nm_nota = "lbl_" + CrdBra.corda_braco + "_" + CrdBra.posicao + "_"; foreach (System.Windows.Forms.Control Notas in BRACO.Controls) { if (Notas is Label) { Label btnNota = Notas as Label; if (btnNota.Name.Contains(nm_nota)) { btnNota.Visible = true; } } } } } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public void Interpret(Acorde acorde) { Regex reg = new Regex(expQuinta); if (reg.IsMatch(acorde.Nome)) { acorde.AddIntervalo(TipoIntervalo.QUINTA_JUSTA); acorde.TriadeFormadora = ModoDoAcorde.NaoDefinido; return; } reg = new Regex(expMenor); if (reg.IsMatch(acorde.Nome)) { acorde.AddIntervalos(new List <TipoIntervalo> { TipoIntervalo.TERCA_MENOR, TipoIntervalo.QUINTA_JUSTA }); acorde.TriadeFormadora = ModoDoAcorde.PerfeitoMenor; return; } reg = new Regex(expMaior); if (reg.IsMatch(acorde.Nome)) { acorde.AddIntervalos(new List <TipoIntervalo> { TipoIntervalo.TERCA_MAIOR, TipoIntervalo.QUINTA_JUSTA }); acorde.TriadeFormadora = ModoDoAcorde.PerfeitoMaior; return; } throw new ExpressaoInvalidaException("Modo do acorde não encontrado"); }
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)); } }
[InlineData("F11++")] //Dois sinais repetidos public void Interpret_Deve_Lancar_Erro_Formatos_Invalidos(string nome) { InterpreterAcorde interpreterAcorde = new InterpreterAcorde(); Acorde acorde = new Acorde(nome); Assert.Throws <ExpressaoInvalidaException>(() => interpreterAcorde.Interpret(acorde)); }
public void Interpret_Deve_Encontrar_Relativo(string nome, string relativa) { InterpreterAcorde interpreterAcorde = new InterpreterAcorde(); Acorde acorde = new Acorde(nome); interpreterAcorde.Interpret(acorde); Assert.Equal(relativa, acorde.Relativa.Nome); }
public void Interpret_Deve_Encontrar_Baixo(string nome, TipoNota baixo) { InterpreterAcorde interpreterAcorde = new InterpreterAcorde(); Acorde acorde = new Acorde(nome); interpreterAcorde.Interpret(acorde); Assert.Equal(baixo, acorde.Baixo); }
public CampoHarmonico CriarCampoHarmonico(string nomeAcorde) { InterpreterAcorde interpreter = new InterpreterAcorde(); Acorde acorde = new Acorde(nomeAcorde); interpreter.Interpret(acorde); CampoHarmonico campo = CriarCampoHarmonicoPelaFormula(acorde, ObterFormulaPorAcordeBase(acorde)); return(campo); }
public void Interpret_Deve_Lancar_Erro_Sustenidos_Bemois(string nome) { InterpreterAcorde interpreterAcorde = new InterpreterAcorde(); Acorde acorde = new Acorde { Nome = nome }; Assert.Throws <ExpressaoInvalidaException>(() => interpreterAcorde.Interpret(acorde)); }
public void Interpret(Acorde acorde) { if (Test(acorde.Nome)) { foreach (var intervalo in Intervalos) { acorde.AddIntervalo(intervalo); } } }
public void Acorde_Deve_Criar_Acorde_Maior() { Acorde acorde = Acorde.CriarAcordeMaior(TipoNota.DO); Assert.Equal(new List <TipoIntervalo>() { TipoIntervalo.TONICA, TipoIntervalo.TERCA_MAIOR, TipoIntervalo.QUINTA_JUSTA }, acorde.GetIntervalos()); }
public void GetNotas_Deve_Retornar_Notas_Dos_Acordes(TipoIntervalo intervalo, TipoNota nota) { Acorde acorde = new Acorde { Tonica = TipoNota.DO }; acorde.AddIntervalo(intervalo); Assert.Contains(nota, acorde.GetNotas()); }
public Tuple <int, TipoAcordeFormula>[] ObterFormulaPorAcordeBase(Acorde acorde) { if (acorde.TriadeFormadora == ModoDoAcorde.PerfeitoMaior) { return(FormulaCampoHarmonicoMaior); } else { return(FormulaCampoHarmonicoMenor); } }
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)); } }
public void Interpret(Acorde acorde) { TipoNota?nota = acorde.Nome.ToUpper()[0].ToString().GetEnumFromCifra(); if (!nota.HasValue) { throw new ExpressaoInvalidaException("Tônica não encontrada."); } acorde.Tonica = nota.Value; }
public void Interpret_Deve_Adicionar_Setima(string nome) { InterpreterAcorde interpreterAcorde = new InterpreterAcorde(); Acorde acorde = new Acorde { Nome = nome }; interpreterAcorde.Interpret(acorde); Assert.Contains(TipoIntervalo.SETIMA_MENOR, acorde.GetIntervalos()); }
public void Interpret_Deve_Adicionar_Quarta(string nome) { InterpreterAcorde interpreterAcorde = new InterpreterAcorde(); Acorde acorde = new Acorde { Nome = nome }; interpreterAcorde.Interpret(acorde); Assert.Contains(TipoIntervalo.QUARTA_JUSTA, acorde.GetIntervalos()); }
public void Interpret_Deve_Adicionar_DecimaTerceira(string nome) { InterpreterAcorde interpreterAcorde = new InterpreterAcorde(); Acorde acorde = new Acorde { Nome = nome }; interpreterAcorde.Interpret(acorde); Assert.Contains(TipoIntervalo.SEXTA_MAIOR, acorde.GetIntervalos()); }
protected static void Main(string[] args) { string nomeAcorde = args[0]; InterpreterAcorde cAcorde = new InterpreterAcorde(); Acorde acorde = new Acorde(nomeAcorde); cAcorde.Interpret(acorde); foreach (TipoNota nota in acorde.GetNotas()) { Console.WriteLine(nota); } }
public void Interpret_Deve_Reconhecer_Acordes_Menores(string nome) { Acorde acorde = new Acorde(nome); InterpreterAcorde cAcorde = new InterpreterAcorde(); cAcorde.Interpret(acorde); Assert.Equal( new List <TipoIntervalo> { TipoIntervalo.TONICA, TipoIntervalo.TERCA_MENOR, TipoIntervalo.QUINTA_JUSTA }, acorde.GetIntervalos()); }
public void Interpret(Acorde acorde) { Regex reg = new Regex("/([A-G])$"); Match matchBaixo = reg.Match(acorde.Nome); if (matchBaixo.Success) { acorde.Baixo = matchBaixo.Groups[1].Value.GetEnumFromCifra() ?? acorde.Tonica; } else { acorde.Baixo = acorde.Tonica; } }
public void Interpret(Acorde acorde) { List <IAcordeExpression> listInterpreters = new List <IAcordeExpression>() { new AcordeQuartaExpression(), new AcordeSextaExpression(), new AcordeSetimaExpression(), new AcordeNonaExpression(), new AcordeAumentadosDiminutos(), }; foreach (IAcordeExpression interpreter in listInterpreters) { interpreter.Interpret(acorde); } }
private CampoHarmonico CriarCampoHarmonicoPelaFormula(Acorde acorde, Tuple <int, TipoAcordeFormula>[] formula) { CampoHarmonico campoHarmonico = new CampoHarmonico(); FactoryAcorde factory = new FactoryAcorde(); TipoNota tonicaBase = acorde.Tonica; campoHarmonico.Graus.Add(acorde); foreach (var item in formula) { tonicaBase = tonicaBase.Add(item.Item1); campoHarmonico. Graus.Add(factory.CriarAcorde(tonicaBase, item.Item2)); } return(campoHarmonico); }
public void Interpret_Deve_Reconhecer_Tonica() { InterpreterAcorde interpreterAcorde = new InterpreterAcorde(); foreach (TipoNota item in Enum.GetValues(typeof(TipoNota))) { Acorde acorde = new Acorde { Nome = item.GetCifraFromEnum() }; interpreterAcorde.Interpret(acorde); Assert.Equal(item, acorde.Tonica); } }
public void Interpret(Acorde acorde) { List <IAcordeExpression> listInterpreters = new List <IAcordeExpression>() { new AcordeValidaFormato(), new AcordeTonicaExpression(), new AcordeBemolSustenidoExpression(), new AcordeMaiorMenorQuintaExpression(), new AcordeAdicionadoExpression(), new AcordeDiminutoExpression(), new AcordeComInversao(), new AcordeRelativo(), }; foreach (IAcordeExpression interpreter in listInterpreters) { interpreter.Interpret(acorde); } }
public void Interpret(Acorde acorde) { if (acorde.Nome.StartsWith("E#") || acorde.Nome.StartsWith("B#") || acorde.Nome.StartsWith("Cb") || acorde.Nome.StartsWith("Fb")) { throw new ExpressaoInvalidaException("Acorde inválido."); } if (acorde.Nome.Length > 1) { if (acorde.Nome[1] == '#') { acorde.Tonica += 1; } if (acorde.Nome[1] == 'b') { acorde.Tonica -= 1; } } }
public void Interpret(Acorde acorde) { Regex regexSinais = new Regex(@"([^0-9])([+-])"); if (regexSinais.IsMatch(acorde.Nome)) { throw new ExpressaoInvalidaException("O sinais para aumentar e diminuir devem ser precedidos pelo valor do intervalo."); } Regex regexIntervalos = new Regex(@"(\d+)"); MatchCollection matches = regexIntervalos.Matches(acorde.Nome); foreach (Match item in matches) { if (item.Groups[1].Value.Length > 2) { throw new ExpressaoInvalidaException("Os intervalos devem estar separados por / ou ()"); } int valorIntervalo = int.Parse(item.Groups[1].Value); TipoIntervalo?intervalo = valorIntervalo.GetIntervaloPorValor(); if (intervalo == null) { throw new ExpressaoInvalidaException( $"O valor {valorIntervalo} não representa um intervalo válido. " + $"Intervalos aceitos: 4, 11, 2, 9, 7, 6 e 13. "); } } Regex regexBaixo = new Regex(@"/[A-G]"); MatchCollection matchesBaixo = regexBaixo.Matches(acorde.Nome); if (matchesBaixo.Count > 1) { throw new ExpressaoInvalidaException("O acorde só pode ser representado com uma inversão."); } }
public void Interpret(Acorde acorde) { Regex reg = new Regex(@"(\d+)([+\-#b])"); MatchCollection match = reg.Matches(acorde.Nome); foreach (Match item in match) { int valor = int.Parse(item.Groups[1].Value); TipoIntervalo?intervalo = valor.GetIntervaloPorValor(); string sinal = item.Groups[2].Value; if (intervalo != null) { if (sinal.In("+", "#")) { acorde.AumentarIntervalo(intervalo); } else { acorde.DiminuirIntervalo(intervalo); } } } }
public CampoHarmonico CriarCampoHarmonico(Acorde acorde) { CampoHarmonico campo = CriarCampoHarmonicoPelaFormula(acorde, ObterFormulaPorAcordeBase(acorde)); return(campo); }