You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
1.4 KiB

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))

Powered by INFORMATICA.FP.EDU.ES.