Ejercicio 6.1
1. Crear una función que reciba como argumentos una altura inicial y una secuencia de intervalos, y que devuelva una lista con una secuencia de alturas. Las alturas se expresan como número de nota MIDI, y los intervalos en cantidad
de semitonos, con valores negativos para los intervalos descendentes.
Por ejemplo:
nota_inicial = 60
secuencia_intervalica = [4, -3, 9, -11]
notas = intervalos_a_secuencia(nota_inicial, secuencia_intervalica)
print(notas)
Resultado:
[60,
64, 61, 70, 59]
2. Crear una segunda función que reciba como argumentos una lista y un diccionario: la lista representa una secuencia de intervalos, y el diccionario sirve para transformar cada intervalo en una secuencia de dos intervalos.
La función devuelva la nueva secuencia de intervalos expandida.
Por ejemplo:
secuencia_intervalica = [4, -3, 9, -11]
reglas = {4 : [-3, 9], -3 : [-11, 9], 9 : [4, -3], -11 : [-3, 4]}
secuencia_nueva = linden(secuencia_intervalica,
reglas)
print(secuencia_nueva)
Resultado:
[-3, 9, -11, 9, 4, -3, -3, 4]
3. Combinar ambas funciones, para generar una lista de alturas, a partir de una nota inicial, una lista de intervalos y un diccionario de transformación.