import enum from math import exp, log class eNotas(enum.Enum): DO = 1 RE = 3 MI = 5 FA = 6 SOL = 8 LA = 10 SI = 12 SILENCIO = 8 class tipoNota(enum.Enum): ##Redonda, Blanca, Negra, Corchea, Semicorchea R = 1, 4 B = 2, 2 N = 4, 1 C = 8, 0.5 S = 16, 0.25 ## Redonda, Blanca, Negra, Corchea, Semicorchea con puntillo RP = 3, 6 BP = 6, 3 NP = 12, 1.5 CP = 24, 0.75 SP = 48, 0.375 ## Silencios XR = 1, 4 XB = 2, 2 XN = 4, 1 XC = 8, 0.5 XS = 16, 0.25 ## Silencios con puntillo XRP = 3, 6 XBP = 6, 3 XNP = 12, 1.5 XCP = 24, 0.75 XSP = 48, 0.375 class modificador(enum.Enum): ##Sostenido SS = 1 ##Bemol BE = 2 ##Ninguno NO = 3 class Nota(): ##Por defecto las notas no tienen modificador y la octava es la 4 def __init__(self, nota: eNotas, tipo: tipoNota, modificador = modificador.NO, octava = 4): self.nota = nota self.tipo = tipo self.modificador = modificador self.octava = octava def duracion(self): return self.tipo.value[1] def frec(self): expo = self.octava * 12 + (self.nota.value - 58) if self.modificador == modificador.SS: expo += 1 if self.modificador == modificador.BE: expo -= 1 return int(440 * ((2 ** (1 / 12)) ** expo))