Inversión de acordes

Objetivo: aprender el concepto de inversión de un acorde.

Es importante distinguir entre la fórmula de un acorde, que no es más que una descripción de las notas que deben formar parte de él, y la disposición concreta que el instrumentista elige para hacerlo sonar. Para poder diferenciar sin ambigüedad ambos modos de referirnos a un acorde, ideamos la notación estructural de voces.

Una inversión es, en esencia, un tipo de disposición particular de las voces del acorde.

Para entender el concepto, elijamos un acorde sencillo, como la tríada mayor:

Mayor: 1 - 3 - 5

La disposición más básica para construir este acorde coincide con su fórmula:

[1, 3, 5]

El instrumentista hace sonar sólo tres notas, sin repetirlas, ordenándolas del modo que está indicado entre los corchetes: la más grave es la fundamental, la siguiente la tercera y la más aguda la quinta, todo comprendido en el ámbito de una octava.

Para invertir el acorde, tomemos la más grave -en este caso, la fundamental- y llevémosla, subiéndola una octava, a la derecha del todo, convirtiéndola así en la más aguda. La disposición resultante es la siguiente:

[3, 5, 1]

Observa que ahora la más grave es la tercera del acorde, a la que sigue la quinta, exponiendo la fundamental como voz más aguda de la disposición.

A esta manera concreta de organizar el acorde la denominamos primera inversión de la tríada mayor.

Quizás el término más adecuado para esto sería rotación en lugar de inversión, pues lo que hemos hecho ha sido rotar las notas, no invertirlas. En cualquier caso, quédate con la terminología aceptada: la primera inversión deja la tercera como voz más grave.

Veamos una aplicación práctica de esto en el piano y en la guitarra. Consideremos por ejemplo, el acorde Do mayor [DO, MI, SOL] y su primera inversión [MI, SOL, DO]. Acompañamos su representación en el pentagrama también, pues es bastante ilustrativa de la recolocación de las notas:

Do mayor y su primera inversión
Do mayor y su primera inversión
La 1ª inversión de Do mayor en el piano
La primera inversión de Do mayor en el piano
La primera inversión de Do mayor en la guitarra
La primera inversión de Do mayor en la guitarra

Haz sonar ambos acordes y diferencia su cualidad sonora. La distinta colocación de las notas implica la aparición de nuevos intervalos. En particular, aprecia el intervalo de cuarta justa característico que se forma entre la quinta y la fundamental, situada ahora como primera voz (las voces se numeran comenzando por la más aguda).

Si partimos de la primera inversión de la tríada mayor y realizamos una nueva rotación de notas, llevando nuevamente la más grave a la derecha del todo, obtenemos su segunda inversión:

Tríada mayor: [1, 3, 5]
Tríada mayor en primera inversión: [3, 5, 1]
Tríada mayor en segunda inversión: [5, 1, 3]

Volviendo al ejemplo de Do mayor en disposición [1, 3, 5], [DO, MI, SOL], la segunda inversión es, por lo tanto, [SOL, DO, MI].

La segunda inversión de Do mayor
Segunda inversión de Do mayor
Segunda inversión de Do mayor en el piano
Segunda inversión de Do mayor en el piano
Segunda inversión de Do mayor en la guitarra
Segunda inversión de Do mayor en la guitarra

Observa que ahora la nota más grave es la quinta. Ese es el rasgo característico de la segunda inversión. Aprecia que aparece nuevamente el intervalo de cuarta entre la quinta y la fundamental, pero esta vez desplazado a la base del acorde.

Aplicando los mismos principios podemos invertir también los acordes de más de tres notas. Por ejemplo, consideremos la tétrada del acorde de séptima de dominante, de fórmula:

Séptima: 1 - 3 - 5 - b7

Posición fundamental cerrada: [1, 3, 5, b7]

Primera inversión: [3, 5, b7, 1]

Segunda inversión: [5, b7, 1, 3]

Ya que contamos con una nota más, podemos contemplar una nueva rotación para alcanzar la tercera inversión, en la que la séptima es ahora la voz más grave:

Tercera inversión: [b7, 1, 3, 5]

En la práctica, es común hacer extensivo el concepto de inversión basándonos directamente en la voz más grave, independientemente de cómo se dispongan las notas a continuación. Decimos, por lo tanto, que un acorde está en primera inversión cuando su nota más grave es la tercera; en segunda inversión cuando lo es la quinta y en tercera inversión cuando descansa sobre la séptima.

El siguiente acorde, tan común entre guitarristas, representa un ejemplo de primera inversión de la tríada menor, 1 – b3 – 5:

[b3, 1, 5, 1]

Fa menor en 1ª inversión
Fa menor en 1ª inversión

Con frecuencia, el compositor o arreglista desea reflejar que un determinado acorde se halla invertido -tal vez para matizar una línea de bajo en la armonía. En cifrado moderno esto se indica anotando, a continuación del acorde, separado por una barra inclinada, el nombre de la nota más grave.

En el ejemplo anterior, Fa menor en primera inversión, podemos representar el acorde como Fm/Ab. Esto indica que se trata de un Fa menor en el que la nota más grave es La bemol, que es precisamente la tercera del acorde.

Más ejemplos:

D/F# : Re mayor en primera inversión

Cmaj7/G : Do séptima mayor en segunda inversión

En otro artículo presentaremos otras aplicaciones de la notación «barra» en las que la nota más grave puede incluso no pertenecer al acorde que matiza.

Es muy importante que incorpores las inversiones a tu repertorio de acordes. Por un lado, mantienen la cualidad del acorde pero suenan diferente y son, por lo tanto, un recurso más en tu paleta expresiva. Además, nos ayudan a dibujar melodías directamente sobre la progresión armónica, pues al usar deliberadamente las inversiones tenemos control de la disposición de las voces -particularmente de la más aguda y de la más grave.

Por otro lado, las inversiones permiten economía de movimientos, algo que saben muy bien los pianistas, que hacen uso intensivo de ellas. De este modo, las manos pueden encontrar el acorde destino buscando la inversión que esté más próxima al acorde de origen, no sólo minimizando así el salto necesario, sino facilitando una transición armónica más suave, tratando de mantener, en la medida de lo posible, las notas en común y persiguiendo el mínimo movimiento entre voces, uno de los principios de la continuidad armónica.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2015/07/inversion-de-acordes/


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Índice de todos los artículos de armonía.


Índice de lectura recomendado de la categoría Armonía.

Safe Creative #1507284743306

Comparando objetos en Python

Objetivo: aprender a implementar los operadores de comparación en nuestras clases.

En el artículo anterior mostramos los cimientos de la sobrecarga de operadores en Python. Aprendimos a dar significado a la suma de objetos redefiniendo un método mágico, __add__ (dos símbolos de subrayado al comienzo y otros dos al final), en cuyo interior describíamos el funcionamiento del «+».

Hay, desde luego, más operadores que podemos sobrecargar y hoy nos ocuparemos de un conjunto específico de ellos: los de comparación.

¿Cuándo decimos que un objeto es mayor que otro? La respuesta, como programador, la tienes tú y sólo tú.

Imagina que defines una clase Persona entre cuyos atributos se encuentran su nombre, edad, altura y peso. Si pedro y luis (permíteme las minúsculas) son dos instancias de esa clase, ¿cuándo decimos que pedro es mayor que luis?

pedro > luis

Parece natural responder a esta comparación atendiendo a la edad de cada uno, pero no necesariamente tendría que ser así. Quizás prefieras basarte en su tamaño y optar por parámetros como la altura o el peso.

Comencemos creando una sencilla clase Persona:

class Persona():

    def __init__(self, nombre, edad, altura, peso):
        self.nombre = nombre
        self.edad = edad
        self.altura = altura
        self.peso = peso

Es preferible que la clase la crees en un fichero aparte, pues la tendremos que editar a menudo. Agrega también la creación de algunas instancias de la clase, así no habrá que volver a introducirlas cada vez que modifiquemos el código:

pedro = Persona("Pedro", 62, 1.65, 71)
luis = Persona("Luis", 40, 1.80, 82)
carmen = Persona("Carmen", 62, 1.70, 60)

Ejecuta el código completo para seguir a continuación desde el modo interactivo.

Obviamente, la comparación directa aún no tiene sentido:

>>> pedro > luis
Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    pedro > luis
TypeError: unorderable types: Persona() > Persona()

Python sabe cómo ordenar valores numéricos, o incluso cadenas de caracteres u otras secuencias, pero no tiene ni idea de cómo apañárselas ante objetos de otra índole.

Efectuamos la comparación accediendo a los atributos de cada instancia:

>>> pedro.edad > luis.edad
True
>>> pedro.peso > luis.peso
False

Para que pedro > luis tenga sentido necesitamos ampliar la clase Persona definiendo un nuevo método mágico, __gt__, en el que incluiremos la funcionalidad deseada. Las letras gt se corresponden a greater than, «mayor que», en inglés.

Si queremos que «mayor que» signifique «de más edad que», la clase Persona habría de redefinirse del siguiente modo:

class Persona():

    def __init__(self, nombre, edad, altura, peso):
        self.nombre = nombre
        self.edad = edad
        self.altura = altura
        self.peso = peso

    def __gt__(self, persona):
        return self.edad > persona.edad 

Con esta nueva definición, la comparación directa ya es posible:

>>> pedro > luis
True

La clave de todo esto es entender que

pedro > luis

es equivalente a

pedro.__gt__(luis)

Es decir, el método __gt__ se aplica sobre el objeto a la izquierda del símbolo >, tomando como argumento el objeto de la derecha, tal como ya explicamos al sobrecargar la suma.

El código es bien simple:

    def __gt__(self, persona):
        return self.edad > persona.edad 

self es el objeto sobre el que actúa el método (pedro) y persona el que se facilita como argumento (luis). La función simplemente compara ambas edades, devolviendo el resultado de la comparación.

Habiendo definido ya un operador de comparación, nuestra clase quedaría un tanto coja si no implementáramos los restantes: <, >=, <=, == y !=.

He aquí los métodos mágicos asociados a cada operador de comparación:

>     __gt__
<     __lt__
>=    __ge__
<=    __le__
==    __eq__
!=    __ne__

De modo que esta sería la implementación completa de la comparación en la clase:

class Persona():

    def __init__(self, nombre, edad, altura, peso):
        self.nombre = nombre
        self.edad = edad
        self.altura = altura
        self.peso = peso

    def __gt__(self, persona):
        return self.edad > persona.edad

    def __lt__(self, persona):
        return self.edad < persona.edad

    def __ge__(self, persona):
        return self.edad >= persona.edad

    def __le__(self, persona):
        return self.edad <= persona.edad

    def __eq__(self, persona):
        return self.edad == persona.edad

    def __ne__(self, persona):
        return self.edad != persona.edad

Ejecuta el código completo de nuevo (incluyendo la creacion de las tres instancias) para poner en práctica la totalidad de las comparaciones:

>>> luis > carmen
False
>>> pedro < carmen
False
>>> carmen >= pedro
True
>>> luis <= carmen
True
>>> carmen == pedro
True
>>> carmen != luis
True

Python dispone de un truco que evita tener que sobrecargar los seis operadores. Dado que a > b también equivale, leído de derecha izquierda, a b < a, Python es suficientemente inteligente para interpretar que, si no incluyes una declaración específica del método __lt__, el <, «menor que», no es más que un __gt__ intercambiando los argumentos. Se dice que los operadores > y < actúan «en espejo». Lo mismo sucede con los pares >= y <=, así como con == y !=.

De modo que, tan sólo definiendo tres métodos, uno por cada par de operadores «espejo», podríamos obtener la misma funcionalidad:

class Persona():

    def __init__(self, nombre, edad, altura, peso):
        self.nombre = nombre
        self.edad = edad
        self.altura = altura
        self.peso = peso

    def __gt__(self, persona):
        return self.edad > persona.edad

    def __ge__(self, persona):
        return self.edad >= persona.edad

    def __eq__(self, persona):
        return self.edad == persona.edad

Los operadores binarios (con dos operandos) no son los únicos susceptibles de ser sobrecargados en Python. Los unarios (como el signo negativo) o los extendidos (como el +=) también pueden servirnos para realizar curiosos trucos de magia. Pero esos los dejaremos para otro artículo…

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2015/06/comparando-objetos-en-python/


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Consulta el índice completo de artículos relacionados con Python.

Safe Creative #1506254454136

La Notación Estructural de Voces

Objetivo: presentar la Notación Estructural para indicar la disposición de las voces de un acorde.

Hasta el momento sólo hemos considerado los acordes en su dimensión abstracta, indicando los distintos grados que aparecen en su constitución. Así, por ejemplo, asociamos la fórmula 1 – b3 – 5 a la tríada menor, o 1 – 3 – 5 – b7 – #9 al acorde de séptima con novena aumentada. En la Tabla de Referencia de Construcción de Acordes recopilamos las principales fórmulas.

Pero una cosa muy distinta es esta representación abstracta y otra la materialización concreta que el músico elige a la hora de ejecutar el acorde. Un pianista, eventualmente, podría hacer participar sus diez dedos; un guitarrista, aunque sólo puede utilizar en la práctica una mano, cuenta con seis cuerdas, algunas de las cuales pueden sonar al aire. Imagina la variedad de posibilidades creativas de que disponen ambos a la hora de ordenar o repetir las notas que constituyen un acorde.

Es muy importante comprender que el matiz sonoro de cada acorde está condicionado por el modo en que se ordenan y repiten las notas. A esa ordenación particular de notas de un acorde la denominamos disposición. En inglés, se recurre a menudo al término voicing para indicar este concepto. A los grados individuales que aparecen en cada disposición se los conoce como voces. Es habitual referirnos como primera voz a la nota más aguda de la disposición, segunda voz a la siguiente y así sucesivamente.

A medida que aprendemos acordes vamos enriqueciendo nuestro repertorio de opciones. En un principio podemos limitarnos a unas pocas por cada especie, lo justo para salir del paso en buen número de situaciones prácticas.

Pero hay un punto en nuestro camino a partir del cual ya no nos basta, a la hora de elegir un acorde, con cualquier disposición. Es como un pintor que necesita, por ejemplo, un color verde. No quiere cualquier verde, sino que busca un tono muy concreto. Cada disposición de un acorde proporciona un matiz específico que debemos saber apreciar y utilizar como recurso expresivo. Pero para ello necesitamos educar nuestros oídos en este sentido, precisando una nueva manera de estudiar acordes.

En próximos artículos hablaremos de temas como las inversiones o los drops, que no son sino maneras particulares de disponer los acordes. Presentaremos también un modo sistemático de aprendizaje de acordes que nos permitirá desarrollar nuestra capacidad de percibir los matices de cada disposición.

Pero antes quiero introducir un sistema de notación al que recurriré, desde este momento, cada vez que necesite ilustrar una disposición particular de un tipo de acorde, diferenciándola así de su representación abstracta. Es lo que denomino la Notación Estructural de Voces.

Para indicar una disposición concreta de un acorde, rodeo entre corchetes los distintos grados que aparecen en su constitución, ordenados partiendo de la voz más grave y terminando en la más aguda.

Comencemos por un ejemplo sencillo, la tríada mayor, de fórmula 1 – 3 – 5.

La primera disposición que todo el mundo debería aprender es la más básica: sin repetición de grados y en posición cerrada (lo más compacta posible).

La notación estructural de esta disposición para este tipo de acorde es, entonces:

[1, 3, 5]

Para ejecutar este acorde, el pianista sólo requiere tres dedos. Un guitarrista empleará sólo tres cuerdas de la guitarra, cuidando de no hacer sonar ninguna más.

Sin necesidad de repetir notas, existen más disposiciones interesantes para este mismo acorde:

[3, 5, 1] La primera inversión.

[5, 1, 3] La segunda inversión.

Aprecia el carácter sonoro diferente de cada una de estas posibilidades.

Un pianista puede utilizar su mano izquierda y, por ejemplo, agregar dos fundamentales más en esta nueva disposición:

[1, 1, 1, 3, 5] (las dos primeras notas con la mano izquierda y las tres restantes con la derecha)

Un guitarrista que forme el acorde con cejilla y fundamental en la sexta cuerda estará empleando esta otra disposición:

[1, 5, 1, 3, 5, 1] triplicando las fundamentales y duplicando la quinta.

Otro ejemplo: el acorde de séptima mayor, 1 – 3 – 5 – 7, puede disponerse del siguiente modo tan característico:

[1, 7, 3, 5], conocido comúnmente como Drop 3 en posición fundamental.

El sistema de notación estructural debe permitir identificar la octava, relativa a la voz más grave de la disposición, en que se hallan las restantes.

Para ilustrar esto, volvamos al ejemplo del acorde mayor en el piano con ambas manos:
[1, 1, 1, 3, 5]

Supongamos que deseamos hacer un Do mayor (notas Do – Mi – Sol) empleando esta disposición y queremos partir, como nota más grave, de la nota C2 (Do2). Esa nota definiría el primer 1 entre los corchetes y el acorde completo sería, entonces, este:

C2 – C3 – C4 – E4 – G4

En efecto, si C2 es el primer 1, el siguiente 1 más alto es el C3, el siguiente el C4. A continuación, el 3 que le sigue es el E4 y el 5 el G5.

Pero imaginemos que deseamos saltar el C3, abriendo más distancia entre la fundamental grave y la tríada que dibuja la mano derecha.

La nueva disposición NO podría indicarse así [1, 1, 3, 5] porque, de hacerlo, correspondería a las notas C2 – C3 – E3 – G3, que no reflejaría la octava intermedia que nos hemos saltado.

Para indicar que el segundo uno no es el esperado en el orden natural, sino una octava más adelante, utilizamos una prima sobre él:

[1, 1′, 3, 5]

De este modo indicamos que, tras el primer Do, C2, la siguiente nota no será C3, sino C4, una octava más alta.

En el supuesto de que necesitemos representar un doble salto de octava recurriremos a la doble prima. Por ejemplo:

[1, 3», 5, 1]

Esta disposición significa que, una vez elegida la nota fundamental de la izquierda, la siguiente tercera no será la que viene a continuación en altura, ni la siguiente, sino otra más allá.

Un Sol mayor (Sol – Si – Re), empleando esta disposición, eligiendo como nota más grave G2, estaría constituido del siguiente modo:

G2 – B4 – D5 – G5

Observa que nos hemos saltado tanto B2 como B3.

La notación estructural representa todos los grados en el ámbito de la octava, numerándolos del 1 a 7. Para referirnos a intervalos compuestos, que superan, esa amplitud, los reduciremos a la octava (substrayendo 7).

Por ejemplo, el acorde de séptima con novena aumentada (1 – 3 – 5 – b7 – #9) es ejecutado en la guitarra frecuentemente en esta disposición:

[1, 3, b7, #2] (aprecia la ausencia de la quinta en esta diposición)

La reducción #2 obedece a una consideración puramente práctica. Si te resulta demasiado chocante, puedes recurrir a esta otra representación, desde luego:

[1, 3, b7, #9]

La notación estructural es relativa y no hace mención explícita a la octava sobre la que comenzar a desplegar el acorde. En el caso del piano, basta desplazar las manos manteniendo las mismas posiciones para transponer el acorde a otras octavas. Un guitarrista lo tendrá algo más complicado, pues las formas físicas finales del acorde dependerán de la cuerda a partir de la cual se construyan. Pero, en la medida de lo posible, es importante estudiar cada disposición en las distintas cuerdas sobre las que sea aplicable.

Si necesitamos que la notación estructural referencie absolutamente un acorde, podemos indicar, a la derecha de los corchetes, rodeada entre paréntesis, la octava en la que se sitúa la voz más grave del acorde.

Por ejemplo:

Dm7 [1, 5, b7, b3] (3)

Indicaría que hay que construir un Dm7, empleando esa disposición, partiendo del D3 (el RE a la izquierda del DO central en el piano, o el RE que suena en la quinta cuerda de la guitarra en el quinto traste, o en la cuarta cuerda al aire). Es decir, un Dm7 dispuesto absolutamente del siguiente modo:

D3 – A3 – C4 – F4

La notación estructural de voces no es más que eso, un sistema de notación, pero constituye una herramienta muy simple que facilita el estudio sistemático de los acordes y sus distintas disposiciones, permitiéndonos así enriquecer, con una sutil gama de tonos y matices, nuestra paleta de recursos armónicos.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2015/05/la-notacion-estructural-de-voces/


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Índice de todos los artículos de armonía.


Índice de lectura recomendado de la categoría Armonía.

Safe Creative #1505294198192

Python – Sumando objetos

Objetivo: Introducción a la sobrecarga de operadores en Python.

Consideremos una operación aritmética primordial, la primera con la que nos atrevimos a coquetear, siendo unos críos, una vez aprendimos a utilizar los números para contar los objetos de nuestro mundo alrededor: la suma.

Todos sabemos sumar. Python, por supuesto, también:

>>> 2 + 3
5

Tal vez nunca te hayas parado a pensar que Python no sólo sabe sumar números:

>>> 'caperucita' + 'roja'
'caperucitaroja'

Pues sí, Python también sabe «sumar» cadenas de caracteres: es lo que se denomina concatenación.

Observa, simplemente como nota, que en este último ejemplo la operación suma no cumple la propiedad conmutativa: no es lo mismo sumar ‘caperucita’ + ‘roja’, que ‘roja’ + ‘caperucita’.

Python también sabe que hay cosas que no puede sumar. Si tratamos de engañarle con código como éste, se queja con razón:

>>> 'caperucita' + 5
Traceback (most recent call last):
  File "<pyshell#46>", line 1, in <module>
    'caperucita' + 5
TypeError: Can't convert 'int' object to str implicitly

En efecto, Python no sabe qué hacer cuando le dices que sume un número a una cadena de caracteres. Si lo que pretendíamos era concatenar ambos era preciso convertir previamente el número a string.

La suma también aparece definida para otros tipo de objetos, como por ejemplo las listas:

>>> [1, 2] + [3, 4]
[1, 2, 3, 4]

Sin embargo, Python no admite la suma de conjuntos:

>>> {1, 2} + {3, 4}
Traceback (most recent call last):
  File "<pyshell#48>", line 1, in <module>
    {1, 2} + {3, 4}
TypeError: unsupported operand type(s) for +: 'set' and 'set'

Donde quiero ir a parar es que te fijes que, para un mismo operador, el ‘+’, Python sabe cómo actuar dependiendo del tipo de objetos, los operandos, que coloquemos a la izquierda y a la derecha del operador.

Así pues, si los operandos son números, efectuará una suma aritmética; si son cadenas de caracteres las concatenará y otro tanto de lo mismo si son listas. Además, Python sabe qué «sumas» no están permitidas.

Se podía haber elegido un operador diferente a ‘+’ para la concatenación de strings, pero no sería muy adecuado, pues intuitivamente tiene pleno significado para nosotros el uso del ‘+’ para una concatenación. Sería mucho más incómodo tener que recordar un operador distinto. Y tanto más cuántos más tipos de objetos diferentes quisiéramos sumar.

Llegamos al quid de la cuestión: un mismo operador, pero muchas maneras de comportarse en función del tipo de operandos que empleemos.

A esta exquisita filosofía de diseño se le denomina sobrecarga de operadores, reflejando el hecho de que un mismo operador (en el ejemplo de hoy, la suma), «carga sobre sus espaldas» código para saber cómo responder ante operandos de distinta naturaleza.

La sobrecarga de operadores, unida a la sobrecarga de métodos, tema que abordaremos en otra ocasión, está relacionada con una de las características más refinadas de la POO y uno de sus pilares: el polimorfismo, ser capaz de comportarse de múltiples formas diferentes presentando una misma interfaz común al programador.

¿Podríamos sobrecargar aún más nuestro ya de por sí sobrecargado operador suma? Planteando la cuestión de otro modo: ¿podríamos implementar una suma de objetos pertenecientes a clases creadas por nosotros?

La respuesta es afirmativa y aprenderemos a hacerlo a continuación.

Comencemos por un ejemplo sencillo. Imaginemos que creamos una clase que representa a vectores libres en el plano caracterizados por sus dos componentes x e y. Sería intuitivamente práctico poder definir una operación suma de dos vectores.

Por ejemplo, si tenemos un vector v1 = (1, 1) y otro v2 = (5, -3), queremos definir la suma de vectores de tal modo que v1 + v2 sea el esperado (6, -2).

Esta sería nuestra eventual clase Vector:

class Vector:
    def __init__(self, x, y):
        self.x = x
        self.y = y

No me he complicado mucho y únicamente he incluido el inicializador, que se ocupa de crear las variables miembro x e y referenciando a los valores facilitados durante la creación del objeto.

Para que esta clase sobrecargue el operador ‘+’ y podamos hablar de suma de dos vectores necesitamos incluir en la clase un método especial:__add__. Al igual que __init__, observa que comienza y termina con dos guiones bajos, indicando que es un nombre con un significado especial para Python.

El código que incluyamos en ese método «mágico» especial determinará cómo se comportará la clase ante la operación suma.

Es importante tener muy claro algo antes. La suma objeto1 + objeto2 es equivalente a aplicar el método __add__ sobre objeto1, recibiendo como argumento objeto2. Es decir:

objeto1.__add__(objeto2)

Asegúrate de entender bien esto, pues es todo el misterio que tiene la sobrecarga de operadores: objeto1, el operando de la izquierda del +, debe tener un método __add__ que recibirá como argumento el operando de la derecha, objeto2. Esto se manifestará crucial en el ejemplo que pondremos un poco más adelante.

La clase Vector modificada sobrecargando la suma queda así:

class Vector:
    def __init__(self, x, y):
        self.x = x
        self.y = y
    def __add__(self, v):
        sumax = self.x + v.x
        sumay = self.y + v.y
        vectorsuma = Vector(sumax, sumay)
        return vectorsuma

Analicemos con cuidado el código del método __add__:

Aparte de self, presente en todos los métodos como primer parámetro, y que referenciará al objeto actual cuando se cree (el de la izquierda del +), observa que toma otro parámetro, que hemos denominado v, que no es otra cosa sino el vector a la derecha del +. En el código de la función distinguirás como, por un lado, nos referimos a las componentes x e y del objeto propio como self.x y self.y, mientras que las del segundo operando, facilitado como argumento, son v.x y v.y.

El código suma las x con las x y las y con las y:

sumax = self.x + v.x
sumay = self.y + v.y

A continuación, invoca al constructor de la clase Vector para crear un nuevo vector, devuelto como vectorsuma, de componentes con el resultado de estas sumas:

vectorsuma = Vector(sumax, sumay)
return vectorsuma

Veamos, ahora sí, la clase al completo y un ejemplo de su utilización:

class Vector:
    def __init__(self, x, y):
        self.x = x
        self.y = y
    def __add__(self, v):
        sumax = self.x + v.x
        sumay = self.y + v.y
        vectorsuma = Vector(sumax, sumay)
        return vectorsuma

>>> v1 = Vector(1, 1)
>>> v2 = Vector (5, -3)
>>> vectorsuma = v1 + v2
>>> vectorsuma.x
6
>>> vectorsuma.y
-2

El ejemplo que figura a continuación ilustra la aplicación de la sobrecarga del operador suma en el caso de objetos de diferentes clases.

Consideremos, por ejemplo, una clase denominada Camiseta que mantiene información sobre el color, talla y tipo de manga de ciertas camisetas deportivas. Por otro lado, la clase Pantalon registra el color y talla de pantalones de deporte.

Podríamos imaginarnos algo así:

camiseta + pantalón = un equipamiento deportivo completo

Es decir, aparecería en escena una tercera clase, Equipo, que tendría como constituyentes un objeto del tipo Camiseta y otro del tipo Pantalon.

Estas son nuestras tres clases:

class Camiseta:
    def __init__(self, color, talla, manga):
        self.color = color
        self.talla = talla
        self.manga = manga

class Pantalon:
       def __init__(self, color, talla):
        self.color = color
        self.talla = talla

class Equipo:
    def __init__(self, camiseta, pantalon):
        self.camiseta = camiseta
        self.pantalon = pantalon

Y ahora la clave. Debemos dotar de sentido a la expresión camiseta + pantalon. Para ello, recuerda lo que dijimos más arriba:

camiseta + pantalon = camiseta.__add__(pantalon)

El objeto de la izquierda del más debe contar con un método especial, __add__ que recibirá como argumento el objeto de la derecha del +.

Por lo tanto, la clase Camiseta, que es la presente a la izquierda del +, precisa definir el método __add__. Veámoslo:

def __add__(self, pantalon):
    return Equipo(self, pantalon)

Simplemente invoca al constructor de la clase Equipo para construir un nuevo objeto con la camiseta (self)y pantalón facilitados.

Veamos las clases al completo junto a un ejemplo de utilización:

class Camiseta:
    def __init__(self, color, talla, manga):
        self.color = color
        self.talla = talla
        self.manga = manga

    def __add__(self, pantalon):
        return Equipo(self, pantalon)

class Pantalon:
       def __init__(self, color, talla):
        self.color = color
        self.talla = talla

class Equipo:
    def __init__(self, camiseta, pantalon):
        self.camiseta = camiseta
        self.pantalon = pantalon

>>> camiseta1 = Camiseta('blanca', 'L', 'corta')
>>> pantalon1 = Pantalon('azul', 'XL')
>>> equipo1 = camiseta1 + pantalon1
>>> equipo1.camiseta.color
'blanca'
>>> equipo1.pantalon.talla
'XL'

Observa la doble notación punto para acceder a los miembros de un objeto que están, a su vez, dentro de otro objeto.

Fíjate muy bien que sólo hemos definido el método __add__ en la clase Camiseta. Por lo tanto, si invirtiéramos el orden de los sumandos, la aplicación no funcionaría. En efecto:

>>> equipo2 = pantalon1 + camiseta1
Traceback (most recent call last):
  File "<pyshell#31>", line 1, in <module>
    equipo2 = pantalon1 + camiseta1
TypeError: unsupported operand type(s) for +: 'Pantalon' and 'Camiseta'

Esto es así porque pantalon1 + camiseta1 es equivalente a:

pantalon1.__add__(camiseta1)

Y la clase Pantalon no tiene definido ningún método __add__.

Si, además de sumar camisetas más pantalones, deseas sumar pantalones más camisetas, necesitas definir también un método __add__en la clase Pantalon (te lo dejo como ejercicio). No presupongas nunca que se cumple la propiedad conmutativa salvo que expresamente la definas.

Existen muchos más operadores que se pueden sobrecargar, pero la mecánica es similar a la aplicada aquí, salvo con otros métodos «mágicos» diferentes. Los veremos en otros artículos. Pero mi consejo es que no esperes y los busques por ti mismo, no te será difícil encontrarlos. Si has entendido bien este artículo no deberá suponerte el mínimo esfuerzo comprender su funcionamiento.

Javier Montero Gabarró


Python – Sumando objetos


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Consulta el índice completo de artículos relacionados con Python.

Safe Creative #1505044013911

La matriz polifacética

Objetivo: modelo visual para la gestión de intereses en un contexto polifacético.

Hemos hablado, en otras ocasiones, de diferentes tipos de polifacetismo. Por un lado está el exclusivo, aquel en el que el foco de atención se centra en una única actividad durante períodos temporales relativamente largos. Tal vez desees dedicar cincuenta años al estudio de la física y matemáticas, otros cincuenta a la antropología, cincuenta más al sano ejercicio de escribir y otros tantos para perfeccionarte tocando el piano.

Puede que haya exagerado un poco, pero quien dice cincuenta dice cinco años…, o cinco meses.

Estas personas, a simple vista, no aparentan ser polifacéticas. Sólo contemplando con perspectiva su trayectoria vital descubres su diversidad de intereses.

Y luego está aquel tipo de polifacetismo que se asemeja a un nido de polluelos hambrientos, siempre insaciables. Sólo tienes un pico para ir alimentándolos de uno en uno. Es importante cuidar de que ninguno se quede sin su ración diaria de comida.

Foto: Alan Vernon; CC 2.0 BY-NC-SA
Foto: Alan Vernon; Licencia Creative Commons 2.0 BY-NC-SA

Quédate bien con esta imagen, pues es muy representativa del día a día de un polifacético.

Para llevar un control de cuando fue la última vez que alimentamos a cada uno de nuestros pichones podemos recurrir a un modelo que denomino la matriz polifacética.

En una hoja de cálculo indicamos, en cada fila, las diferentes áreas de interés. Tantas como facetas deseemos alimentar. En las columnas de la tabla aparecen numerados los distintos días del mes actual.

La matriz polifacética

La relación será tan simple o compleja como desees. Puede ser muy detallada (en la mía figura un centenar) o limitada a cuatro o cinco categorías generales. Adáptala completamente a tus necesidades.

La operativa es muy sencilla: marca una X en la celda adecuada si ese día en concreto le has dedicado tiempo suficiente a esa actividad. Decide tú qué significa «tiempo suficiente», pero probablemente sea algo que quieras diferenciar según el tipo de actividad. Por ejemplo, si tocas la guitarra y un día te limitas a recorrer escalas durante uno o dos minutos, tal vez no sea honesto acreditarte un trabajo suficiente para ganarte la X. Quizá una sentada de veinte minutos, al menos, con plena concentración, pueda suponer ya un tiempo relevante. Establece uno a uno tus propios criterios.

Hubo un tiempo en el que, en lugar de marcar así cada casilla, utilizaba un código de tres colores de fondo en función de la intensidad dedicada a la actividad (baja, moderada o alta). Finalmente lo desestimé, pues sobrecargaba innecesariamente el sistema.

Observa, en el gráfico, que hay actividades que aparecen jerarquizadas en distintos niveles. Por ejemplo, en la categoría CIENCIAS aparece otra de segundo nivel, FÍSICA, de la que a su vez cuelga, en un tercer nivel, PROBLEMAS. Por lo general, distingo el tiempo que dedico a estudiar y a leer textos de física del que empleo para la resolución práctica de problemas.

Si señalas con una X una actividad, asegúrate de marcar también todas las actividades padre de que dependa. En el ejemplo anterior, si resuelvo PROBLEMAS de física, marco también las categorías FÍSICA y CIENCIAS. De este modo, puede que un día trabaje en física y otro lo dedique a las matemáticas. Las dos marcas presentes en CIENCIAS me indicarán que, si bien no he atendido a cada subcategoría individual esos días, al menos si he dedicado tiempo a una actividad científica. De hecho, no pretendo todos los días estudiar física, pero sí que intento, en la medida de lo posible, que no pase un día sin mi dosis suficiente de contacto con la ciencia.

Puedes incluir también, en tu relación de actividades, hábitos que quieras mantener. Tareas relacionadas con el deporte, la salud, la gestión personal o las relaciones sociales y familiares también pueden encajarse perfectamente en esta matriz. Sé imaginativo.

Tal vez no desees, expresamente, atender diariamente cada actividad y te baste con una o varias ocurrencias semanales. Puede que no tengas tiempo para estudiar y jugar al ajedrez con regularidad, pero quizá puedas darte el capricho, una o dos veces por semana, de sacar tu tablero y analizar, junto a una taza de café, una partida de ajedrez magistral.

El método da cabida también a los días monotemáticos, si te gusta ese modo particular de operar. De un simple vistazo tendrás información que te ayudará a decidir qué modo conviene volver a tratar.

Observa, en la parte inferior, como el documento se organiza en pestañas, una para cada mes, lo que facilita el seguimiento en los días de transición.

Un buen momento para revisar la matriz polifacética es al terminar la jornada, recordando y marcando lo que hemos hecho a lo largo del día y esbozando el que será el plan de trabajo de mañana.

En cuanto tu lista sea medianamente amplia, ten claro que será virtualmente imposible marcar todas las casillas diarias. El objetivo no es ese, no lo olvides. ¡Qué estrés, si fuera así! La bondad del método no es otra sino disponer de un sistema que nos permita, de un modo visual e inmediato, evaluar el grado de equilibrio en nuestra vida de acuerdo a cómo hemos decidido vivirla.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2015/04/la-matriz-polifacetica/


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Índice completo de los artículos de la categoría Productividad.

Los cents, la calderilla tonal

Objetivo: presentar el concepto de cent como unidad para comparar frecuencias.

Para ponernos en situación, comencemos por un breve repaso a las conclusiones que establecimos en en el artículo dedicado a la frecuencia de las notas musicales.

Dividimos cada octava en doce notas, estableciendo una progresión geométrica asociada a la frecuencia de cada una de ellas. A la distancia entre dos notas consecutivas la denominamos semitono.

En términos matemáticos, dada una nota determinada, de frecuencia f, vimos que la frecuencia de cualquier otra, f’, separada una distancia de n semitonos de la primera es:

cents-1

Dedujimos el valor de r basándonos en el hecho de que en cada octava (12 semitonos) se duplica la frecuencia. Esto es:

cents-2

Es importante entender que, en cierto modo, el semitono no es más que una magnitud relativa que nos permite comparar la frecuencia de dos notas desde una visión logarítmica lineal, en la que, como en un piano, dividimos físicamente en 12 partes iguales una octava (imaginando que teclas negras fueran semejantes en forma y disposición a las teclas blancas), pese a que la relación de frecuencias es, en realidad, exponencial.

Naturalmente, es una comparación que sólo es práctica cuando la hacemos sobre notas que se han afinado perfectamente entre sí, pero resulta un tanto grosera si queremos comparar, en general, cualquier par de frecuencias.

Para comparar frecuencias con mayor precisión necesitamos disponer de unidades de medida más pequeñas que el semitono, y es aquí donde entra en juego el concepto de cent.

Imagina que cogemos nuestro teclado y dividimos cada tecla en cien microscópicas teclitas. Al intervalo formado entre dos de esas teclitas consecutivas lo denominamos cent.

Eso es equivalente a decir que si antes, en una octava, encontrábamos 12 teclas, en este nuevo piano de teclitas microscópicas nos aparecen ahora 1200.

¿Y qué ocurre con la frecuencia de cada una de esas «micro» notas? Pues que presenta la misma relación matemática que se observa en las teclas grandes: una progresión geométrica. La frecuencia de una «micro» nota es igual a la de la anterior multiplicada por un factor constante.

Para hallar ese factor multiplicativo, nos apoyamos nuevamente en el hecho de que cada octava duplica la frecuencia. De modo que:

cents-3

Más que entretenernos en calcular cuál sería la frecuencia de cada una de esas micronotas, lo que más nos puede interesar en la práctica es saber cuántos cents hay de diferencia entre dos determinadas frecuencias. Los afinadores electrónicos, por ejemplo, pueden presentarte esta información, indicándote cuantitativamente, además de visualmente, cómo anda de desafinado tu instrumento.

Consideremos dos notas, de frecuencia f y f’, separadas entre sí una distancia de n cents (es decir, entre ambas hay n teclitas de separación en nuestro teclado microscópico).

La progresión geométrica que relaciona ambas frecuencias establece, entonces, que

cents-4

Despejando n llegamos a la fórmula pretendida:

cents-5

Como ejercicio práctico, vamos a calcular qué diferencia hay en cents entre un piano afinado a 440 Hz y otro a 432 Hz. Esa es la frecuencia de la nota LA sobre el Do central.

cents-6

Ten siempre muy presente la imagen visual para entender la magnitud del resultado. Cada 100 cents es el salto de un semitono a otro. En el ejemplo, 32 cents corresponden a 32 teclitas en nuestro teclado microscópico o, aproximadamente, la tercera parte del espacio existente entre dos teclas grandes consecutivas.

Otro ejercicio:

Cuando decidimos optar, en nuestro sistema musical actual, por el temperamento igual tuvimos que sacrificar la consonancia perfecta. Una quinta justa, por ejemplo, ya no obedece a la relación 3:2, sino a la que establece la progresión geométrica de la temperación igual.

¿Cuánto hemos perdido en el reajuste? Dicho de otra forma, ¿cuántos cents de diferencia existen entre la quinta justa pura y la igualmente temperada?

No te será difícil, ahora, realizar los cálculos por tu cuenta…

Javier Montero Gabarró


Los cents, la calderilla tonal


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Índice de todos los artículos de armonía.


Índice de lectura recomendado de la categoría Armonía.

Armonización de la escala menor melódica en las 12 tonalidades

Objetivo: cuadro con la armonización de la escala menor melódica en las doce diferentes tonalidades.

Al igual que hicimos hace unos días con la escala mayor, vamos a presentar un cuadro resumen que muestre la armonización de la escala menor melódica en las 12 tonalidades posibles.

Recordemos, en primer lugar, algunos conceptos y conclusiones importantes que en su día trabajamos:

Escala menor melódica: 1 – 2 – b3 – 4 – 5 – 6 – 7

Armonización de la escala menor melódica en tríadas:
Im – IIm – bIII+ – IV – V – VI° – VII°

Armonización de la escala menor melódica en tétradas:
Im(maj7) – IIm7 – bIII+(maj7) – IV7 – V7 – VIm7(b5) – VIIm7(b5)

Recuerda que, a la hora de nombrar los acordes, elegimos el enarmónico que evite la duplicidad de nombres en las fundamentales de cada sucesión. No te sorprenda encontrar, entonces, notas como Fa bemol (en lugar de Mi) o Si doble bemol (en lugar de La).

Dicho esto, he aquí la tabla para acordes de tres notas:

armoniz-m-melodica-12-1

He elegido como referencia de tonalidad mis doce nombres favoritos, que son los que (al menos en las tonalidades mayores), proporcionan nombres de notas más simples y son de uso más común. En el centro tritonal me gusta dejar tanto F# como Gb, pues tanto monta, monta tanto…

Prosigamos con los de cuatro notas:

armoniz-m-melodica-12-2

Para reducir la representación, he optado por la notación alternativa mM7 para el acorde m(maj7) (menor con séptima mayor) y +M7, en lugar de +(maj7) (séptima mayor con quinta aumentada).

Ten a mano estas tablas, como guía de referencia rápida, tanto si trabajas habitual u ocasionalmente con la escala menor melódica o sus modos, pero asegúrate bien de ser capaz de deducirlas por ti mismo.

Javier Montero Gabarró


Armonización de la escala menor melódica en las 12 tonalidades


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Tabla de referencia de construcción de acordes.


Índice de todos los artículos de armonía.


Índice de lectura recomendado de la categoría Armonía.

Python – Una tortuga de brocha fina

Objetivo: presentar el módulo turtle para la creación de gráficos en Python.

Python no sólo es un lenguaje versátil, potente y elegante. Programar en Python es, desde mi opinión, una labor usualmente más gratificante y divertida que hacerlo con otros lenguajes. El artículo de hoy explora una de sus facetas particularmente lúdica, pero no por ello menos interesante y práctica.

He aprovechado para matar dos pájaros de un tiro: por un lado, tenía previsto que la siguiente entrada del blog estuviera dedicada a Python, a la par que estoy empezando a preparar otras, relacionadas con la música, que expliquen el concepto y utilidades del círculo de quintas. Para ello, requería hacer uso del siguiente gráfico:

circulo-quintas-python

Al final del artículo presentaré el código Python que genera este diagrama.

Vamos a introducirnos en el modo gráfico presentando una sencilla herramienta: una tortuga artista que podemos manejar a nuestra conveniencia y que va dejando rastro allá por donde pisa.

El módulo turtle es, además, un excelente medio para explicar a un niño en qué consiste la programación de ordenadores, pues propone una forma visual y divertida de comprobar las relaciones causa-efecto que suceden a lo largo de un programa.

Para introducir en escena a nuestra tortuguita de brocha fina necesitamos invocar, en primer lugar, al módulo turtle:

>>> import turtle

A continuación le pedimos que se muestre en la pantalla:

>>> turtle.showturtle()

Aparece una nueva ventana gráfica en la que, posicionado en su centro, se muestra un cursor con forma de punta de flecha: la tortuga pintadora.

turtle-1

Ciertamente, este cursor no se asemeja mucho a una tortuga, pero quizás este otro sí:

>>> turtle.shape("turtle")

turtle-2

Graciosa, ¿verdad? A un niño le encantaría.

Si ya has dejado atrás tu lado infantil (qué triste es decir eso), puedes restablecer su aspecto nuevamente, más discreto y menos aparatoso:

>>> turtle.shape("classic")

Lo curioso de esta tortuga es que lleva una brocha encima con la que va dejando rastro allá donde se mueve.

Para ilustrar esto, mostremos, por ejemplo, la función forward(), encargada de desplazar la tortuga hacia adelante el número de píxeles que le indiquemos, en el sentido en que apunta la flecha:

>>> turtle.forward(150)

turtle-3

Observa que hemos desplazado la tortuga 150 píxeles a la derecha (que es hacia donde apunta la flecha). En su camino, ha trazado una recta.

Una función similar, backward(), permite a la tortuga andar hacia atrás, de espaldas.

Podemos modificar la dirección en la que apunta. Las funciones left() y right(), respectivamente, giran la tortuga hacia la izquierda o la derecha el ángulo en grados que indiquemos:

>>> turtle.left(120)
>>> turtle.forward(200)

turtle-4

Hemos combinado un giro de 120 grados con un avance de 200 pixeles, provocando el trazado del segundo tramo.

Los giros de left() y right() son siempre relativos, en relación a la orientación actual. Por ejemplo, giremos otros noventa grados a la izquierda y avancemos 50 pixels en esa dirección:

>>> turtle.left(90)
>>> turtle.forward(75)

turtle-5

También podemos indicar el ángulo que forma la tortuga de una manera absoluta, es decir, no relativa a la posición actual. Para ello disponemos de la función setheading():

>>> turtle.setheading(-180)
>>> turtle.forward(100)

turtle-6

Si lo que queremos es desplazar la tortuga a un punto determinado de la ventana, utilizamos la función goto(), a la que facilitamos las coordenadas en píxeles del destino (horizontal, vertical). Ten en cuenta que el punto (0, 0), ubicado en el centro de la ventana, lugar donde se posiciona inicialmente la tortuga, representa el origen de coordenadas:

>>> turtle.goto(-25, 100)

turtle-7

Observa que la tortuga se ha desplazado directamene al punto especificado. Presta atención a la punta de la flecha: continúa apuntando a donde lo hacía antes del último tramo.

Para regresar al lugar de origen puedes hacer un goto(0, 0) o decirle directamente que se marche a casa:

>>> turtle.home()

turtle-8

La función home(), a diferencia de goto(), restablece además el sentido original con el que comenzó la tortuga su andadura.

Si estamos usando turtle para pintar interactivamente un gráfico, hay dos funciones que te vendrán de maravilla:

turtle.undo() deshace la última maniobra efectuada.

turtle.reset() limpia la ventana y restablece la tortuga a su posición de origen.

Para trazar círculos disponemos del comando circle():

>>> turtle.reset()
>>> turtle.circle(100)

turtle-9

Hemos limpiado previamente la ventana, regresando a las condiciones iniciales.

Pintar círculos tiene su pequeño truco. Es importante comprender dónde se localiza el centro de la circunferencia que dibuja la tortuga. Se halla justo al oeste de donde está mirando, es decir, noventa grados a la izquierda, y a una distancia determinada por el radio que indiquemos en la llamada a la función. En el ejemplo, con la tortuga ubicada en (0,0) y mirando exactamente hacia la derecha, es fácil entender que su centro se halla en el punto (0, 100). En ocasiones, según donde esté ubicada y dependiendo de hacia dónde mire, puede ser necesario algún sencillo cálculo trigonométrico si necesitamos determinar el centro.

La tortuguita no nos sería de mucha utilidad práctica si siempre que se moviera estuviera pintando. Necesitamos un modo de lograr que «levante» la brocha de cuando en cuando para poder desplazarla al lugar que deseemos sin emborronar la pantalla.

Para levantar la brocha de la pantalla disponemos de la función penup(). Una vez ejecutada, los movimientos de la tortuga no dejarán trazos en la ventana. Si queremos volver a pintar, basta con bajarla de nuevo con la función pendown().

Observa en el siguiente ejemplo cómo desplazamos la tortuga 100 píxeles, sin el trazo oportuno, antes de dibujar la segunda circunferencia:

>>> turtle.penup()
>>> turtle.forward(100)
>>> turtle.pendown()
>>> turtle.circle(100)

turtle-10

Podemos insertar también textos en nuestro gráfico. La función write(), a la que pasamos una cadena de caracteres, imprime texto en la posición en la que se halla la tortuga, que no se ve afectada por esta impresión, permaneciendo en el mismo lugar:

>>> turtle.reset()
>>> turtle.left(45)
>>> turtle.forward(100)
>>> turtle.write("La casa de la pradera")

turtle-11

Disponemos ya de los conocimientos necesarios para dibujar el círculo de quintas que presentamos al comienzo del artículo. Ejecuta el siguiente programa Python y observa a la tortuga dicharachera trazarlo con gracilidad:

import turtle as t

radio = 150
quintas = ("C", "G", "D", "A", "E", "B",
           "F#/Gb", "Db", "Ab", "Eb", "Bb", "F")
correccion = (20, 20, 21, 25, 29, 31,
              31, 36, 33, 31, 25, 20)

t.penup()
t.goto(0, -radio) # para que el círculo quede centrado en (0, 0)
t.pendown()
t.circle(radio)
t.penup()
t.goto(0, 0) # regresamos al centro
t.left(90)
t.pendown()

for quinta in range(12):
    t.forward(radio)
    t.penup()
    t.forward(correccion[quinta]) # separamos del círculo el punto de escritura
    t.write(quintas[quinta], font=("Arial", 10, "bold")) # negrita
    t.goto(0, 0)
    t.right(30) # giramos 30 grados (360 dividido entre 12)
    t.pendown()

t.hideturtle() #para que no se vea la tortuga en la imagen final

El primer bloque de código, justo debajo de la declaración de las tuplas, simplemente traza una circunferencia centrada en el origen de coordenadas y deja la tortuga mirando al norte.

El bucle for se ocupa, en cada iteración, de trazar cada radio, escribir la nota correspondiente, regresar al origen y girar 30 grados, dejando la tortuga en la orientación oportuna para el dibujo de otro radio en la siguiente iteración.

Las tupla quintas contiene todas las notas musicales ordenadas por quintas justas, en la secuencia en la que deberán ser pintadas por la tortuga en cada iteración. La tupla correccion no es más que una separación adicional para que el texto de cada nota quede decentemente separado del círculo a una distancia visualmente parecida. Inicialmente partí de 20 píxeles para todas las notas, reajustando a simple vista después una a una para obtener una mejor presentación. Observa también un uso más avanzado de la función write(), indicando, además del texto, las características del tipo de letra (familia, tamaño y aspecto).

Finalmente, escondemos la tortuga para poder realizar una captura de pantalla sin que aparezca incordiando entre medias.

Esta ha sido sólo una pequeña introducción a la tortuga de Python. En otros artículos exploraremos otras funciones que nos permitirán nuevas posibilidades creativas. Que no te confunda su sencillez y aspecto lúdico: puedes dibujar con ella virtualmente cualquier cosa y, con los algoritmos adecuados, puedes realizar gráficos sumamente sofisticados con muy poco código.

Javier Montero Gabarró


Python – Una tortuga de brocha fina


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Consulta el índice completo de artículos relacionados con Python.

El acorde suspendido (sus4) en la guitarra

Objetivo: mostrar cómo construir en la guitarra el acorde suspendido, sus4.

Podemos enfrentarnos de varias formas a la construcción física de acordes. La primera, que no recomiendo a nadie, es la burda memorización de posiciones sin entender su constitución. La segunda, infinitamente más instructiva y práctica, consiste en conocer la estructura armónica de cada acorde y su aplicación en el instrumento, sea éste una guitarra, un piano o cualquier otro capaz de producir armonías.

Porque si sabes construir acordes teóricamente, te será muy fácil su deducción práctica. No sólo serás capaz de configurar cualquier acorde, por compleja que sea su fórmula (dentro de las limitaciones físicas que impongan tus manos y el instrumento, naturalmente), sino que, además, podrás descubrir posiciones diferentes a las típicas, lo que te permitirá ampliar tus recursos expresivos.

Para montar en la guitarra el acorde de hoy, de cuarta suspendida, sus4, o simplemente suspendido hay que comenzar entendiendo que es un acorde suspendido.

Un acorde suspendido es como un acorde mayor en el que la tercera se sustituye por la cuarta. Ya sabes que entre la tercera y la cuarta existe una distancia de un semitono.

Tríada mayor: 1 – 3 – 5
Tríada suspendida (sus4): 1 – 4 – 5

Toma entonces cualquier forma que conozcas de acorde mayor, localiza dónde está la tercera y, simplemente, agrégale un semitono, situándola un traste más abajo (en dirección al puente). No tiene más misterio.

El término «suspendido» hace referencia a la tensión que genera la cuarta pidiendo su resolución, regresando a la tercera, en el acorde mayor. Este es, en efecto, uno de los usos comunes de este tipo de acordes: crear un instante de suspensión, para regresar inmediatamente a la estabilidad del acorde mayor del que deriva.

Vamos a ver aquí unos cuantos ejemplos, pero siéntete libre de experimentar con cualquier posición de acorde mayor que conozcas.

En cada uno de los gráficos que siguen verás dos acordes, el primero mayor y el segundo suspendido. En la parte inferior he indicado la estructura de las voces. Observa el incremento de semitono en la tercera para alcanzar la cuarta suspendida.

Comencemos por algunas formás simples al aire:

sus4-a

sus4-b

sus4-c

Algunas figuras requerirán algo más de dificultad técnica:

sus4-d

Otra variante consiste en prescindir de la cejilla final en Csus4, silenciando la primera cuerda al rozarla con el mismo dedo índice que se apoya sobre la segunda. Después de todo, ya estás obteniendo la nota Fa en la cuarta cuerda.

Gsus4 también tiene un pequeño truco:

sus4-e

En esta ocasión, el dedo que se apoye sobre la sexta cuerda (típicamente el índice o el anular) debe ocuparse de silenciar la quinta, rozándola ligeramente.

Una vez controladas las formas al aire puedes investigar los acordes con cejilla. En estos casos, recuerda siempre tener claro dónde se halla la fundamental para poder trazar el acorde a la altura adecuada del mástil. Por ejemplo:

sus4-f

sus4-g

Permítete también enredar con las tríadas simples (en muchos contextos son la mejor opción). Al igual que con los acordes con cejilla, presta atención a la localización de la fundamental:

sus4-h

sus4-i

Juega también con sus inversiones (es decir, con nota más grave distinta de la fundamental). Por ejemplo:

sus4-j

Tú mismo: experimenta con las formas de acordes mayores que conozcas y trata de deducir los suspendidos correspondientes. Quédate con aquellos que más te gusten.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2014/12/el-acorde-suspendido-sus4-en-la-guitarra/


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Índice de la categoría Guitarra.

Índice de la categoría Armonía.

Armonización de la escala mayor en las 12 tonalidades

Para que sirva de material de referencia cómodo, facilito a continuación unas tablas con los acordes que aparecen al armonizar la escala mayor en cualquier tonalidad, tanto en su versión tríada como tétrada.

Conocer los acordes propios de una tonalidad es algo imprescindible a la hora de componer, arreglar, o simplemente descubrir la armonía subyacente en cualquier canción, pues estos acordes son los que utilizaremos con mayor probabilidad.

La burda memorización es ridícula. Estos acordes sólo terminan de aprenderse mediante su uso repetido al estudiar una tonalidad determinada: no hay mejor forma de conocer los acordes propios de La mayor que tocando piezas en La mayor. Pero eso no excluye tu deber de aprender su deducción. Debes ser capaz de construir estas tablas por ti mismo y en este blog tienes todas las claves para poder hacerlo. Si aún no posees esa habilidad, no lo dejes por más tiempo y ponte manos a la obra cuanto antes, pues son conocimientos imprescindibles para cualquier músico que se tome la armonía en serio.

He simplificado las tablas eligiendo sólo los enarmónicos principales. Esto es, indico la tonalidad de Re bemol, pero no la de Do sostenido, su enarmónico equivalente, pues a efectos prácticos tienen la misma construcción física en el instrumento. El criterio seguido, en estos casos, ha sido optar por la tonalidad de escritura más simple, evitando dobles sostenidos o notas como Si sostenido (enarmónico de Do). En el caso de los enarmónicos Fa sostenido / Sol bemol, he preferido dejar ambas para matizar el hecho de que las dos gozan de la misma importancia «estética» y en ninguna de ellas ha sido posible evitar un nombre de nota feo (E# en la primera y Cb en la segunda).

Estas tablas también pueden ser prácticas para determinar los acordes propios de las tonalidades menores si eres capaz de deducir cuál es la tonalidad relativa mayor correspondiente. No obstante, ten en cuenta que las tonalidades menores son más propensas, por lo general, a la aparición de otros acordes ajenos a la propia escala menor natural. Sin ir más lejos, piensa por ejemplo que existen otras escalas menores de uso habitual, como la armónica y la melódica, y cada una de ellas presenta su propia armonización.

Sin más demora, he aquí las tablas. Comencemos por los acordes de tres notas, las tríadas:

armo1

Las tétradas, acordes de cuatro notas:

armo2

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2014/11/armonizacion-de-la-escala-mayor-en-las-12-tonalidades/


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Tabla de referencia de construcción de acordes.


Índice de todos los artículos de armonía.


Índice de lectura recomendado de la categoría Armonía.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies