kostacivos/kostacivos/armonia.py

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)