Logo

python y supercollider

Escalas y afinación

FoxDot se inspira mucho en la teoría tradicional de la música occidental, incluyendo el uso de escalas musicales. Una escala es esencialmente un subconjunto de las notas musicales (tonos) entre una nota, por ejemplo C, y la misma una octava más alta. La nota inicial es la clave de la escala. Así que comenzando en Do, estas notas son:

C, C#, D, D#, E, F, F#, G, G#, A, A#, B

Este conjunto de todas las notas se llama la escala cromática. Si esto fuera una lista de Python llamada cromática, entonces cromática[0] devolvería C, cromática[1] devolvería C#, cromática[2] devolvería D, y así hasta cromática[11], que devolvería B. Debido a que cada escala musical es un subconjunto de estos tonos, podemos pensar en cada escala como una lista de índices para acceder a los tonos en la escala cromática. Veamos la escala mayor como ejemplo:

La escala de Do Mayor se compone de C, D, E, F, G, A y B:

cromático =[C, C#, D, D#, E, F, F#, G, G#, A, A#, B]

C = cromático[0]

D = cromático[2]

E = cromático[4]

F = cromático[5]

G = cromático[7]

A = cromático[9]

B = cromático[11]

Una forma de crear la escala mayor usando un bucle podría ser:

pasos =[0, 2, 4, 5, 7, 9, 11]

Escala = []

para el paso en la escala:

-scale.append(cromático[paso])

# escala ==[C, D, E, F, G, A, B]

Nuestra lista de pasos contiene los índices necesarios para crear la escala mayor. Así que cuando usamos el siguiente código para tocar todas las notas de la escala, estamos suministrando otra lista de índices, que se está usando para acceder a la lista de escalas:

# Toca cada nota en la escala

p1 >> pluck([0, 1, 2, 3, 4, 5, 6, 7])

# Esencialmente estamos jugando:

p1 >> pluck([scale[0], scale[1], scale[2], ..., scale[7])

# Que es equivalente a:

p1 >> pluck([cromático[0], cromático[2], cromático[4], escala[5], ...., cromático[11])

A veces puede que quieras usar una nota que no está en la escala, tan "aguda" como Do# en la escala de Do Mayor, que se llama "accidental" aunque sea a propósito. Puedes usar números en coma flotante y FoxDot se aproximará a la nota a la que intentas acceder. Por ejemplo, para acceder a C# en la escala de Do mayor, usaría la escala[0.5] porque C# está entre C y D, que son la escala[0] y la escala[1] respectivamente.

Lista de escalas

Para ver una lista de las escalas disponibles simplemente ejecute el comando print(Scale.names()). Esto devolverá una lista de todas las escalas como cadenas así:

print(Scale.names())

['aeolian', 'chinese', 'chromatic', 'custom', 'default', 'diminished', 'dorian', 'dorian2', 'egyptian', 'freq', 'harmonicMajor', 'harmonicMinor', 'indian', 'justMajor', 'justMinor', 'locrian', 'locrianMajor', 'lydian', 'lydianMinor', 'major', 'majorPentatonic', 'melodicMajor', 'melodicMinor', 'minor', 'minorPentatonic', 'mixolydian', 'phrygian', 'prometheus', 'romanianMinor', 'yu', 'zhi']

Se puede acceder a cada objeto de la escala escribiendo Escala seguido de un ":

# Ver los semitonos de la escala mayor

print(Escale.major)

# Accede a lo largo de la escala mayor

print(len(Scale.major))

Ajuste de la escala

De forma predeterminada, cada reproductor utiliza una escala predeterminada accesible de forma global llamada Scale.default. Esto se puede cambiar de varias maneras:

# Simplemente asignando el objeto de escala a Scale.default

Scale.default = Scale.minor

# Puedes usar el nombre de la cadena

Scale.default = "minor"

También puede utilizar el método "set", que permite más opciones

Scale.default.set("minor")

Los jugadores individuales pueden utilizar escalas independientes simplemente suministrando un objeto de escala a la palabra clave de la escala como lo haría con cualquier otro atributo de reproductor:

# Establece la escala a mayor

Scale.default = Scale.major

# Forzar a un reproductor a usar la escala menor

p1 >> pluck([0,1,2,3], scale=Scale.minor)

Afinación y personalización

La afinación musical es esencialmente la relación entre las frecuencias de las notas en una escala. La afinación más comúnmente utilizada en la música popular occidental es la afinación temperada igual de 12 pasos, que se encuentra en instrumentos como un piano. Otro sistema de afinación muy popular es el de "sólo entonación", que se analizará a continuación. Puede leer más sobre estos sistemas de ajuste haciendo clic en los enlaces del texto de arriba.

Del mismo modo que podemos ver los objetos de escala, también podemos ver los objetos de afinación:

# Igual de temperamental

print(Tuning.ET12)

# Sólo entonación

print(Tuning.just)

Usando Scale.default.set también podemos establecer la afinación para la escala por defecto, así que ajustemos la afinación a sólo entonación mientras tocamos un acorde mayor y escuchemos el ligero cambio de color:

# Toca un acorde en repetición

p1 >> pluck((0, 2, 4))

# Establece la sintonía en sólo

Escala.default.set("major", tuning=Tuning.just)

# Vuelve a tener el mismo temperamento

Escala.default.set("major", tuning=Tuning.ET12)

Usted no tiene que usar escalas o afinación existentes - ¡puede incluso usar las suyas propias! Simplemente usando una lista o patrón de números en lugar de la escala y sintonizando nombres.

Scale.default.set([0, 2, 3, 5, 6, 9, 10], tuning=[0.1, 0.9, 2.1, 2.9, 4.1, 4.9, 6.1, 6.9, 8.1, 8.9, 10.1, 10.9])

Atras
siguiente