39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
|
#contiene una classe che contiene i metodi per trovare tutte
|
|
#le armoniche data una frequenza
|
|
|
|
# E` necessaria una classe? Non ha neanche attributi...
|
|
class Armonia:
|
|
_types = {"8_inf" : 1/2,
|
|
"2_maj" : 9/8,
|
|
"2_min" : 16/15,
|
|
"3_maj" : 5/4,
|
|
"3_min" : 6/5,
|
|
"4" : 4/3,
|
|
"4_rai" : 3/2,
|
|
"4_dec" : 64/45,
|
|
"5" : 3/2,
|
|
"6_maj" : 5/3,
|
|
"6_min" : 8/5,
|
|
"7_maj" : 15/8,
|
|
"7_min" : 9/5,
|
|
"8" : 2,
|
|
}
|
|
#la funzione prende in input una nota e l'accordo che si vuole raggiungere e genera una nuova "nota"
|
|
def nota_armonica(f, typeOf):
|
|
return f*types.get(typeOf)
|
|
|
|
#definisce le note possibili che vengono usate dentro quella classe.
|
|
def armonia(self, nota):
|
|
accordo = []
|
|
pas = list(types.keys())
|
|
infima = nota
|
|
#questo ciclo cerca l'ottava piu' piccola udibile della nota passata
|
|
while infima > 66: infima = nota_armonica(infima, pas[0])
|
|
#vengono salvati in una lista tutte le armoniche di quella nota
|
|
while infima < 4200:
|
|
for i in pas[1:]:
|
|
accordo.append(nota_armonica(infima, i)
|
|
|
|
|